Alt + 箭头键在 vim 中执行奇怪的操作,仅在 tmux 中

Alt + 箭头键在 vim 中执行奇怪的操作,仅在 tmux 中

我最近注意到我的 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

相关内容