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


10

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

Answers:


9

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

Vim的实例必须基于GUI的,因为大多数终端仿真器(终端的iTerm,等)不产生Command键组合控制序列,因此仅TTY实例的Vim没有办法知道一个命令组合键是有史以来被按下(终端仿真器从不通过tty接口发送任何东西)。实际上,Terminal将⌘←和⌘→(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/gvimrc地图开始<D-Left>,您需要将<D-Left>(如果您确实要覆盖它)的地图放在自己的地图中,~/.gvimrc以便它具有“最终决定权”。


谢谢。我尝试过iTerm 2,它可以使用,但仍然...有点痛苦...欢迎回到我的生活,Xcode
Marty
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.