将 Byobu 与 tmux 结合使用时,在 Vim 中使用 Ctrl+箭头键时出现问题

将 Byobu 与 tmux 结合使用时,在 Vim 中使用 Ctrl+箭头键时出现问题

在 Vim 中,我设置了 Ctrl+箭头键来跳过单词。当在 gnome 终端内运行 Vim 时,这工作得很好。

然而,当使用屏风(tmux),它显示了奇怪的行为:它删除了光标之后的所有内容。

作为参考,这些是我的 vim 设置:

:inoremap <C-Left> <C-\><C-O>b
:inoremap <C-Right> <C-\><C-O>w

答案1

问题是双重的。首先,tmux默认情况下将控制箭头键从一种类型的转义序列转换为另一种类型。因此,诸如 之类的特殊键会在不带修饰符的情况下controlleft发送到,例如。如果您经常查看不同的转义序列,您可能会看到类似这样的内容vimleftcat -v

^[OD

与此相对(在 tmux 之外):

^[[1;5D

线路

set-window-option -g xterm-keys on

修复了这个方面。另一部分是tmux默认使用 的终端描述screen。该终端描述没有描述控制箭头键。终端数据库中的这些条目最适合 VTE(gnome-terminal):

还有其他的,比如

screen如果对应的TERM外部为vtevte-256colortmux不做自动选择,则运行时会自动选择;你必须修改它的配置文件。

顺便说一句,没有“screen.xterm”条目,因为它会干扰screen.与 没有冲突TERM=xterm-new

如果您有一个默认(最小)终端数据库,例如ncurses-base在 Debian 中,你可能没有这些。更常见的是xterm-256color,它足够接近可以与 vim 和 tmux 一起使用。

例如,如果我将其添加到我的.tmux.conf文件中,它的行为将如您在 vim 中所期望的那样:

set -g default-terminal "xterm-256color"

进一步阅读:

答案2

从这里您可以在byobu中解绑组合键:

创建一个文件~/.byobu/.tmux.conf(如果文件存在则添加):

set-window-option -g xterm-keys on

然后将以下内容添加到~/.byobu/keybindings.tmux

unbind-key -n C-Left
unbind-key -n C-Right

相关内容