屏幕或 tmux 冲突最少的前缀/转义序列是什么?

屏幕或 tmux 冲突最少的前缀/转义序列是什么?

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-Qtmux到目前为止效果很好。不过,我不得不说,它与 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

相关内容