Vim和Emacs都用过两年以上的人,说说它们使用起来感觉最大的区别是什么?
两个同时在用,先用了 Vim(2009年) 后用 Emacs(2013年)。
用 Emacs org mode 写文档、编程练习、发博客、做时间管理。
现在用 Vim 和 VS Code 写产品代码(设置了 Vim 按键绑定),之前也用 Emacs 写。
总体而言,如果你是程序员,尤其是后端。 我建议你一定要掌握 Vim,它可以极大提高代码键入、修改、光标移动效率。 Vim 从嵌入式设备到桌面发行版 linux,几乎随处可见,并且几乎所有主流的 IDE 都能支持 Vim 按键绑定。我也希望你能掌握 Emacs,尤其是 org mode(当然 Emacs 还有很多其他强大的功能,但 org mode 可以成为你使用 Emacs 的起点),它能让你体会到使用纯文本的方式编写文档(含流程图)和做时间管理的乐趣。
下面我说说 3 点比较显著的差异:
1. 键入:Vim 因为有 3 种不同模式,在进入 Normal 和 Visual 模式后,快捷键都可以非常短。Emacs 没有像 Vim 的模式概念,所以更多的需要使用 Control、Meta 等组合键,相比 Vim 会可能需要按更多按键(这并不代表 Emacs 键入速度会比 Vim 慢,只要熟练掌握,速度没什么大差别)。Emacs 使用 Evil Mode 后,也可以使用 Vim 的按键绑定方式,例如 Spacemacs 配置。
2. 扩展:Vim 使用 VimL 独创的语言开发插件(NeoVim 可以支持各种编程语言写插件)。Emacs 使用 lisp 开发插件,相对而言编写会稍微困难一些,因为需要额外学习 emacs lisp。两者都庞大的社区,有非常丰富的插件可供使用。
3. 体积:Vim 相对而言,可以比 Emacs 小很多。在许多 Linux 发行版 或嵌入式 Linux 均带有 Vi 或 Vim,但不一定有 Emacs。
VIM 的強項是「十指不用離開鍵盤主要區」,熟練的話,編輯效率很高。常見批評是,對初學者很不直覺。此外, VIM 比較像「文書編輯器」,而非整合環境,所以許多 IDE 的功能要設置(譬如程式碼跳轉)。
Enacts 則可以視為「桌面環境」(比 IDE 只限制在開發用途的範圍更廣),而非單純的文書編輯。甚至可以在裡面使用開瀏覽網頁、收發信件。
做系统管理的工作人员必用vi,做开发的喜欢emacs多一些,以我来看emacs就是早期积累很久拥趸很多,实际上学习必要性不高,现代主流编辑器太多了,远远优于emacs,新人没必要浪费时间
厉害的程序员到底用不用IDE?
IDE的作用主要是辅助的作用,一方面是协助组织代码,形成一个工程;另外一方面是是进行提示,减少程序员的记忆负担。
所以,程序员使用IDE主要是为了提高开发效率。至于厉害的程序员到底用不用IDE,那要看他是否需要这个来提高效率了。
举几个简单的例子,必然Linux内核开发人员。这些程序员通常是在Linux平台的命令行开发的,linux命令行状态其实是没有一个成熟的IDE产品的,大多数情况是通过vim来进行开发。而Linux内核开发人员很多是比较厉害的,比如Linus等。
即使不是Linux内核代码。很多Linux普通程序,也是可以通过vim进行开发,使用Makefile进行管理的。因此,这些程序的开发人员也是不太需要IDE的。
另外就是java程序员,比如开发一些Web后端服务的程序员。由于Java本身有配套的IDE,因此这些程序员非常习惯于使用其进行工作。那么开发J***a程序的牛人通常是使用IDE的,但也不一定。
综上所述,牛逼的程序员用不用IDE其实没太大的意义。更多的跟其工作的和环境有关系。