如何为GNU屏幕搜索合适的“命令字符”?

如何为GNU屏幕搜索合适的“命令字符”?

我很难为 GNU 屏幕找到一个不会与我已经使用的某些组合键发生冲突的“命令字符”。

通过 Emacs(以及 org-mode,以及我的常规 shell 等),几乎所有由Ctrl+组成的命令字符[A-Z] 是禁区

我想,如果有一个简单的并且一致,方法是键入 ASCII 范围 27 到 31 中的任何一个字符,这可能会起作用。

我可以使用任何工具来找到一种方法来键入符合上述标准的这些字符之一吗?

(顺便说一句,“一致”是指它可以在“所有键盘”中以相同的方式输入,或者至少在“所有美国键盘”中。)

答案1

您可以使用 Screen 识别为转义字符的任何功能键。设置转义字符(更准确地说,转义字符字节) 到您从未键入的一个,例如\377UTF-8 从未使用过的一个。command例如,将要用作转义键的键绑定到F12F2在 termcap talk 中 - 请参阅 Screen 手册中的“输入翻译”部分):

escape \377\377
bindkey -k F2 command

您不仅限于 Screen 知道其符号名称的键。要将任意键或键和弦设置为命令键(该键确实需要在终端中发送转义序列),请通过在 shell 提示符下按Ctrl+然后按该键来找出它发送的转义序列。V这会导致转义序列按字面意思插入,而不是被 shell 识别为转义序列。例如,如果您想使用F12,您可以按Ctrl+V然后F12,这会插入^[[24~(第一个^[代表转义字符)(某些终端可能会发送不同的转义序列);那么你会使用

bindkey ^[[24~ command

我使用Ctrl+\作为屏幕转义键 ( escape ^\\\),并让Ctrl+\ \注入一个^\字符。很少有程序使用^\控制字符。在 Emacs 中,它调用toggle-input-method,但我不使用它;你的旅费可能会改变。在熟终端中,它发送 SIGQUIT,这很少有用(当需要时,Ctrl+Z后跟kill命令通常也有效;我默认禁用核心转储)。Ctrl+在某些需要的\键盘布局上键入可能会很困难,但在美国布局上则很简单。我还配置了终端模拟器,使其在按+时发送字符,这样我也可以用左手输入字符。\AltGr^\Ctrl`

Ctrl+ ](Emacs:)abort-recursive-editCtrl+ ^(Emacs:未定义;但在美国键盘以及许多其他布局上键入很尴尬)是 Emacs 用户的其他可能的候选者。


顺便说一句,如果您只使用 Screen 来运行 Emacs 和一些 shell,则不需要 Screen。 Emacs 可以起到同样的作用。保持单个 Emacs 进程运行,并用于emacsclient从任何终端打开此 Emacs 进程的窗口。如果终端消失,您可以emacsclient再次运行以连接到同一个 Emacs 实例。您可以将emacsclient任意多个实例连接到同一个 Emacs 实例,并可能通过不同的本地和远程连接进行显示。

要在没有界面的情况下启动 Emacs,请运行emacs --daemon。然后运行emacsclient -c以打开现有 Emacs 实例的窗口(或emacsclient -c -nw强制打开文本模式窗口)。如果您想启动 Emacs(如果尚未启动)但连接到现有的 Emacs 实例(如果有),请运行emacsclient -a '' -c

如果你想运行 shell,你可以在 Emacs 中使用M-x shellM-x term等。 Emacs 几乎可以完成 Screen 能做的所有事情。

答案2

我使用 Meta-a 作为屏幕,因为所有控制字符都已被我的应用程序使用。为此,我将 xterms 置于 8 位模式(禁用 UTF-8 编码,LANG=C),然后将

escape "<E1>a"

在 my 中~/.screenrc,其中<E1>字节十六进制 0xe1 (即,小写,高位设置用于转义,以及发送元 a 的a普通)。a

如果您关心 xterm 中的 UTF-8,这不太好,但如果您接受纯 8 位,则可以正常工作。

答案3

我个人使用 Ctrl-J 来显示 GNU 屏幕有两个原因:

  • 它通常与返回键绑定,所以不太常用,
  • 如果您是盲打打字员,您的手指通常位于此处。

    逃脱^Jj

相关内容