iTerm2 Vim alt+右/左箭头

iTerm2 Vim alt+右/左箭头

作为 Linux 用户,我非常习惯使用ALT+left或在 vi​​m/nano 中从一个单词跳转到另一个单词right

这似乎无法在使用 iTerm 时正常工作,我正在使用 zsh,我尝试添加;

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

它确实有效,但仅限于 zsh 内部,然后我注释了这些行并在 iTerm 中添加了键盘快捷键;

在此处输入图片描述

它确实有效,但只适用于ALTleft

我怎样才能让它也适用于右箭头?

答案1

在 iTerm 的属性中,转到配置文件 -> 密钥并在那里进行设置

  • 用于⌥→发送转义序列[1;5C
  • 用于⌥←发送转义序列[1;5D

在此处输入图片描述

答案2

首先查看终端发送给 vim 的键代码:

$ sed -n l
^[[1;9D 

在上面的例子中,我运行了 sed 命令并按下Alt + Left

^[[1;9D是发送到 vim 的转义序列,因此我们可以使用它进行映射。

添加至 vimrc:

map <Esc>[1;9D :tabn<CR>

macOS 的替代解决方案

如果sed -nl没有按预期工作,请尝试 CTRL + V

您可以使用“control-V 技巧”来确定当前映射:首先按 control-V,然后按您要检查的按键。这将打印发送到终端的字符。 http://www.macfreek.nl/memory/Backspace_and_Delete_key_reversed

例如输入 control-V + deleteprints ^?。我仅在 macOS 11 上验证了这一点。

答案3

我读了另一篇文章,其中描述了对于 option-left 和 option right,您需要分别将它们绑定到操作 ^[b 和 ^[f。也就是说,将它们绑定到“发送转义序列”并绑定键 b 和 f。

http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/

答案4

还有另一种可能的解决方案,vim 本身提供了单词动作,请参阅:

:help word-motions

相关内容