译:编辑器之战: Vim的复仇 - 今日头条(TouTiao.com)
想其他任何的编辑器一样,Vim也拥有难以置信的可拓展性。如果有任何不能制作成宏的特性,用户通常都可以为此编写插件。依我看来,Vimscript 没Lisp那样好编写,所以我就把拓展的编写留个其他用户吧。有人已经写了一个几乎你所需的所有模块。但是在刚开始的时候不要过度使用插件。即使你是刚学习Vim,它也会使你的工作量减轻很多。
如果你经不住诱惑安装了一些插件,我建议你一次只装一个,直到能给非常熟练的使用后再安装另外的插件。我建议依次安装和学习如下插件:vim-sensible, vim-airline, vim-abolish, ctrlp.vim, UltiSnips, vim-surround, vim-easy-align。
VIM最佳命令
如果你在用Vim,但是没充分使用如下的命令,说明你还没用好它。
l I和 A 分别插入文本到行首或尾部。
l m设置标记然后通过"`就可以跳回到此标记位置。 这对轻松在长篇文章中跳转非常有效。
l g; 跳转到上次编辑位置。就是说"在去其他地方之前,先返回之前编辑的地方"。这非常有用。但这还不是全部--它追踪编辑历史以便可以复现前5此编辑。g,返回前一个编辑历史。
l CTRL-] 跳转到鼠标所在函数的定义位置,CTRL-t跳回。CTRL-t可以使你会一直返回,直到返回到开始位置。(为了使其生效你需要一个标签文件。) 这几乎达到像eclipse这种IDE价值的一半,却没他们那样造成屏幕凌乱。
l 一个IDE的另外一半是长变量或者方法名的tab完成功能。在Vim中用CTRL-n和 CTRL-p 来预选列表中上滚和下滚。如果你使用的是标签文件或者如果你在Vim中其他文件定义了标签,它将对变量名和方法名自动完成。
l gg=G跳转到文档顶部(gg) 自动缩进(=) 直到到达文档末尾 (G)。这使得你打开和关闭的大括号排成一行,很容易找到你忘记配对的大括号。
l U撤销最后一个命令。CTRL-r重做。:earlier 2m 恢复到两分钟前的状态。如果你不再进行撤销,继续编辑然后想重做之前的一些改动,就可以考虑用这个命令。g+ 和g- 则在恢复树种上下切换。它变得更加复杂。
l /和f 都是搜索命令,这两个命令在符合命令中起着至关重要的作用。df,从当前光标位置上的字符一直删除到遇到逗号(包括逗号)。d/foo 一直删除直到第一次匹配"foo"的位置。如果你喜欢,你可以用这来代替其他动作。
l :r 读取一个文件。:!在shell中运行命令。:r! 粘贴命令的结果输出到文档中。:r!ls whatever*比输入文件名更快。在此我并不打算介绍UNIXy中怎样通过shell脚本运行文本。
无处不在的VI
一旦你习惯于Vim的移动命令,你会乐在其中。当然了你也可以直接使用鼠标,但如果你能熟练使用Vim移动命令,你将很少用鼠标了。手一直在键盘上比时不时腾出手来操作鼠标操作要会更快很多。铁杆Vim用户会重新映射Escape 键(返回到普通模式)到其他更加方便的功能。我设置的是 Caps Lock键,在我左手小手指下面。
(我其实是通过xcapse插件映射它和Control键复合键使用。)
是的,这确实有点极端,但是比 现在已经不存在的避免Emacs导致腕管综合征的键盘设计 强多了。
如果你在Unix使用Bash shell,set -o vi 这种用法来读取行的方法几乎和vi一样。你的浏览器也可以Vim化,火狐浏览器、cVim或vimium中有Vimperator 和Pentadactyl 插件。谷歌浏览器中有ViChrome插件 。如果你想合二为一,qutebrowser是目前最好的原生Vim风格网页浏览器,而且还将会更加完善。
你若搜索 "vi keybindings"你会发现它不仅支持Visual Studio、Eclipse 还支持Emacs。
为什么Emacs里有Vi模拟模式,但Vim中却没Emacs的模拟模式呢?
稍加思索你就会明白,编辑器之战已经有了结果。
想用惯Vim需要花费一些时日。程序员想要擅长Vim,需要要摆正心态勤加练习。从1994到20011年间我用Emacs写代码、写我的学位论文、我所代课的学生的论文和学术论文。从2011年起我就开始用Vim来编写更多代码、写书、写邮件和我在Hackaday上的文章。
我仍然在不断提高,五六年间每天使用Vim 6到8小时,每月将自己总结的技巧写在指令表中。虽然Vim像任何值其他值得深入探索的东西一样,用起来有点难,但是却非常值得。不要轻信任何人告诉你他们"懂"Vim。:wq.
Read full article from 译:编辑器之战: Vim的复仇 - 今日头条(TouTiao.com)
No comments:
Post a Comment