编辑器的新气象以及NeoVim

Fri 01 July 2016 / In categories Dev Tools

Atom, LightTable, Sublime Text, Vim

依稀记得,大学时代是从RedHat9以及字符终端开始学习Linux的。当时很厉害的两款编辑软件Emacs以及Vim我都尝试过。首先尝试的是Emacs,可是一开始遇到了一个致命的小麻烦,打开emacs后竟然不知道如何退出(原谅我当时的小白),所以就选择了Vim。从Vim6.3开始一路走来,痛苦过,放弃过,最终还是攀登上了Vim陡峭的学习曲线,适应了它,离不开它了。因此,Vim不仅是我的得力助手,也成了我的小信仰。 时至今日,各种编辑器如雨后春笋般冒出来,引用某位仁兄的一篇Github Page:An Overview of my Eight Favourite Text Editors and IDEs,现在真是一波编辑器的新气象,在Emacs和Vim之后有了这么多后起之秀:

  • Sublime Text (可以说是后起之秀中非常有品位的了)
  • Atom (据说受Sublime Text影响很多,从Chromium演化出Electron用于搭UI框架)
  • Brackets (Adobe出品的一款专用于Web开发的编辑器。和Atom一样,搞出了自己的一个UI框架Brackets Shell
  • LightTable (基于Atom的Electron,立志成为一款全能的IDE)
  • Visual Source Code (这款是微软出的,也是基于Atom的Electron。微软会推开源的编辑器,着实让我吃了一惊)
  • 上面的几款编辑器,除了Sublime Text之外,其他基本上可以说都是基于Chromium的,使用Web技术(HTML/CSS/Javascript)来搭建UI和扩展功能。使用Chromium+Web技术来创建桌面应用程序,已经成为一个新的潮流。

    NeoVim

    古老的Vim能不能在Web时代延续其生命力呢?看到了NeoVim,我觉得见到了一丝希望。引用罗辑思维罗胖说的一句话:“互联网时代要以U盘化的方式生存”。听着虽有道理,但这是文科生的说法。程序员的说法应该这般:“Vim是否可以成为一个提供编辑功能的库供其他应用程序使用呢?”比如NeoVim的Wiki上面的这篇文章Refactor Vim into a Library简述了一些构思。

    其实把编辑功能作为库来提供有先例,笔记Gnu Readline以及libedit。不过这两个库都是给字符界面使用的。其实对于Vim来说,它首先是一款字符界面的编辑器,然后才是一款图形界面的编辑器(GVim,MacVim)。这也是Vim的核心优势之一,其他编辑器无法在终端字符界面工作,开发场景是受限的(比如登录到远程机器进行开发);而Vim的使用场景非常多,只是在Chromium/Web上差了一步。

    我期望NeoVim能够把Vim的使用体验带到Web时代,王者归来,能够衍生Atom/LightTable这样的产品。目前已有端倪,如NyaoVim项目就把NeoVim和Atom的Electron结合在一起,成为一个图形应用程序。从NeoVim的Wiki上看,还有很多相关的项目呢。

    最后总结

    Vim本身已经很老了,而且只有_Bram Moolenaar_一个人全权维护,不仅历史包袱比较重,而且演进比较慢。试图重写或者改进Vim的呼声和实践也越来越多了,例如VisPyVim。这些项目证明模拟一个管用的但是功能不那么完备的Vim其实不难。如果NeoVim能够把这件事做正确,像Eclipse项目那样把核心功能平台化,未来基于NeoVim的应用一定会非常丰富。

    其他比较文章

  • SitePoint Smackdown: Atom vs Brackets vs Light Table vs Sublime Text
  • Battle of the Free Code Editors
  • Slant上关于Vim的各种比较
  • Load Disqus Comments