我试图让它像 Mac 中的默认文本编辑一样。我试图
map! <D-Left> 0
和
map! <D-Right> $
在〜/ .vimrc里,当然没有奏效。我怎样才能做到这一点?
据我所知,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这样它就有“最终决定权”。