Bash 与 Gnu 屏幕:将 Ctrl-A 替换为 Ctrl-Shift-A

Ste*_*ski 47 bash gnu-screen readline

我是 GNU Screen 的新用户。我已经使用 Bash 很长时间了,我想尝试一下 GNU Screen。

如您所知,GNU Screen 使用“Ca”(Control-A)作为命令字符。问题是,这会干扰 Bash(和 GNU Readline)中的行编辑功能,因为 Bash 中的 Control-A 将移动到行的开头。”

我知道我可以将命令字符设置为另一个键序列,例如“^Q”或“``”(反引号),但是我无法找到另一个尚未使用的键序列(终端使用了 ^Q , 在编写 shell 脚本时使用反引号)。看起来命令字符的长度可能只有一两个字符。我可以将 GNU Screen 控制字符设置为“Control-Shift-A”之类的吗?

(我还不能使用多个超链接,所以我无法链接到 Bash 文档)

小智 41

不需要解决方法。
要在 bash 中使用 screen 时移到行首,请使用

Control- A(释放然后)A


一般来说,如果屏幕控制字符与 bash 快捷方式冲突,则 bash 快捷方式的第一个Control将替换为Control-A

同样对于其他行编辑快捷方式。


Chr*_*sen 19

这个问题Control- Shift-A是大多数终端仿真程序不从一个派出以发送不同的代码,这Control- A,所以就没有办法屏幕分辨。

如果您stty -ixon在 tty 上禁用“软件流控制”,您也许可以使用 Cq 。我通常这样做,所以我可以使用 Cs 在命令行上进行搜索。

您可能会考虑 C-^,因为它似乎通常是未绑定的。它是Control- Shift-6在美国键盘布局上,但在其他布局上可能难以输入。

大多数人从不使用 tty 控制字符 C-\ 来发送 SIGQUIT。要使用它,请使用 with 禁用 tty 功能stty quit undef并将其绑定为您的前缀键。不过这有点冒险,因为如果您在没有使用stty禁用退出键的 tty 上点击 C-\ ,您可能会终止前台进程而不是激活screen

不久前我切换到tmux。它的默认值是 Cb,因为它是在screen下开发的,并且不会干扰screen的默认值。我发现 Cb 对我来说效果很好(我通常使用箭头键在 shell 命令行上移动单个字符——尽管我使用 Mb 和 Mf 来按单词移动)。

顺便提一下,tmux的作者在他的主要会话中使用 Ca 并且总是键入 Ca 两次(无论是否在tmux会话中)。如果您愿意采用这种习惯,这似乎是一个不错的妥协,因为在大多数类似 Emacs 的编辑上下文中,第二个 Ca 应该是空操作。如果您经常在屏幕之外使用第二个 Ca 不是空操作的程序/上下文,它就不会起作用。

默认情况下,钙Ca的结合到其他命令(切换到最近活动的屏幕)的屏幕。要让 Ca Ca 发送实际的 Ca 并让 Ca o 切换窗口,请将以下内容放入您的.screenrc

escape ^A^A
bind o other
Run Code Online (Sandbox Code Playgroud)

  • 这听起来不错,然后我意识到在 GNU Screen 中,键入 Ca 两次将切换到先前显示的窗口。也许我可以将“Ca Ca”映射到其他东西,尽管我不太确定该怎么做(看起来我需要为此指定“escape xy”或“meta”)请参阅http://www.gnu。 org/software/screen/manual/screen.html#Other-Window (2认同)