![屏幕或 tmux 冲突最少的前缀/转义序列是什么?](https://linux22.com/image/1222986/%E5%B1%8F%E5%B9%95%E6%88%96%20tmux%20%E5%86%B2%E7%AA%81%E6%9C%80%E5%B0%91%E7%9A%84%E5%89%8D%E7%BC%80%2F%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
Screen 使用的是Ctrl+ A。而 tmux(在 screen 中开发)使用的是Ctrl+ B。不过,这两个按键也用于编辑器、shell 等。因此,在 tmux 或 screen 中使用时,选择其中任何一个都会降低这些工具的用户体验和功能。
哪个前缀与其他程序和 shell 的键绑定冲突最少?
答案1
我认为^\
(又名^|
)如果位于键盘布局的方便位置,则是最佳选择。它在其他程序中的使用相当少见:
- 发送
SIGQUIT
到进程 - 在 shell 中中止 for 或 while 循环时
^C
被拦截 toggle-input-method
在 emacs 中
我不知道还有其他用途。小心不要在习惯它之后tmux
或之外意外地终止进程screen
。不过,这种情况几年内只发生在我身上一次。
~/.tmux.conf
unbind-key C-b
set -g prefix 'C-\'
bind-key 'C-\' send-prefix
~/.screenrc
escape ^|^|
答案2
对于想要在 tmux 中使用反引号作为转义符的人来说,你需要添加:
unbind C-b
set -g prefix `
bind-key ` send-prefix
最后一个很重要,否则您不能为了其他目的输入反引号:-)
答案3
Ctrl+A还已知会导致 Emacs 出现问题,包括 Emacs 模式下的 Bash。听起来这对你来说不是问题。
Ctrl+O是我见过的另一个选项。显然,这是老鼠药(这是一个不需要鼠标的 X 窗口管理器)。我Ctrl+O使用嵌套屏幕时使用过:Ctrl+O用于外部屏幕和Ctrl+A内部屏幕。效果很好,但有点吓到我的同事了。:-)
我只是在想,如果你使用 vi 而不是 Emacs,那么还有一些替代方案。Ctrl+G例如,并不常用。
答案4
我使用Ctrl-Q
,tmux
到目前为止效果很好。不过,我不得不说,它与 shell 流控制相冲突。默认情况下,Ctrl-Q
用于在使用 停止输出后重新启用输出Ctrl-S
。在几次意外按下 后,shell 卡住了Ctrl-S
,我学会了不要按Ctrl-S
。
(也可以使用 完全关闭流控制stty -ixon
,或者将stty start
和绑定到 不同的键stty stop
。)
# tmux.conf
unbind C-b
set -g prefix C-q