iTerm2 Vim alt+右/左箭头

sed*_*eds 17 terminal keyboard-shortcuts vim iterm2 macos

作为 Linux 用户,我非常习惯在 vim/nano 中使用ALT+leftright.

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

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word
Run Code Online (Sandbox Code Playgroud)

它确实有效,但仅在 zsh 中,然后我评论了这些行并在 iTerm 中添加了一个键盘快捷键;

在此处输入图片说明

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

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

eie*_*ito 13

在 iTerm 的属性中,转到 Profiles -> Keys 并在那里进行设置

  • 用于??发送转义序列[1;5C
  • 用于??发送转义序列[1;5D

在此处输入图片说明


lfe*_*445 8

首先查看您的终端发送到 vim 的关键代码:

$ sed -n l
^[[1;9D 
Run Code Online (Sandbox Code Playgroud)

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

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

添加到 vimrc:

map <Esc>[1;9D :tabn<CR>
Run Code Online (Sandbox Code Playgroud)

macOS 的替代解决方案

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

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

例如键入 control-V +delete打印^?。我只在 macOS 11 上验证过。