Bash vs. Gnu屏幕:用Ctrl-Shift-A替换Ctrl-A


44

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

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

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

(我只能使用一个超链接,因此无法链接到Bash文档)


5
为了screen在其他系统上使用时不会迷失方向,您最好还是坚持使用默认的键盘绑定,或者至少先学习它们。 ^A a默认情况下,将发送通常的^A组合键。如果您经常使用该组合,将带来一些不便;因此,我通常使用HOME密钥代替。但这并不总是可行。
直觉

这里不喜欢Ctrl-space。效果很好。
通配符

Answers:


18

这个问题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

2
听起来不错,然后我意识到在GNU Screen中,两次键入Ca将会切换到先前显示的窗口。也许我可以将“ Ca Ca”映射到其他内容,尽管我不确定如何做到(看起来我需要为此指定“ escape xy”或“ meta”),请参见gnu.org/software/screen/ manual / screen.html#Other-Window
Stefan Lasiewski

1
@Stefan Lasiewski:糟糕,我忘记了默认情况下Ca Ca不会发送Ca。有关使Ca Ca发送Ca以及Ca o切换到上一个窗口的一些配置,请参见答案末尾的附加内容。
克里斯·约翰森

很棒!Ca Ca将发送实际的Ca到下面的外壳,而Ca o'将切换到“其他”窗口。要将“ Ca”发送到Bash,请按两次“ Ca”。这应该是屏幕之外的禁止操作,并且不会引起问题。
Stefan Lasiewski,2010年

41

无需解决方法。
要在使用bash屏幕时移至行首,请使用

Control- A(释放然后)A


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

对于其他行编辑快捷方式也是如此。


谢谢,即使那样容易,我现在也没有这个。确实无需重新配置任何内容。我最喜欢你的答案。
哈拉尔德2011年

+1 ty-到目前为止,这是最好的选择。有趣的是,在尝试此操作时,我偶然碰到了Ca Ca,并发现了另一个很棒的组合。
kfmfe04 2013年

3

我对屏幕使用C- \,但我对它的推荐不够。您可能会偶然碰到任何其他关键定义,但通常不会碰到C- \。那就是我喜欢的。


3

我用这个。screenrc

escape ^bb

示例:要分离,请键入 ctrl-b d


0

我将ctrl-_(也可以由ctrl + 7生成,通常也可以由ctrl + /)与screen / tmux一起使用。


0

我大部分时间都使用ctrl-z,但有些时候也使用ctrl-x。我使用的不是“停止”中断,而是在需要时键入^ zz。这也使我可以在使用默认ctrl-a的远程服务器上启动辅助屏幕会话。如果我启动了第三次会话(在第三台服务器上),则可以使用ctrl-x。Ctrl-x是锁屏功能,在许多环境中,锁屏功能并不常见(因为屏幕通常在终端仿真器中运行)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.