【发布时间】:2012-03-24 15:15:36
【问题描述】:
我希望能够在 Vim 中使用 Option-left 和 Option-right 跳过单词(以及 Cmd-left/right 转到行首和行尾),就像在我的 shell 提示符下一样。我的 Iterm2 首选项具有执行此操作的映射(例如,Option-left 到 Esc-H 和一个用于 option-right 到 Esc-F 的映射以跳过单词),这适用于本地 shell 或 ssh'd 到远程服务器.
当我在本地或远程使用 Vim 时,option-left 有效,但 option-right 无效。我怀疑这是因为 Vim 自然会监听 Esc-H,而不是 Esc-F。我可以通过将 .vimrc 文件修改为 Esc-b 到 b 和 Esc-f 到 f 来解决这个问题,但我不想对我连接的每台服务器都这样做。
同样,我对 Cmd-left/right 有相同的所需设置,用于转到一行的开头和结尾。我可以通过 Iterm2 映射(例如 Cmd-left 到 Esc-[h)在 shell 中让它工作,但是除非我再次映射键(例如 Esc-[h 到 ^),否则 Vim 根本不会对此做出响应。
更新:我刚刚弄清楚如何让选项左/右工作。我将 iTerm2 中的映射分别更改为 escape-[1;5D 和 escape-[1;5C。不过,我仍然想解决 Cmd-left/right 问题(我更改了问题的标题以反映这一点)。有什么想法吗?
【问题讨论】:
-
你的 shell 和 Vim 都不会对
Cmd键做出反应。另外,作为一个长期使用 mac 的用户,我发现^$bBeEwW的效率要高得多:如果您要认真使用 Vim,为什么不按设计使用它? -
@romainl 你确定吗?它适用于我在 linux、Windows 和 Solaris 上以及跨终端仿真器(如 screen 和/或 Putty)
-
是的。按下
Cmd键没有被shell 注册(没有修饰符Cmd的ANSI 代码)所以AFAIK 没有办法将Cmd发送到Vim,它甚至不理解Cmd:它只支持MacVim ,任何操作系统上的其他版本的 Vim、CLI 或 GUI 都不能使用<D->映射。因此,在 CLI Vim 映射中使用Cmd键的唯一方法是将其与其他一些键交换:Alt、Ctrl、Shift,无论如何,有很多应用程序/黑客。显然,这样做可能会引发大量问题,并且实际上取代了问题,因为我们仍然拥有相同数量的修饰键。 -
当您看到模态编辑和单键命令的辉煌时。
-
我已经有 iTerm2 映射 Cmd+left/right 映射到其他键,所以我不需要 Vim 来监听,但是,如果有其他一些 Vim 支持的 Escape/hex 代码默认情况下作为“$”和“^”的替代品,那么也许我可以更新我的映射以使用它。例如,Home 和 End 键适用于标准 Linux 安装。知道那些发送的键序列是什么吗?
标签: macos shell vim keyboard-shortcuts iterm