30

在 GNU 屏幕中,我想将默认命令绑定更改为 Alt-s(通过调整 .screenrc)而不是默认 Ca,原因是我使用 emacs,因此 GNU 屏幕绑定了 Ca 键,将“Ca”发送到 emacs 变为乏味(正如@Nils所说,要发送“Ca”我应该输入“Ca a”),以及bash shell中的“Ca”,我可以将转义更改为C-但其中一些已经映射到emacs和其他组合不如 ALT-s 容易。如果有人已经完成了 ALT 键映射,请告诉我。

4

7 回答 7

10

从我的阅读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绑定来代替。不过那会有点骇人听闻。

于 2009-10-09T12:31:31.613 回答
10

可以使用寄存器: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

于 2011-08-31T01:14:42.063 回答
9

我也是 Emacs 和 screen 用户。尽管我很少在终端中使用 Emacs——同样在屏幕会话中——我也不想放弃 Ca 用于 shell(它使用 Emacs 键绑定)。我的解决方案是使用 Cj 作为 screen 的前缀键,我愿意牺牲它。在 Emacs 编程模式中,它绑定到 (newline-and-indent),我也绑定到 RET,所以我真的不会错过它。

顺便说一句:我知道这是一个建议而不是一个答案,但我觉得这仍然很有价值,可以发布。

于 2009-10-15T08:30:10.100 回答
8

要将Alt+X作为命令的默认前缀并释放 Ca,请将以下行添加到 .screenrc:

escape ^||
bindkey "^[x" command

作为副作用 C-| 也将是命令前缀。如果你也需要这个键是免费的,那么修复“escape ^||” 因此。

于 2012-08-31T14:47:35.807 回答
7

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。

于 2009-10-10T18:35:13.680 回答
0

在这里的 emacs 用户。

我找到的最佳解决方案是一个 ~/.screenrc 文件,其中包含以下内容:

# C-a :source .screenrc

escape ^gg

在这里实时更新:https ://gist.github.com/1058111

另见:http ://ubuntuforums.org/showthread.php?t=498675

于 2011-07-01T08:49:00.833 回答
0

我多年来一直拥有的东西.screenrc

escape ^Zz

对我来说,它现在已经被固定在肌肉记忆中了。

不知何故,我最终不得不与其他人的配置共享一个屏幕,现在我一直在停止进程(bash ^Z)......不好笑......

于 2020-09-27T21:03:45.407 回答