【CLI】Vim和Emacs调研

作者: 刘大帅 | 来源:发表于2015-02-06 11:32 被阅读1039次
    Emacs和Vim学习曲线Emacs和Vim学习曲线

    参考文章:


    摘录一些观点:

    • 有人说:脾气火爆的人适合用Vim,而性格平和的人适合用Emacs

    • Emacs是伪装成编辑器的操作系统

      有句夸张的话说:Emacs是伪装成编辑器的操作系统。细细想来,这句话并不夸张。

      Emacs其实是个Lisp的解释器,因此可以用Lisp灵活地扩展。 Lisp是什么东西,这同样是种很有生命力的编程语言。在C语言还没有发明的年代,MIT的人工智能实验室写ITS操作系统时,一部分用的是汇编语言,还有一部分就是用的Lisp。现在,Lisp仍在人工智能研究领域广泛使用着。

      有这么牛逼的扩展语言,注定Emacs向着无所不能的方向发展。渐渐地,人们用Emacs不再限于写程序,写文档,而且在Emacs里管理文件系统,运行终端,收邮件,上网,听音乐……,真是一发不可收拾。甚至,有人用Emacs控制咖啡机煮咖啡。

      这种大而全的扩展,背离了“一个程序只做一件事并做好它”的 Unix哲学,被Unix的忠诚用户所诟病。可是真的背离了吗? Emacs说过自己是一个编辑器吗?

      正是因为Emacs的无敌的可扩展性,人们才分不清Emacs到底是不是一个编辑器了。但,就是有人喜欢这种All-in-One的哲学,喜欢在Emacs中完成每件事。所以才会有人写《生活在Emacs中》,所以, Emacs才会成为一种信仰。

    • Vim不只是Vi

      Vim是Vi最受欢迎的变种之一,除了继承了Vi迅捷的编辑方式, Vim的功能已经比原始的Vi强大得多。这也得益于它可以用Vim脚本无限地扩展。 Vim.org 上已经有数千个脚本了,给Vim增加各种各样的特性和功能。

      为了证明Vim的可扩展性不输于Emacs,也有用户写了在Vim中玩游戏、运行Shell、和集成GDB在Vim内部调试的插件。客观地讲,Vim的脚本语言与Emacs的ELisp相比,略显逊色,但这丝毫不妨碍它把Vim扩展成非常优秀的编辑器。

      说到底,Vim的前身Vi和Emacs的设计采用了不同的哲学, Vi更符合Unix传统,它通过管道机制和系统内各种积木工具打交道,它讲究的是和系统内的工具程序协作来完成用户的任务。和Emacs相比,它的定位很明确,就是要做一个强大的编辑器。因此Vim的绝大部分扩展,都是为了更好地完成编辑文本的任务。

    • 独特的操作方式让你中了毒

      Emacs和Vim有着迥异的操作方式,却成了Unix/Linux世界中两种代表性的操作方式,有些软件的操作方式类似Vi,而有些软件的方式类似Emacs,甚至有些软件提供了Vi的键绑定和Emacs的键绑定让你选择。而无论哪种操作方式,对Windows用户来说都是古怪的。虽说古怪,多少代人也验证了这两种操作方式的高效。

      Emacs号称Ctrl到死的编辑器。其实它几乎用了所有的辅助键,听说过没有,Emacs = Esc + Meta + Alt + Ctrl + Shift。所以高德纳大师说操作Emacs,就像弹奏管风琴。 Emacs使用非常多的组合按键,这大概也是它高效于其它无模式编辑器的原因之一。你也可以定义自己的组合键序列,调用自己写的lisp函数,完成自己想要的功能。

      Vi一向是以快速的文本编辑闻名于世的。它的按键更简洁,通常是单个字符按键,就实现某种操作。但这是以有模式为代价的。你要不停地按Esc在从它的插入模式返回Normal模式。客观得讲,在文本编辑方面, Vim比Emacs高效,因为它提供了一些Emacs没有对应功能的操作来辅助高效的文本编辑。但它的模式切换也让一些人受不了,于是那些人选择了 Emacs。

      不管你选择了Vim还是Emacs,你都要为习惯它们独特的操作方式而努力,这是一个技艺积累的过程。当你习惯了Vim或Emacs,你会有欲罢不能的感觉,你希望用它们完成尽可能多的任务,因为你再用别的编辑器也已经不习惯。

      用Vim或Emacs就像吸食毒品,慢慢地就会上瘾。它们会带给你渐渐强烈的快感,但你也向它们献出了自己的灵魂。这时,你只能称它们为神器。

    • 黑客的编辑器

      Vim的前身Vi的作者Bill Joy和Emacs的作者Richard Stallman 都是那个时代著名的黑客,所以这两款编辑器一开始面向的主要用户就是写程序的人,现在仍然是。它们对编程加入了越来越多的支持,如语法高亮、智能缩进、关键字补全甚至集成调试。也有越来越多的程序员从IDE转向了Vim和Emacs。

      用Vim和Emacs编程到底有什么好处?我想首先是它们高效的编辑操作会提高你的编程效率。其次你可以用它们完成各种语言的编程,所谓一剑在手,夫复何求。你不用再因为编程语言不同去学习不同的IDE的使用,那些庞大的IDE的升级换代也与你再不相关,你把精力用于学习编程语言本身就好了。听说Google和微软内部开发也都不用IDE的,他们也会用Emacs或Vim。

      因为我写的程序不多,还不能深入体会用Vim或Emacs开发程序的乐趣。我只是觉得这很酷,你看,Linux之父Linus多年来用的是一款 MicroEmacs,它比GNU Emacs或XEmacs少许多功能,但Linus就是用它在维护Linux。 微软的大牛Don Box,Com之父,一直用Emacs,他说谁也不能夺走他的编辑器。他还在网上放了一段他用Emacs写C#程序的视频。

      编程大师们的选择,也是Emacs和Vim被追捧为神器的原因之一。


    我的选择

    既然无数人证明了这两个,一个是神的编辑器,一个是编辑器之神,那么,只要闭着眼选一个,也不会吃亏的。(Vim和Emacs的传奇,跟波澜壮阔的史诗似的,让我等后辈心潮起伏、敬仰不已。程序员的亚文化,也是吸引我们做程序猿的一个强大推手吧。)

    所以,我就任性了。一开始,我觉得Emacs比较有眼缘,觉得Emacs这名字,比Vim要霸气(真是太他妈任性了!)。另外,有一个观点说,Emacs是Lisp的解释器,而Lisp还广泛应用于人工智能,出于对人工智能的兴趣,我也觉得自己应该选择Emacs。最后,Emacs的非函数性学习曲线,让我很想体验一下……

    最终,我还是决定从Vim开始。由于以前已经不经意间,使用过Vim了,Mac也自带Vim,就对Vim生出了亲近之意。另外,我一直关注池建强老师的微信公众账号,池老师用的Vim,嬉笑怒骂间,写出了大批Vim的指导型博文,有熟人引路,就不矫情了。

    最后,用一位传奇人物的话结尾吧:

    入一行, 先别惦记着能赚钱, 先学着让自己值钱。 没有哪个行业的钱是好赚的。 赚不到钱,赚知识; 赚不到知识,赚经历; 赚不到经历,赚阅历; 以上都赚到了 就不可能赚不到钱。 让人迷茫的原因只有一个,那就是本该拼搏的年纪,却想得太多,做得太少 。

    —————————————————————————————褚时健

    相关文章

      网友评论

      • 66f41e7a1e4e:一边用sublime打草稿,一边用vi和gvim改脚本,一边用org-mode记事儿的路过
      • 不爱加班的程序员:入一行, 先别惦记着能赚钱, 先学着让自己值钱。 没有哪个行业的钱是好赚的。
        赚不到钱,赚知识; 赚不到知识,赚经历; 赚不到经历,赚阅历; 以上都赚到了 就不可能赚不到钱。
        让人迷茫的原因只有一个,那就是本该拼搏的年纪,却想得太多,做得太少 。----喜欢这句
      • b020d3503290:棒棒哒

      本文标题:【CLI】Vim和Emacs调研

      本文链接:https://www.haomeiwen.com/subject/rsddxttx.html