译:编辑器之战: Vim的复仇 - 今日头条(TouTiao.com)



译:编辑器之战: Vim的复仇 - 今日头条(TouTiao.com)

想其他任何的编辑器一样,Vim也拥有难以置信的可拓展性。如果有任何不能制作成宏的特性,用户通常都可以为此编写插件。依我看来,Vimscript 没Lisp那样好编写,所以我就把拓展的编写留个其他用户吧。有人已经写了一个几乎你所需的所有模块。但是在刚开始的时候不要过度使用插件。即使你是刚学习Vim,它也会使你的工作量减轻很多。

如果你经不住诱惑安装了一些插件,我建议你一次只装一个,直到能给非常熟练的使用后再安装另外的插件。我建议依次安装和学习如下插件:vim-sensible, vim-airline, vim-abolish, ctrlp.vim, UltiSnips, vim-surround, vim-easy-align。

VIM最佳命令

如果你在用Vim,但是没充分使用如下的命令,说明你还没用好它。

l IA 分别插入文本到行首或尾部。

l m设置标记然后通过"`就可以跳回到此标记位置。 这对轻松在长篇文章中跳转非常有效。

l g; 跳转到上次编辑位置。就是说"在去其他地方之前,先返回之前编辑的地方"。这非常有用。但这还不是全部--它追踪编辑历史以便可以复现前5此编辑。g,返回前一个编辑历史。

l CTRL-] 跳转到鼠标所在函数的定义位置,CTRL-t跳回。CTRL-t可以使你会一直返回,直到返回到开始位置。(为了使其生效你需要一个标签文件。) 这几乎达到像eclipse这种IDE价值的一半,却没他们那样造成屏幕凌乱。

l 一个IDE的另外一半是长变量或者方法名的tab完成功能。在Vim中用CTRL-nCTRL-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

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts