我正在Ubuntu 20.04.1下使用urxvt版本9.22。
即使我在urxvt命令行中使用了-title MYTITLE
,并且设置了以下X资源...
URxvt.insecure: false
... 如果在urxvt中运行的任何命令发送了适当的标题更改转义序列,标题栏中的标题仍然会被覆盖。
在urxvt中是否有办法指定命令行上指定的-title
永远不会通过任何转义序列被覆盖?
提前感谢您的任何想法和建议。
我正在Ubuntu 20.04.1下使用urxvt版本9.22。
即使我在urxvt命令行中使用了-title MYTITLE
,并且设置了以下X资源...
URxvt.insecure: false
... 如果在urxvt中运行的任何命令发送了适当的标题更改转义序列,标题栏中的标题仍然会被覆盖。
在urxvt中是否有办法指定命令行上指定的-title
永远不会通过任何转义序列被覆盖?
提前感谢您的任何想法和建议。
在 bash 中,我按ctrl+v开始逐字插入。在逐字模式下,我按下Esc键并 bash 显示^[
. 我将它重定向到 file esc
。
同样在逐字模式下,我ctrl用[key 按键,bash 显示^[
. 我将它重定向到 file ctrl
。
接下来,我比较两个文件,它们是一样的!
$ echo '^[' > esc
$ echo '^[' > ctrl
$ diff esc ctrl
$
为什么Ctrl+[和Esc产生相同的内容?
^[
这里是C0 和 C1 控制代码吗?如果是这样,维基文章说^[
是 Escape,那么为什么ctrl+[也是 Escape?
根本问题是我想检查并创建一个键绑定。
(zsh)$ bindkey -L
...
bindkey "^['" quote-line
...
所以我需要输入ESC+'
orctrl+[+'
吗?
在wiki上,我找到了以下 SGR(选择图形再现)功能的亮色代码
FG BG
90 100 Bright Black
91 101 Bright Red
92 102 Bright Green
93 103 Bright Yellow
94 104 Bright Blue
95 105 Bright Magenta
96 106 Bright Cyan
97 107 Bright White
在 wiki 上,据说“后来的终端增加了直接用 90-97 和 100-107 指定“明亮”颜色的能力。” 但是,我在 ECMA-48/5th 中找不到这些代码。只有从 0 到 65 的参数值。任何人都可以在 wiki 上解释这些代码以及如何根据 ISO/IEC 6429:1992 使颜色变亮吗?
我正在学习 ECMA-48,我看到很多关于控制功能的 7 位和 8 位环境的注释。例如:
注意 LS0 仅用于 8 位环境;在 7 位环境中使用 SHIFT-IN (SI)。
谁能解释它们之间的区别,并在使用它们时给出真实的例子。
是否可以获取对话框命令,例如:
dialog --title "HELLO" --yesno "Are you sure?" 6 30
放入包含所有 ANSI 转义码的文件中,以便稍后打印?
您可以将对话框重定向到文件中以获取输出,但您无法与页面交互,因此可能很难退出。
例如,我通过 unix 中的配置文件接收查询。配置文件内容将采用以下格式:
Table_name|query
ABC|select ABC.A,ABC.B from PQR left join (select * from ABC) on ABC.pk=PQR.pk
我正在尝试如下处理查询部分:
while read line in config_file
do
query=`echo $line|awk -F "|" '{print $1}'`
result=hive -e "$query"
...
但是,查询变量中的“*”正在扩展到当前目录中的文件列表
能否请您帮助如何逃脱*
角色,我搜索了解决方案但找不到。
通过在命令行中附加 -xrm 参数,可以将资源传递给 X 应用程序。所以,如果我想让 Xmessage 背景为灰色,我可以发出xmessage Hi -xrm "xmessage*background: grey"
.
如果我想修改事件翻译,事情就会变得棘手。在我.Xresouces
的这个
Xmessage*Translations:#override\
<Key>F10:exit(-1) \n\
<Key>q:exit(-1)
成功设置F10和q键以退出任何 Xmessage 窗口,但我在命令行中使用 -xrm 时遇到了麻烦,这肯定是因为换行符和转义反斜杠。
我已经尝试了以下三个命令,但没有成功。
xmessage Hi -xrm "xmessage*Translations:#override <Key>s:exit(4)
<Key>r:exit(3)
<Key>p:exit(2)"
xmessage Hi -xrm "xmessage*Translations:#override\
<Key>s:exit(4)\n\
<Key>r:exit(3)\n\
<Key>p:exit(2)"
xmessage Hi -xrm "xmessage*Translations:#override <Key>s:exit(4)" \
-xrm "xmessage*Translations:#override <Key>r:exit(3)" \
-xrm "xmessage*Translations:#override <Key>p:exit(2)"
第三个命令仅成功分配最后一个键。其他人失败了,尽管我希望第一个可以工作,因为它在exit(4)和exit(3)之后插入了一个换行符,正如通过回显命令所确认的那样。
我错过了什么,我该如何纠正?
这仅在 iTerm 中有效(将日期和时间放在剪贴板中):
printf "\e]1337;Copy=:$(date | base64)\a"; echo $(pbpaste)
这适用于本地运行的 tmux(使用 DCS 直通):
printf "\ePtmux;\e\e]1337;Copy=:$(date | base64)\a\e\\"; echo $(pbpaste)
这适用于远程运行的 tmux:
printf "\ePtmux;\e\e]1337;Copy=:$(date | base64)\a\e\\"; echo $(ssh -p 2222 -qt localhost pbpaste)
我唯一的问题是在本地 tmux 下远程运行 tmux:
printf "\ePtmux;\e\ePtmux;\e\e]1337;Copy=:$(date | base64)\a\e\\\e\\"; echo $(ssh -p 2222 -qt localhost pbpaste)
我认为问题是内部\e\\
被解释为外部\e\\
。
是否有某种方法可以逃避内部\e\\
,使其正确地成为外部 tmux?
根据手册页,lesskey
以下键绑定到左滚动和右滚动:
\e[ left-scroll
\e] right-scroll
\e( left-scroll
\e) right-scroll
\kl left-scroll
\kr right-scroll
箭头键和Esc-(
/Esc -)
可以正常工作,就像Esc-]
向右滚动一样,但Esc-[
不能用于向左滚动。相反,它只是在命令行提示符中显示:
ESC[
将此行添加到~/.lesskey
函数中作为解决方法:
\e[ left-scroll
但是为什么默认情况下它不起作用?
我在 Debian stretch 以及 Kubuntu 18.04 以及各种终端仿真器上的 XFCE4 中观察到了这种行为。
$ less --version
less 487 (GNU regular expressions)
Copyright (C) 1984-2016 Mark Nudelman
less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less
我考虑提交错误报告,但已知错误和功能请求列表 表明这是一种已知行为:
增强请求
[ . . . ]
参考号:175
在版本中实现:322
为 ESC-[ 添加备用命令。
这实际上是一个限制less
,还是终端处理 Escape 键的一个怪癖?
我经常使用表达式line=${line//[$'\r\n']}
。但这是什么[$'\r\n']
意思?
我知道它会删除'\r\n'
字符,但它是如何做到的?它是只删除两个字符的实例,还是只找到一个字符的匹配项?
我不明白这种语法的用法。
如果可以的话,请给我一个手册的链接。我找不到这个问题的答案。