在 GNU 屏幕中,我想将默认命令绑定更改为 Alt-s(通过调整 .screenrc)而不是默认 Ca,原因是我使用 emacs,因此 GNU 屏幕绑定了 Ca 键,将“Ca”发送到 emacs 变为乏味(正如@Nils所说,要发送“Ca”我应该输入“Ca a”),以及bash shell中的“Ca”,我可以将转义更改为C-但其中一些已经映射到emacs和其他组合不如 ALT-s 容易。如果有人已经完成了 ALT 键映射,请告诉我。
7 回答
从我的阅读man screen
看来,唯一screen
可以用于命令绑定的元字符是CTRL
:
escape xy
Set the command character to x and the character generating a literal
command character (by triggering the "meta" command) to y (similar to
the -e option). Each argument is either a single character, a two-character
sequence of the form "^x" (meaning "C-x"), a backslash followed by an octal
number (specifying the ASCII code of the character), or a backslash followed
by a second character, such as "\^" or "\\". The default is "^Aa".
如果您在 emacs 中不使用某些映射,即使它不方便,例如C-|
,那么您可以使用终端输入管理器重新映射ALT-X
到该映射,让您使用ALT
绑定来代替。不过那会有点骇人听闻。
可以使用寄存器和:bindkey命令解决:escape命令限制。只需将其放入.screenrc:
# reset escape key to the default
escape ^Aa
# auxiliary register
register S ^A
# Alt + x produces ^A and acts as an escape key
bindkey "^[x" process S
## Alt + space produces ^A and acts as an escape key
# bindkey "^[ " process S
请参阅http://adb.cba.pl/gnu-screen-tips-page-my.html#howto-alt-key-as-escape
我也是 Emacs 和 screen 用户。尽管我很少在终端中使用 Emacs——同样在屏幕会话中——我也不想放弃 Ca 用于 shell(它使用 Emacs 键绑定)。我的解决方案是使用 Cj 作为 screen 的前缀键,我愿意牺牲它。在 Emacs 编程模式中,它绑定到 (newline-and-indent),我也绑定到 RET,所以我真的不会错过它。
顺便说一句:我知道这是一个建议而不是一个答案,但我觉得这仍然很有价值,可以发布。
要将Alt+X作为命令的默认前缀并释放 Ca,请将以下行添加到 .screenrc:
escape ^||
bindkey "^[x" command
作为副作用 C-| 也将是命令前缀。如果你也需要这个键是免费的,那么修复“escape ^||” 因此。
Screen 没有任何用于 alt 绑定的简写语法,但您可以直接给它八进制代码。例如在我的机器上,Alt-x 有十六进制代码 F8,或 370 八进制,所以把
逃脱 \370x
在我的 screenrc 中将转义码更改为 alt-X
在 Linux 上测试并使用屏幕 4.00.03。
您可能必须更改转义,因为我认为这可能取决于您的语言和代码集等:我如何发现我的转义代码是输入
$ echo -n ^QM-x | perl -ne 'printf "%lo\n", ord($_)'
^Q 是 readline 的quoted-insert 命令(它直接插入您键入的内容而不试图解释它),而 Mx 是文字 Alt-X。
在这里的 emacs 用户。
我找到的最佳解决方案是一个 ~/.screenrc 文件,其中包含以下内容:
# C-a :source .screenrc
escape ^gg
在这里实时更新:https ://gist.github.com/1058111
我多年来一直拥有的东西.screenrc
:
escape ^Zz
对我来说,它现在已经被固定在肌肉记忆中了。
不知何故,我最终不得不与其他人的配置共享一个屏幕,现在我一直在停止进程(bash ^Z
)......不好笑......