gnu screen - 将默认转义命令键更改为ALT-X?

时间:2009-10-09 12:14:46

标签: emacs gnu gnu-screen screenrc

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

8 个答案:

答案 0 :(得分:9)

从我对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绑定。但这有点像黑客。

答案 1 :(得分:8)

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

答案 2 :(得分:8)

要使 Alt + X 成为命令和免费C-a的默认前缀,请将以下行添加到.screenrc:

escape ^||
bindkey "^[x" command

副作用C- |也将是命令前缀。如果您也需要此密钥,请修复“escape ^ ||”相应

答案 3 :(得分:7)

我也是Emacs和屏幕用户。虽然我很少在终端中使用Emacs - 因此在屏幕会话中 - 我也不想放弃shell的C-a(它使用Emacs键绑定)。我的解决方案是使用C-j作为屏幕的前缀键,我愿意牺牲。在Emacs编程模式中,它绑定到(newline-and-indent),我也绑定到RET,所以我真的不要错过它。

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

答案 4 :(得分:6)

屏幕没有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命令(它直接插入你输入的内容而不试图解释它),而M-x是一个文字的Alt-X。

答案 5 :(得分:1)

不回答你的问题,但C-a a确实向窗口发送了C-a,不是吗?

答案 6 :(得分:0)

此处有emacs用户。

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

# C-a :source .screenrc

escape ^gg

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

另请参阅:http://ubuntuforums.org/showthread.php?t=498675

答案 7 :(得分:0)

我在.screenrc中经历了多年的事情:

escape ^Zz

现在对我来说,它在肌肉记忆中是硬连接的。

以某种方式,我最终不得不与其他人的配置共享一个屏幕,现在我一直一直在停止进程(bash ^Z)……不好笑...