在vim中,如何将“command-right”和“command-left”映射到mac上的行首和行尾?

在vim中,如何将“command-right”和“command-left”映射到mac上的行首和行尾?

我正在尝试让它像 Mac 中的默认文本编辑一样。我在 ~/.vimrc 中尝试过 map! <D-Left> 0map! <D-Right> $ 但当然没用。我怎样才能做到这一点?

答案1

据我所知,Command 键修饰符语法(<D-...>) 仅在 GUI 模式实例中有效维姆在 Mac OS X 上。

维姆实例必须是基于 GUI 的,因为大多数终端仿真器 (终端,iTerm等)不会为 Command 组合键生成控制序列,因此只有 tty 的实例维姆无法知道曾经按下过 Command 组合键(终端仿真器从不通过 tty 接口发送任何内容)。实际上,终端绑定 ⌘← 和 ⌘→(Command-Left 和 -Right)以循环浏览其打开的窗口,因此当您在上下文中键入时,这些键“已被占用”终端

麦克维姆(当在 GUI 模式下运行时)确实附带了(以及其他 Mac 风格的击键)<D-Left><D-Right>(分别用于<Home>(几乎相同0)和<End>(相同$))。需要注意的是,这些默认映射是在 中建立的$VIM/gvimrc,因此只能从您的~/.gvimrc中正确覆盖它们。

我认为还有其他基于 GUI 的版本维姆对于 Mac OS X,但是麦克维姆似乎是唯一现代的。

粗略地说,启动文件按以下顺序处理:$VIM/vimrc~/.vimrc$VIM/gvimrc~/.gvimrc。自从麦克维姆$VIM/gvimrc地图<D-Left>,您需要将您的映射<D-Left>(如果您实际上想覆盖它)放入您的地图中,~/.gvimrc以便它拥有“最终决定权”。

相关内容