重映射vim行尾键

8
在使用 Mac 键盘时,使用 vim 的一个大麻烦是缺少 Home 和 End 键。尽管在 vim 中有一种解决方法,即:
$ for  End of line 
0 for Beginning of line (both in <Esc> mode)

我发现 $ 符号在键盘的左侧,却能让光标移到文本的最右侧,这让人感到不直观,而数字 0 在键盘的右侧,却能将光标移动到行首。是否有一种方法可以将键位重新映射,使用数字 9 将光标移动到行首,使用数字 0 将光标移动到行尾?

我在我的 ~/.vimrc 文件中尝试了以下内容:

inoremap <Esc>9 <Esc>0
inoremap <Esc>0 <Esc>$

但它似乎没有生效,旧的键组合仍然存在。帮我解决一下!也请告诉我这样做的缺点(如果有的话)?谢谢!


你是否知道inoremap是用于插入模式映射的?nnoremap 0 $对你起作用吗? - Daan Bakker
成功了!谢谢!顺便问一下,如何在不失去插入模式的情况下到达行首和行尾? - crazyim5
1
你可以通过使用 <Fn + 左箭头><Fn + 右箭头> 在 Mac 键盘上输入 <Home><End><Fn + 上箭头><Fn + 下箭头> 则执行 <PgUp><PgDn> 的功能。 - Jim Stewart
1
作为一个有趣的小知识,$^(比 0 更实用)分别是行末和行首的原因是它们是正则表达式中匹配行末和行首的标记 -- ^hello 匹配以 hello 开头的行, hello$ 匹配以 hello 结尾的行。 - Justin L.
1个回答

25

inoremap 用于插入模式下的映射。你需要的是 nnoremap。例如,你可以尝试这样做:

inoremap 适用于插入模式下的按键映射,而你需要的是 nnoremap。举个例子,你可以尝试以下操作:

nnoremap 0 $
nnoremap 9 0
inoremap <C-A> <Home>
inoremap <C-E> <End>

个人而言,我不会将9键重新映射,因为你可能会在某些时候需要它(例如9gg9j)。相反,我会选择QKUS,因为它们很少使用。

实际上,我可能会建议你保持原样。当你学习正则表达式时,$是非常直观的。虽然它有点难打,但通常你不需要经常使用它,因为你有许多命令,比如D可以映射到d$。并且当你需要与一个纯粹的vim一起工作时,这也会更容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接