这就很明显,spacemacs
这个项目会拉拢一部分Vim用户,的确,它成功地吸引了我的注意力,我早就想试下这个“操作系统"是如何牛逼。
下面我单纯的从用户的角度来比较两者,对比非常浅。
包管理
对于一直用惯了vim简陋的包管理的我,一看到emacs的包管理,的确有点惊艳到我。
在emacs中,只需要点击菜单的Options
->Manage Emacs Packages
,既能打开emacs的包管理器,打开包管理器之后,可以搜索,可以安装,可以访问主页,多么友好的用户体验,跟Vim真是天差地别。
由于各种原因,在天朝下载可能很慢,但用户可以更换镜像源,就像linux上apt,yum和macOS上的HomeBrew一样,有个官方的服务器专门存放这些包,而且世界各地也有志愿同步官方的镜像源。
以上只是新用户的我的体验而已,然而通过阅读一些资料之后,我们发现其实emacs也是长期没有自带的包管理器的,在emacs 23的时代出现了一个非官方的包管理:packages.el
。后来到了emacs 24才被集成到里面去。
另外还要说下这货的更新其实非常麻烦,首先要进入package-list-packages
然后在需要更新的包标记为需要更新,问题在于Package-list-packages
是列出所有的包,包括了没有安装的,意味着你要标记其实非常麻烦...
现在来看vim的包管理,实际上vim根本没有包管理,我们来谈下vim的包管理发展史。
-
最开始的时候,用户必须把每个插件不同文件手动放在指定的目录上
-
后来出现一种压缩格式,用户只需要在vim中执行
:so xxx.sz
就可以自动将包释放到对应的目录,
总结:vim由于先天原因找包比较困难,但是找到之后维护起来比emacs简单得多。
补全
vim的话,如果使用了ycm的话,vim script本身的补全反而找不到较好的方案呢,各位知道怎么弄?
shell或者终端模拟器
emacs的有自带的用elisp写的eshell,类似vimshell的地位,说实话,这个eshell难配置,难用,而且慢,经常卡,使用体验输给vimshell。
emacs当然也有终端模拟器,可惜打开之后尽是乱码,当然这可能和我使用zsh+oh-my-zsh有关。
在这一点上vim获胜了。
搜索定位
补全那一小节有一些没说,似乎用emacs的人不喜欢fuzzy complete或者fuzzy search,我用company的补全真的很难习惯。什么是fuzzy
请看下面的动图:
emacs也有一个imenu,但是支持的语言类型太少和ctrlp-funky没得比,后者支持三十多种语言。
当然,emacs在文本搜索中有一个优势就是实时显示,这一点貌似还么有vim插件实现过。
其它优秀插件
emacs也有当却和evil不能和谐共处,至今没有找到体验和上面的vim-multiple-curosr一致的包。
vim-multiple-curosr vim-easymotionmagit & vim-fugitive
emacs上的magit包体验真的很不错,涵盖了大部分git命令,git有很多命令很难记住,但magit的帮助非常给力,通常是两个字母的组合按键,按下前一个字母之后出现窗口提示下一步能做什么。
相比之下,vim-fugitive就相对简陋些不过够用,一个git status窗口下也能完成很多操作。
lisp
第一次认识lisp,是从它的数学表达式开始,然后它竟然是逆波兰式的,果然名副其实的古老编程语言,瞬间好感提升。
然后写lisp需要写大量的括号,所以好像因此出现一种paredit的编辑模式,减少因为括号太多导致的错误,看了视频介绍觉得很好用,特别适合lisp和html这样的语言。
当然我对lisp的认识只建立在一两个视频上,所以不敢多少。
org-mode
好吧,我还没有尝试过这货,因为我看的那视频那位大神说他弄了几个月才熟悉。但我大概知道他的作用:todo list & gtd & note ;
这样的工具非常多了,我不觉得在编辑上面弄这些是个好的选择。
所谓的操作系统
- 听歌什么的
- 收发邮件
- twitter & 微博
- ...
只要命令行可以做到的,都可以集成到vim & neovim上,实际的确有。
浮云。
总结
程序员的编辑器的要求就是:
- 快速编辑
- 文件定位
- 补全跳转
- 搜索替换
除此之外都是浮云,在编辑器方面emacs永远输给vim。