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

Mar*_*rty 10 vim macintosh

我试图让它像 Mac 中的默认文本编辑一样。我试图 map! <D-Left> 0map! <D-Right> $ 在〜/ .vimrc里,当然没有奏效。我怎样才能做到这一点?

Chr*_*sen 9

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

Vim的实例必须基于GUI的,因为大多数终端仿真器(终端的iTerm,等)不产生Command键组合控制序列,因此仅TTY实例的Vim没有办法知道一个命令组合键是有史以来按下(终端模拟器从不通过 tty 接口发送任何内容)。事实上,终端绑定 ?? 和 ??(Command-Left 和 -Right)在其打开的窗口中循环,因此当您在Terminal的上下文中键入时,这些键“已被使用” 。

MacVim(在 GUI 模式下运行时)确实带有(在其他 Mac 风格的击键中)<D-Left><D-Right>(分别为<Home>(与 几乎相同0)和<End>(与 相同$))的功能映射。一个警告是,这些默认映射是在 中建立的$VIM/gvimrc,因此只能从您的~/.gvimrc† 中正确覆盖它们。

我认为还有其他用于 Mac OS X的基于 GUI 的Vim版本,但MacVim似乎是唯一的现代版本。

粗略地说,启动文件按以下顺序处理:$VIM/vimrc~/.vimrc$VIM/gvimrc~/.gvimrc。由于MacVim$VIM/gvimrcmaps <D-Left>,你需要把你的映射<D-Left>(如果你真的想覆盖它)放在你的里面,~/.gvimrc这样它就有“最终决定权”。