22

我希望能够在 Vim 中使用 Option-left 和 Option-right 跳过单词(以及 Cmd-left/right 转到行的开头和结尾),就像在我的 shell 提示符下一样。我的 Iterm2 首选项具有执行此操作的映射(例如Option-lefttoEsc-H和一个用于option-right跳过Esc-F单词的映射),这在本地 shell 中或在 ssh 到远程服务器时有效。

当我在本地或远程使用 Vim 时,可以option-left工作,但option-right不能。我怀疑这是因为 Vim 自然会听Esc-H,但不是Esc-F。我可以通过将 .vimrc 文件修改为Esc-btobEsc-fto来解决这个问题f,但我不想对我连接的每台服务器都这样做。

同样,我对 Cmd-left/right 具有相同的所需设置,用于转到一行的开头和结尾。我可以通过 Iterm2 映射(例如Cmd-leftto )在 shell 中让它工作,但是除非我再次映射键(例如to ) Esc-[h,否则 Vim 根本不会对此做出响应。Esc-[h^

更新:我刚刚想出了如何让选项左/右工作。我将 iTerm2 中的映射分别更改为escape-[1;5Descape-[1;5C。不过,我仍然想解决 Cmd-left/right 问题(我更改了问题的标题以反映这一点)。有任何想法吗?

4

4 回答 4

21

为了模仿 OS X 发送Cmd-left/right到行首/行尾的行为,我在 iTerm2 中添加了以下映射:

  • Cmd-left转义序列[1~
  • Cmd-right转义序列[4~

为了模仿 OS X 发送Option-left/right到上一个/下一个单词的行为,我在 iTerm2 中添加了以下映射:

  • Option-left转义序列[1;5D
  • Option-right转义序列[1;5C

特别感谢这篇博文追踪我在cmd-left/right映射中遗漏的内容

于 2012-03-08T01:23:56.537 回答
11

FWIW,dolan 的回答在 Mac OS X 10.7.3 上的 iTerm 2 1.0.0.20120203 上对我不起作用。当我按下快捷键时,他的解决方案只插入~5D/5C到我的终端中。

相反,我使用了以下解决方案:

YMMV,不确定为什么一组解决方案会起作用,而另一组则不起作用

于 2012-04-10T04:50:06.733 回答
9

我正在使用 iTerm2 3.4.2,实际上您可以为您的配置文件选择一个预设来启用此功能。 配置文件键映射 自然文本编辑预设

于 2020-12-03T15:35:13.320 回答
1

我没有 MacOS,所以我无法确切了解您的情况,但我从其他操作系统中识别出问题。

基本上,这意味着终端发送 vim 无法理解的键码。我过去通过做修复它

 TERM=something
 export TERM

在调用 vim 之前

例如,为了让所有键语法突出显示在 AIX 5.3 上的 Putty/screen 上工作,我需要使用

 TERM=iris-ansi vim

如果您传递了错误的 TERM,则会有一个内置终端类型列表

于 2012-03-07T07:52:40.783 回答