繁体   English   中英

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

[英]How to get Cmd-left/right working with iTerm2 and Vim (without requiring .vimrc changes)?

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

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

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

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

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

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

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

YMMV,不确定为什么一组解决方案有效,而另一组无效

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

我没有 MacOS,所以我不能确切地知道你的情况,但我认识到其他操作系统的问题。

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

 TERM=something
 export TERM

在调用 vim 之前

例如,为了在 AIX 5.3 上通过 Putty/screen 获得所有键语法突出显示,我需要使用

 TERM=iris-ansi vim

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM