![在vim中,如何将“command-right”和“command-left”映射到mac上的行首和行尾?](https://linux22.com/image/42998/%E5%9C%A8vim%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E5%B0%86%E2%80%9Ccommand-right%E2%80%9D%E5%92%8C%E2%80%9Ccommand-left%E2%80%9D%E6%98%A0%E5%B0%84%E5%88%B0mac%E4%B8%8A%E7%9A%84%E8%A1%8C%E9%A6%96%E5%92%8C%E8%A1%8C%E5%B0%BE%EF%BC%9F.png)
我正在尝试让它像 Mac 中的默认文本编辑一样。我在 ~/.vimrc 中尝试过
map! <D-Left> 0
,
map! <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
以便它拥有“最终决定权”。