将Byobu与tmux一起使用时在Vim中使用Ctrl +箭头键时出现问题


12

在Vim中,我已将Ctrl + Arrow键设置为跳过单词。在gnome终端中运行Vim时,这工作得很好。

但是,当使用byobu(tmux)时,它表现出奇怪的行为:它将删除光标后的所有内容。

作为参考,以下是我的vim设置:

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

Answers:


7

问题是双重的。首先,tmux默认情况下,将控制箭头键从一种转义序列转换为另一种。因此,诸如之类的特殊键controlleftvim不带修饰符发送到,例如left。如果您cat -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-baseDebian),则可能没有。更常见的是xterm-256color,它足够接近vim和tmux。

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

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

进一步阅读:


嗯...这确实有效:)但仅部分有效。只有Control+ Left在起作用;Control+ Right不是。稍后再测试和更新。
shivams

1
您可能还有其他一些绑定会干扰Control + Right(鉴于详细信息,我可能会提供建议)。
Thomas Dickey

谢谢您的报价:)我进行了一些调查,发现确实有其他一些按键绑定正在引起干扰。例如,在我的Mac上,它可以正常工作,而在Linux中(使用Guake)则不能。但是,我站不对,无法访问我的Linux。解决问题后,我会更新。
shivams

@Thomam Dickey:同时,我接受您的回答,因为确实可以解决问题。
shivams

@ThomasDickey我想说的是,“ Go raibhmílemaath agat”在爱尔兰语中直译为“愿您拥有一千个好东西”。非常感谢您的回答。你是个明星。
罗布

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

这行不通。但是,它给了我坚实的领导。我将尝试跟进并提出一些解决方案。谢谢:)
shivams's
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.