如何让Cmd-left/right与iTerm2和Vim一起工作(不需要.vimrc更改)?

Dol*_*cci 14 macos vim shell keyboard-shortcuts iterm

我希望能够使用Option-left和Option-right来跳过Vim中的单词(以及Cmd-left/right以转到行的开头和结尾),就像在shell提示符下一样.我Iterm2喜好有映射做到这一点(例如Option-leftEsc-H和一个用于option-rightEsc-F超过的话跳过),这在当地工作的壳或者SSH方式登录到远程服务器.

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

同样,我对Cmd-left/right有相同的所需设置,可以进入一行的开头和结尾.我可以通过Iterm2映射(例如Cmd-leftto Esc-[h)在shell中工作,但是除非我再次映射键(例如Esc-[hto ^),否则Vim根本不响应.

更新:我刚想出如何让左/右选项正常工作.我在iTerm2改变映射这些是escape-[1;5Descape-[1;5C分别.我仍然想解决Cmd-左/右问题(我改变了我的问题标题以反映这一点).有任何想法吗?

Dol*_*cci 13

为了模仿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映射中缺少的内容

  • 这个解决方案和卡里姆的解决方案都不适用于我的 Cmd-左/右绑定。我必须在我的`~/.zshrc`中设置`bindkey '^[[1~' begin-of-line` 和`bindkey '^[[4~' end-of-line`,然后我才能设置根据这个答案的转义码。现在 iTerm2 和 Vim 中一切都按预期工作。 (3认同)

Ili*_*rim 10

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

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

YMMV,不确定为什么一套解决方案可行而不是另一套解决方案


小智 6

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