Emacs和Vim之间有哪些实际的、客观的区别? 例如,其中一个可以做到但另一个却无法做到(或者使用其中一个更容易)?我该了解哪些信息才能选择学习其中之一?
:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u
或者
:%!jq .path.to.stuff
:%!<command>
单独运行,其中%
表示整个文档,但也可以在选择、选定的行等上运行。在这里,gron的output
可以用作jq
路径。我真正想强调的是: "许多人发现同时掌握两种工具很有价值"。许多经常同时使用vi和Emacs的人往往用它们来处理不同的事情,并且发现了同时掌握两种工具的价值。
通常来说,vi最适合处理小型任务——快速回复邮件、对系统配置进行简单调整等。当你在使用一个新系统(或者远程连接到网络上的某个系统)而没有你的Emacs自定义文件时,它特别有用。
在需要处理复杂任务、修改多个文件并在会话期间使用其他程序结果的扩展编辑会话中,Emacs能够充分发挥作用。对于使用控制台上的X界面(这在现代Unix系统上很普遍)的程序员来说,通常会在登录后不久启动一个大窗口的Emacs,并永久地保持运行状态,可能会访问数十个文件,甚至在多个Emacs子窗口中运行程序。
对我来说,Emacs 的优点如下:
Emacs的好处
Emacs具有非模态界面(默认情况下)和模态界面(例如,它可以通过Evil、Viper或Vimpulse来模拟vim和vi)。
最常移植的计算机程序之一。它在文本模式下运行,并在广泛的操作系统中包括图形用户界面,包括大多数类Unix系统(Linux,各种BSD,Solaris,AIX,IRIX,macOS等),MS-DOS,Microsoft Windows,AmigaOS和OpenVMS。Unix系统,无论是免费的还是专有的,通常会将Emacs与操作系统捆绑在一起。
Emacs服务器体系结构允许多个客户端连接到同一个Emacs实例并共享缓冲区列表、kill ring、撤消历史记录和其他状态。
普遍存在的在线帮助系统,可实时记录键绑定、函数和命令。
可扩展和可定制化的Lisp编程语言变体(Emacs Lisp),具有以下特点:
强大而可扩展的文件管理器(dired)、集成调试器和大量开发工具等。
每个命令都是一个Emacs Lisp函数,使得命令能够DWIM(根据过去的操作和文档状态自动响应),例如,一个切换或拆分窗口命令可以在存在其他窗口时切换到另一个窗口,或者在需要时创建一个新窗口。这减少了用户需要记住的按键次数和命令数量。
“OS内部的OS”。Emacs Lisp使得Emacs远远超出了编辑功能的范畴。即使是基本安装也包含几十个应用程序,包括两个Web浏览器、新闻阅读器、多个邮件代理、四个IRC客户端、ELIZA的一个版本以及各种游戏。所有这些应用程序都可在Emacs运行的任何地方使用,具有相同的用户界面和功能。从24版本开始,Emacs包括一个软件包管理器,使得安装其他应用程序(包括备选Web浏览器、EMMS(Emacs多媒体系统)等)变得容易。还提供了许多编程的软件包,包括一些针对特定语言/库组合或编码风格的软件包。
类vi编辑器的好处
我选择使用emacs而不是vim的最大区别在于emacs内置了对gdb的支持。Vim在其默认发行版中没有这个功能,因此将gdb与vim集成的项目几乎无法在MacVim上实现。
Spacemacs结合了Emacs和Vim的优点,使您的生活和工作更加轻松。最好的编辑器既不是Emacs也不是vim,而是Emacs和Vim。
vi(和我所知道的VIM)更轻量级(可以直接编辑文件),但提供的功能较少(子进程通信、扩展语言等)。
Emacs实际上是一个做 所有事情 的程序,而vi(m)只是一个编辑器。如果你正在编辑文本,它们都很好用,但我更喜欢emacs,仅仅因为我必须将一个手指移开主键区才能移动光标,并且在命令模式下经常输入错误的内容。如果你没有这个问题,vi(m)可能是适合你的编辑器。
,销售话术
是这样说的<fsbot> 我们不会撒谎。Emacs 不好用。我们中的一些人能忍受它,但我们不能告诉你你是否能够。试试看,自己判断吧。
- SilexPAGER=cat man
,那么 man 将直接在屏幕上显示文本。 - S.S. Annei,esc,wq
即可。 - JL Peyret