Vim 在插入模式下有效导航

Vim 在插入模式下有效导航

我知道在插入模式下,我可以使用箭头键或使用 Ctrl-o 暂时退出插入模式来浏览文档。我的问题是:除了使用这些键或暂时退出之外,还有其他方法可以浏览文档吗?

谢谢。

好的伙计们,我刚刚找到了我自己的问题的解决方案,我用它imap来在插入模式下映射 Vim 中的键。

 imap <C-n> <Down>
 imap <C-p> <Up>
 imap <C-@> <C-Space>

答案1

此处再次为@garyjohn 的评论点赞。

按照这种方式,你肯定是搬起石头砸自己的脚。我认为你的做法至少有两个大错误。

  • 正如 @garyjohn 所写,你正在“对抗” Vim 最重要​​的方面。模态性是使其成为出色的文本编辑器的核心。如果你考虑到它的学习曲线非常陡峭,那么积极违背其设计不会让你走得太远。

  • 喜欢许多其他时候,你可以将“简化 Vim”的努力集中在诸如<up><down>和 之类的动作上。Vim 有好多了在缓冲区内和缓冲区之间移动的方法:wWeEbB/?tTfF{}[]等等。所有这些动作都赋予你超能力。所有这些动作依靠以某种方式来表达情态。

    拒绝这些非常有用的工具本身就是一个非常严重的错误。重新映射它们既非常困难,又毫无价值。

    顺便说一句,当我开始使用 Vim 时,我花了几个月的时间试图将它变成 TextMate 的克隆版。尝试为所有内容创建插入模式映射可能是我整个职业生涯中最令人沮丧的努力之一。不过,在这个过程中我学到了两件事:

    1. 我心爱的 TextMate 与 Vim 相比功能严重不足,因此降低 Vim 的难度是毫无意义的,而且……

    2. 模式规则。

接受 Vim 的哲学,而不是拒绝它。或者拒绝它,改用 Sublime Text 2,这是我们关心的。

答案2

我同意 @garyjohn 的观点 - 此外,Ctrl-nCtrl-p是我用于自动完成或自动拼写完成的东西 - 我不会将它们映射到其他东西。同样,Ctrl-w将删除光标前的一个单词,而Ctrl-u将删除光标前的所有内容,因此至少您可以使用这些快捷方式(在 shell 中也可以使用)。

答案3

再强调一下:如果你长时间处于插入模式,那你就做错了。Vi(m) 中的模式是:在正常模式下移动。进行简短插入(这里一个单词,那里一个句子)。或者使用 Ex 命令(例如)操作文本:substitute。重复。

试着教会自己<Esc>在脑海中字符流开始流出时立即退出插入模式(通过 ,希望键盘上可以方便地访问)。下一个插入只需按一下i/a即可。

答案4

如果您想要移动一个或两个以上的位置...

...最好的选择是点击ESC,移动,然后再次回到插入模式。

<C-h>创建像向左移动这样的映射然后开始多次点击它是没有意义的...作为 vim 用户,你不应该多次点击同一个键来实现智能移动。

(如果ESC键离您的手指太远,为其创建映射将是一个不错的选择。

如果您想在插入模式下移动一个或两个位置...

...一个好的选择是使用你的<Leader>关键定义一些动作:

(我用,作为<Leader>键,因为它对我的手指来说感觉很贴近且舒适)

noremap! <Leader>h <left>   "move cursor left
noremap! <Leader>j <down>   "move cursor down
noremap! <Leader>k <up>     "move cursor up   
noremap! <Leader>l <right>  "move cursor right
noremap! <Leader>w <esc>wi  "move one word forward
noremap! <Leader>e <esc>ei  "move forward to the end of word
noremap! <Leader>b <esc>bi  "move one word backward

相关内容