【进击的Vimmer】为什么选择vim

当你看到一些大牛飞快敲击键盘而不用鼠标的时候你可能很羡慕和佩服,其实这完全没有必要。就像一个吉他手熟练地弹吉他有必要羡慕吗?一个瓦匠熟练地砌砖有必要羡慕吗?这些都是他们赖以生存的工具而已,熟练地运用工具是理所当然的事情。而一个程序员,一个文本编辑者,你如果没有熟练运用你的编辑工具,其实还是挺不应该的,而工具又有优劣之分,选对工具很重要。

众所周知,编辑器有很多,Sublime、Notepad++、EditPlus、Visual Studio Code,以及号称21世纪编辑器的Atom,这些编辑器都很好用,用户基础都很多,而且可以满足日常几乎所有的需求(如果在上面几个里面选择的话,VS Code 据说会是更好的选择,良心推荐),而vim相对他们一个很突出的特点就是难用,下面是Michael Mrozek画的一副比较“写实”的各个编辑器学习曲线图:


【进击的Vimmer】为什么选择vim_第1张图片

地球人都知道,vim是“编辑器之神”,但是想驾驭它可不是简单的事情,你需要不断地学习然后放弃、再学习、再放弃,说的好像很恐怖,其实我我相信你看这篇文章的时候可能已经放弃了不止一次了吧:D 所以从现在开始你将真正走入vim的神殿,接近并驾驭它。

好吧,上面提到那么多的编辑器,却故意把“神之编辑器”——emacs给故意忽略掉了。反正这两个都很难学,那为啥非得学vim而不是emacs呢?如果你这么问,那么我会很尴尬,原因是emacs我也只是入门而已,没法体会她真正的魅力,网上有很多类似的对比,最终的结果甚至都是偏向于emacs那一方的,说到这里你的心怕是已凉了半截,不用担心,网上的评论大多数都是以偏概全,用一方的优点来贬低另一方的“缺点”,比如下面的:

个人觉得Emacs的按键也比vim的按键设置的合理,虽然vim的按键非常短,但是都是特别难按。比如回到行尾的$,回到第一个非空白字符的^,还有删除一个单词dw,试想阿,你如果想删除一系列单词怎么办?难道先要数数要删除多少个单词?然后用dNw?太慢了。要么就dw,dw,dw,。。。,按N次,这样就需要按2N次键,但是在Emacs下删除一个单词是M-d,你只需要按着Alt键一直不放,然后不停的按d就可以了,仅需要按N+1次键,方便之极。

这是明显是不懂vim嘛,难按说明打开的方式不对,不能重复删除单词?不知道我vim有牛逼的.命令吗?(科普:.表示重复之前的操作) 下面一段话是在StackOverFlow上摘抄下来的,比较客观,大致的意思是emacs是一种生活方式,需要一天24小时的使用,可以用它来干任何事情,vim则更侧重于是一款优秀的编辑器,效率很高。作者用的是emacs,但他认为如果你不想陷得太深,vim可能是更好的选择。

With Emacs you are expected to have it open 24/7 and live inside the program, almost everything you do can be done from there. You write your own extensions, use it for note taking, organisation, games, programming, shell access, file access, listening to music, web browsing. It takes weeks and weeks till you will be happy with it and then you will learn new stuff all the time. You will be annoyed when you don't have access to it and constantly change your config. You won't be able to use other peoples emacs versions easily and it won't just be installed. It uses Lisp, which is great. You can make it into anything you want it to be. (anything, at all)

With vim, it's almost always pre-installed. It's fast. You open up a file do a quick edit and then quit. You can work with the basic setup if you are on someone else's machine. It's not quite so editable; but it's still far better than most text editors. It recognises that most of the time you are reading/editing not typing and makes that portion faster. You don't suffer fromemacs pinkie. It's not so infuriating. It's easier to learn.

Even though I use Emacs all day every day (and love it) unless you intend to spend a lot of time in the program you choose I would pick vim

圣战已经打响几十年,并将一直持续下去,其实打口水战没必要,两个都是神,所以两个存在肯定都是有道理的,更何况emacs其实有个evil模式,可以让你在emacs上使用vim的快捷操作,从侧面说明vim的编辑方式还是得到了对手的认可的,两者终于找到了和谐共处的方法,如果你哪天真的要叛逃emacs,那你将拥有神之编辑器之神。下面我着重给出点成为vimmer的理由,毕竟我们大多数小老百姓并不需要去利用编辑器发邮件发twitter什么的。

1. 编辑文本效率高

编辑器的作用主要还是去处理文本,处理文本又有快慢之分。文本的操作主要有输入、光标移动、删除、以及复制粘贴等,同样光标的移动,vim可以比一般的编辑器快上许多,vim的复制粘贴功能也强大到足以使你想再次放弃vim的学习:D,相信我,学好vim将显著提升你编码或者编辑文本的效率。

2.完美配合各家编辑器以及IDE

如果你想把vim打造成c/c++/python甚至java的IDE,完全没有问题,但是我相信你再怎么配置也不可能超越JetBrain家族的那一套。如果能够把Android Studio或者Pycharm的快捷键配合上vim的高效率编辑岂不是如虎添翼?事实证明这是可行的,ideavim对vim的支持还是很不错的,而且几乎所有的编辑器或者IDE都有vim插件,你不用担心去mac上没有你心爱的notepad++,也不用担心从android转行ios在编辑方式上的巨大改变了,学会了vim,在不同平台上,不同编辑器或者IDE里面,一个vim走天下。

3.远程编辑

linux系统大部分都内置了vi编辑器,这应该是为什么大多数人学习vim而不是emacs的原因吧,我想只要搞开发应该是逃不过远程访问一些日志或者修改一些配置参数什么的,这时候vi的技能就派上用场啦,如果你认为只需要知道i和:wq就ok了,那我真的也没法反驳,毕竟有段时间我就是这么干的,但我想当你真的把hjkl弄熟,顺便还能流利移动光标之后应该就不这么想了。

4.扩展性强,私人订制功能

vim虽然已经很强大,但是部分特殊的需求并不能尽善尽美,如果你有能力的话可以自己学习vimscript来自己写脚本,绝对地私人订制。当然,如果懒得学vimscript的话,python也是可以的,但是基本的vimscript还是要掌握的。如果你实在懒的不行了,可以去google或者github,你想到的需求没准别人已经帮你写好了插件等着你发现呢。

5.启动快

这是我认为作为编辑器必须具备的一个条件,像Atom启动速度就很慢,notepad++做的就不错,可惜只支持windows平台,vim的启动速度还是挺快的,用来打开修改一些配置文件以及编辑文本很高效的。另外,据说emacs启动没有vim快,哈哈。

还在等什么呢,是时候好好审视一下这么多年来形成的打字习惯了,稍微深入了解一下vim,你会发现以前的码字有多么大的提升空间。下面我将陆续跟大家分享一些vim的学习和操作技巧,希望一起学习,把vimmer的精神发扬光大,让vim成为你最后的编辑器。

你可能感兴趣的:(【进击的Vimmer】为什么选择vim)