Emacs和Vim之间有什么实际的、客观的区别?例如,使用一个可以做而另一个不行(或者使用一个比另一个更容易做)?为了选择一门课程,我应该知道些什么?


当前回答

Emacs具有Viper模式,因此在某种意义上,它提供了一个超特性集(除了那些在使用Viper和Vimpulse的Emacs中缺少哪些Vim特性?)

vi(和VIM IIRC)的重量较轻(它可以就地编辑文件),但提供的功能较少(子进程通信、扩展语言)。

其他回答

如果您经常从一个站点移动到另一个站点,或者您的工作涉及到登录到生产系统,那么vim就是合适的选择。

默认情况下,所有*nix机器都会安装vi。

大多数sysdamins更喜欢ksh作为默认shell。KSH使用vi(或emacs)命令击键来搜索历史记录并编辑命令行。

如果你不太了解vi,当你登录到一个标准配置的unix机器上时,你就会受到严重的限制。

仅仅因为这个原因,我推荐vim作为你日常的编辑器。我曾经见过emacs爱好者试图在一个基本的unix服务器上修改配置文件。

Vim是一个方便的编辑器,你只需输入Vim的文件名来打开文件,编辑,保存和关闭。

Emacs是一个伪装成编辑器的“操作系统”,你可以评估代码来改变它的行为,并按你的喜好扩展它。在emacs上接收/发送电子邮件的模式类似于操作系统上的电子邮件软件。

当进行简单的编辑时,例如,修改配置文件,我使用vim。

否则,我永远不会离开emacs。

对于我来说,选择使用emacs而不是vim的最大区别是emacs内置的gdb支持。Vim的默认发行版中并没有包含这个功能,而且用于集成gdb和Vim的项目几乎不可能使用MacVim

我一开始是vim的用户,然后我切换到emacs,然后是vim,现在我又在尝试使用emacs。

两人都是伟大的编辑。 如今,两者都是可扩展的 两者都有很棒的插件和社区

作为开发人员,我们输入很多,最后对我来说,在缓冲区和文件中移动是最大的重复任务,所以我想要一个编辑器,我可以快速移动!

再次尝试emacs的动机是,我发现它的Ctrl键比vim更快,而且更容易推理。

在vim中,你有模式,你有插入模式,可视模式,正常模式,当你按下某个东西时会发生什么取决于你所处的模式,这是一种有状态的编辑方式。移动,进入插入模式,编辑,退出插入模式,然后再次移动。如果我错过了ESC按键或类似的东西,我经常会迷失自我。

在emacs中没有模式,基本上你用你的粉色按下Ctrl并键入按键,比如C-x C-f, C-x C-s, C-x C-c。有一些你需要释放ctrl键的键绑定,我讨厌这些键绑定,总是用按下control键的键绑定来替换它们。

我认为emacs方法更快地思考和输入,但是vim有另一个优点,那就是。它的命令是可组合的,它们通常有一个格式。例如,要删除一行,可以使用dd,删除一个单词dw。插件利用了这种感觉,使用vim-surround插件,你可以用ds”(delete surround)删除引号,删除到下一个/ dt/。删除之前的/:dT/,以此类推。所以只要你学会了移动的东西就会变得很有趣。

综上所述,今天我发现emacs键绑定在宏编辑方面更快,而vim命令在微编辑方面更强大

在过去的五年里,我一直在使用vim,所以我的编辑思想主要是关于单词、线条、周围环境、块等。删除这一行,删除引号,替换引号, 删除字在游标,我试图找到emacs移动为那

最后我想说的是,我更关心fzf而不是emacs或vim,我希望有一个完全基于fzf的编辑器

在日常层面上有巨大的区别——Vim(或任何vi变体)本质上是模态的(你进入命令模式,但你不能编辑),而Emacs(以及大多数其他编辑器)不是。

当然,使用菜单之类的东西,你不需要在Vim中实际进入命令模式——首先。但即使使用Vim的一小部分力量,你也会。这是Vim/Emacs争论的核心。

就我个人而言,我还认为Emacs的可扩展性要强得多。你可以找到很多东西的Elisp包。

不过,我很好奇,为什么您考虑学习其中一种而不是更传统的IDE。你为什么要学这个?