我是 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 文档)
答案1
Control- Shift-的问题在于,大多数终端仿真程序不会为其发送与-A发送的代码不同的代码,因此无法ControlA屏幕来分辨两者的区别。
如果您确实需要禁用 tty 上的“软件流控制”,则可以使用 Cq stty -ixon
。我通常这样做,以便可以使用 Cs 在命令行上进行搜索。
您可能会考虑 C-^,因为它似乎通常不受约束。在美国键盘布局中它是Control- Shift- 6,但在其他布局中输入可能会很困难。
大多数人从来不用 tty 控制字符 C-\ 来发送 SIGQUIT。要使用它,请使用 with 禁用 tty 功能stty quit undef
并将其绑定为前缀键。不过这有点冒险,因为如果你在 tty 上按 C-\,而退出键没有被禁用斯特蒂,你可以终止前台进程,而不是激活屏幕。
我换成了tmux不久前。其默认值是 Cb因为它是在屏幕并且没有干扰屏幕的默认我发现 Cb 对我来说相当好用(我通常使用箭头键在 shell 命令行上移动单个字符 — — 尽管我使用 Mb 和 Mf 来按单词移动)。
顺便说一句,tmux在他的主要课程中使用 Ca,总是输入两次 Ca(无论是在tmux会话或不会话)。如果你愿意养成这个习惯,这似乎是一个不错的折衷方案,因为第二个 Ca 在大多数类似 Emacs 的编辑上下文中应该是无操作的。如果你经常在会话之外使用程序/上下文,那么它将不起作用。屏幕其中第二个 Ca 不会是无操作。
默认情况下,Ca Ca 与其他命令(切换到最近活动的屏幕)屏幕。要让 Ca Ca 发送实际的 Ca 并让 Ca o 切换窗口,请将以下内容放入您的.screenrc
:
escape ^A^A
bind o other
答案2
不需要解决方法。
要在 bash 中使用 screen 时移动到行首,请使用
Control- A(释放然后)A
一般来说,如果屏幕控制字符与 bash 快捷方式冲突,则 bash 快捷方式的第一个字符Control将被替换为Control-A
其他行编辑快捷方式同样如此。
答案3
我使用 C-\ 来按 Screen,我强烈推荐它。您可能会意外按下任何其他键定义,但通常不会按下 C-\ 。这就是我喜欢它的原因。
答案4
我将 ctrl-_(也可以通过 ctrl+7 和通常的 ctrl+/ 产生)与 screen/tmux 结合使用。