我最近注意到我的 vim 中的 Alt (meta) + 箭头键执行了某些操作,但是仅在 tmux 中因为某些原因。
- Alt+Left:删除 3 行。相当于 vim
d3d
,但在 INSERT 模式下有效。 - Alt+右键:删除3行插入上面的行。相当于 vim
d3dO
。 - Alt+Up:转到行尾,INSERT。相当于 vim
A
。 - Alt+Down:返回 3 个单词。相当于 vim
3B
。
我没有在.tmux.conf
或中设置任何相关的键绑定.vimrc
。这些命令也不在 vim 寄存器中。这是怎么回事?是什么配置了这些命令?
系统信息
- vim:8.2.3582
- tmux:3.2_a
- Arch Linux
插入模式 CTRL-V
Alt+Left ^[[1;3D
Alt+Right ^[[1;3C
Alt+Up ^[[1;3A
Alt+Down ^[[1;3B
环境变量
:echo $TERM
tmux-256color
答案1
我意识到 vim 正在将终端代码作为命令执行(Ctrl + 箭头键也会发生这种情况)。发生这种情况是因为基本 vim 仅完全支持xterm
。对于其他终端,修改后的方向键必须手动设置:
execute "silent! set <xUp>=\<Esc>[@;*A"
execute "silent! set <xDown>=\<Esc>[@;*B"
execute "silent! set <xRight>=\<Esc>[@;*C"
execute "silent! set <xLeft>=\<Esc>[@;*D"
您可以通过:help tmux-integration
和阅读有关此内容的更多信息arrow_modifiers
。