我使用IDE(Eclipse)开发软件。为什么要切换到vim或emacs?[关闭]


31

我的日常工作是Java / Web开发人员。我已经使用Eclipse大约5年了。我认为它很棒,而且我也将Webstorm用于javascript和html / jsp。

我有时需要将ssh放入服务器并弄乱配置文件;为此,我使用vi,这让我很痛苦。我必须建立一个列出语法/命令的网页:按Escape键,然后按asterix键,转三圈,然后将文本输入到光标上方两行。这对我来说太不直观了,我想像任何在八十年代后期长大的人。

这是我认为eclipse非常出色的主要原因(并且我假设使用其他IDE),并且不切换到emacs和/或vim。

  • 突出显示错误,无需重新编译项目。
  • 代码协助。
  • 重构。
  • 开幕电话hiearchy /开幕宣言。
  • 与源代码控制完全集成。
  • 包含调试器。
  • 第三方插件的可用性-例如findbugs / checkstyle。

我听到的论点之一是,使用emacs / vim可以创建自己的插件-很好,但是您也可以在Eclipse中实现。但是您不需要,因为一切都已经存在!就像说买这辆半成品车一样,您可以自己制造其余的。

人们为什么使用emacs / vim?使用它的人是否实际上在大型组织中从事复杂的面向对象的项目?

切换到vim / emacs的原因是什么?如果我换班,生产率将如何提高?


1
您能改一下标题吗?这没有任何意义。
Vetle

@vetler更好吗?
NimChimpsky 2010年

5
我通常使用nano而不是vim,仅仅是因为我使用CLI的频率不足以了解所有vim命令。如果您仅偶尔使用它,我想一​​些简单的事情nano会更好地为您服务……
Dean Harding 2010年

好多了!:)
Vetle

很久以前,当我被引入Unix时,我同时尝试了vi和emacs并最终使用了emacs,因为vi看起来是如此的奇怪和不明显(我的意思是,将文本附加到行尾很麻​​烦,肯定有问题)。vi的命令/编辑模式对我个人不起作用。
Skizz 2010年

Answers:


36

使用适合您需求的任何工具。如果您必须登录到远程服务器并编辑配置文件或类似文件,那么了解VIM或Emacs是一件好事。我对VIM相当了解,但是我不会用它在Java中进行开发。这就是Eclipse,Netbeans等的用途。


5
@NimChimpsky我将emacs用于某些语言,例如C,ruby,python,haskell。但是对于Java或C#,我认为最好使用IDE。在我的工作中,我将C#与VS结合使用。只需使用您觉得效率更高的工具即可。
hiena 2010年

8
有趣的是,如果您问某人“为什么要学习vi”,答案总是“某天也许您必须登录到远程服务器并编辑一些配置文件”。我想知道实际上有多少开发人员必须这样做。
奥利弗·韦勒

2
PS:我个人喜欢vi,但不是因为我认为它是世界上最好的编辑器,而是因为它使我感觉很出色:-)。
奥利弗·韦勒

2
@Helper方法:我肯定必须时不时地这样做!除非您严格在MS环境中工作,否则它一定会发生。
user281377 2010年

1
要在配置文件中进行少量编辑,您当然不需要Emacs或Vim,尽管它们很好,但是不值得花精力学习在哪里可以使用Nano。
安托

39

Emacs和Vi仍然占有一席之地。

  • 它们在Unix和类似Unix的环境中无处不在,并且可以安装在大多数其他流行的平台上。

  • 它们非常流行且稳定,因此从长远来看,一旦学会,它们会有所回报。

  • 它们在文本终端上运行,因此您可以在telnet和ssh会话中使用它们。

  • 它们提供了多种语言的编辑模式和语法突出显示功能,包括非常新的和非常罕见的语言。(这是我最喜欢的优点之一。)

但是,了解这些程序的关键是要知道它们最初打算解决什么问题。对于Vi,这是通过终端连接编辑文本文件的速度低至300 Baud。在那种环境下,如果可以避免的话,您将不希望显示菜单或从根本上更改屏幕内容。

Emacs旨在用于更快的环境中。它的优势在于它只能加载一次,并且永远不会退出。用户可以不离开而完成Emacs所需的任何其他任务,而且通常比他们必须从命令行完成时更友好。人们没有打开Emacs窗口的图形化桌面环境。Emacs允许用户仅需敲击几下即可完成几乎所有正常任务(以及许多奇怪的任务)。任何未内置的内容都可以编写脚本。

自引入这些程序以来,人们的需求显然已经发生了很大变化,但是它们仍然具有真正的优势。我已经学习了两者的基础知识,并每周使用它们。不过,我认为他们的优势常常被夸大了。他们已经取得了传奇般的地位,以至于人们不承认自己的弱点,相反,如果Emacs / Vi不能使他们的工作效率超过Eclipse或Visual Studio,他们往往会认为自己做错了。

现在到了重点。

Java是一种流行的语言,在Eclipse中提供了出色的支持,您很可能正在现代操作系统上开发代码,该代码使您无需通过IDE即可快速完成常见任务并编写其他脚本。我认为切换到您没有意义。


对于稀有语言+1,我要补充一点,动态语言和很难解析的语言在emacs上也没有太大优势,但是IDE不能比emacs带来太多优势
jk。

16

我已经使用emacs超过5年了。我无法再告诉您我正在使用的按键组合,我的手指只能记住它们,而只能看着键盘来看看我的手在打字。

几年前,我开始使用Eclipse,并且没有机会免费回到emacs。对不起的肌肉记忆,即使您想念年纪的人C-x r SPC 1,Eclipse也使我的工作效率提高了,这很重要。

不,我不认为您应该切换,但是您应该花几个小时来学习vim的基础知识,这样您就不必再查找了。


您能否详细说明在Eclipse中比在Emacs中可以更快地完成什么工作?
Gordon Gustafson,

1
如今,我不再认为Eclipse这么好。但是,在重构方面,它仍然远远超过了emacs;事实上,它了解编程语言的语义,这使得搜索等变得更加容易。
Martin Wickman

7

为什么要切换到vim或emacs?

最有可能的是,您不应该切换。Vim的是一个优秀的,功能强大的文本编辑器,但它不是一个IDE的替代品,而且不应该! Eclipse非常擅长于其特定于IDE的事物,而vim非常擅长于其特定于文本编辑的事物。每个人都有自己不同的重点。

我知道有些插件可以扩展vim的功能,以便它可以执行IDE可以执行的许多特定于IDE的事情。但是它仍然不是vim的主要优势,IDE几乎总是可以做得更好。因为那是他们关注的重点。

我在日常工作中要做的是同时使用 Visual Studio和vim编辑C#。这对我来说非常有效,而且我绝不会割断其中一个完全依赖另一个。

就emacs而言,我不是专家,但是在Java方面,我认为它不能与Eclipse的IDE功能竞争(如果我错了,请纠正我)。如果您使用Lisp开发,则可以肯定一个出色的IDE,但是我认为它对Java的支持不同。

因此,如果您希望将更强大的文本编辑器与Eclipse一起使用,那么我绝对建议您学习vim或emacs。但是作为补充,而不是替代。从长远来看,即使它们都没有特别容易学习的曲线,它也确实可以带来回报:)

这里是一个很好的稍长阅读有关VIM的优势。这是您可以做的一些不错的技巧的列表


6

基本上,请阅读文档(PDF)以了解Emacs为什么功能强大。了解Lisp之后,为其编写扩展几乎非常容易(我有几个源代码控制工作流和部署,这些脚本和部署是通过我自己编写的名为add-on的脚本编写的employer-mode)。根据您上面列出的内容;

  • 突出显示错误,无需重新编译项目。并非对所有语言都有意义。您可以轻松地将REPLs多种语言集成到其中。现在,我有rubypythonhaskellcommon lispschemeerlang所有挂钩到Emacs。顺便说一句,JavaScript插件js2-mode具有完整的增量“编译”功能,因此它会为您突出显示诸如语法错误之类的内容,因此当然有可能,但并非规范
  • 代码协助。有一个名为的插件autocomplete.el,我相信,请检查Emacs Wiki
  • 重构。我认为您的意思是“自动重构”,并非在所有语言中都有意义。可能有些人存在,但我不知道。
  • 开幕电话hiearchy /开幕宣言。
  • 与源代码控制完全集成。它具有git-mode从Emacs 22.3 开始的内置功能,不确定其他源代码控制
  • 包含调试器。这里是每种语言的基础。通常,如果它具有REPL集成,那么它也具有Emacs调试器,但是不是通用的
  • 第三方插件的可用性-例如findbugs / checkstyle。不知道这些特定的内容,但是有很多附加功能,从为什么这个基本包装没用到完全无聊

就是说,如果您不喜欢Lisp,并且不想学习它,那么我就不能诚实地推荐Emacs。从中获得的收益是学习工具制作和应用这些原理来提高自己的生产率,而不是获得一堆现成的mod并将它们串在一起。


我需要使用更方便的Haskell编辑器来学习emacs或vim(我更喜欢emacs;))VS非常适合C#,F#等,但是缺少适用于大多数较小语言的优秀编辑器,因此emacs非常有吸引力作为通用工具。
CodexArcanum 2010年

至少在Emacs-land CEDET中,cedet.sourceforge.net(Emacs开发环境工具的集合)确实模糊了文本编辑器和IDE之间的界线。它主要针对C / C ++(及其他),并提供诸如项目浏览器(和自动生成Makefile),代码完成,代码辅助(在光标处显示函数原型),跳转到var / function的其他用途,自动等功能。 gen构造函数/析构函数等。Emacs的大规模可扩展性支持这种工具。
克里斯,2010年

3

我在这里看到两个选择:

  • 改用Nano-这与Windows for Linux中的记事本完全一样。不需要热键组合,您只需键入即可,nano somefile.conf并且您拥有一个不错的编辑器。您甚至可以添加语法突出显示
  • 将程序保留在本地并通过SCP同步到服务器-当我需要在小型网站上工作但没有足够的资源在本地运行apache时,可以执行此操作。我只是启动WinSCP,启动我想要的目录,然后使用“保持远程文件为最新”。变化通常以秒为单位
  • 使用编辑器/ IDE中的插件可直接“使用”远程文件-在关心版本控制之前,我只是启动了Notepad ++(我喜欢的编辑器)并使用NppFTP来处理文件。NppFTP比WinSCP选项更快,因为Npp会在保存文件时立即告诉它,文件会立即上传。但是,正如我所说的那样,您没有进行版本控制。我确定有一个可以使用的Eclipse插件

希望这可以帮助


纳米+1,一定要喜欢它。
将军

+1 Nano很棒。如果我在使用vi经历了无数年的痛苦之后才知道这一点。
奥利弗·韦勒

2

就个人而言,我喜欢Vim,因为它在编辑文本方面非常擅长,即非常符合人体工程学(键绑定不会使我的手承受太大的压力,并且我也不需要太多地使用鼠标)并且一旦掌握了窍门就可以高效使用(当然,这对于初学者来说不是最直观的编辑器,这将需要时间和耐心)。

但是,由于具有许多易于使用的功能,因此我更喜欢将Eclipse用于大规模Java开发。当然,有些插件可以使Eclipse更具容忍性。


1

如果您对Eclipse感到满意,请不要切换。

如果可以在任何需要的地方使用Eclipse,请不要切换。

如果您的项目/公司几乎全部使用Eclipse,请不要切换。

如果您仅很少需要其他东西,请为其中一个编辑器打印一份备忘单,并在需要时将其从抽屉中拉出,然后重新使用Eclipse。

在(SO)上查看(相同)问题:https : //stackoverflow.com/questions/1346820/what-are-the-efficiencies-afforded-by-emacs-or-vim-vs-eclipse

至于回答,“使用它的人实际上在大型组织中从事复杂的面向对象的项目吗?” -戴上帽子,但答案是肯定的。我从事的项目涉及数千万行代码,这些代码用于设计运行用于询问此问题的计算机的CPU的关键路径。人们尝试了Eclipse,但发现它太慢且笨拙(尽管,当然,我们没有使用Java)。


1

emacs和vim都是可配置且功能强大的编辑器,一旦掌握了基本概念,两者都将大大提高生产率。

Vi赢得了本质上基于集合的操作。例如,在类定义中将“ foo”的所有实例更改为“ bar”是一种方法。

Emacs同样强大,但是您必须学习Emacs Lisp才能充分利用它。

无论哪种情况,只有计划使用emacs或vi进行所有操作时,才值得切换。


1

最好的工具(短期内)是您精通的工具。

人们使用30年以上的技术是因为他们精通该技术。他们围绕这些工具建立了工作流程和习惯。如果您更熟悉像Eclipse这样的现代IDE,则没有太多理由进行切换。学习如何更有效地使用Eclipse可以节省您的时间(例如,使用Mylyn)。


1

我目前正在尝试从NetBeans切换到vim。学习vim需要时间和实践,但是我看到了它的优势,在某些情况下,我们称其为“ GUI编辑器”。

但是,与您不同,我主要在编写Ruby,并且不需要NetBeans和Eclipse提供的所有代码生成,自动完成,重构我的代码黑魔法。如果我在编写Java或C#代码,那我绝对不会尝试进行切换。


我已经使用vim多年了。它与Ruby配合使用非常好,一旦您掌握了学习曲线,便会喜欢它的效率。
拉里·科尔曼

1

作为emacs的长期用户,我觉得emacs在编辑和开发环境中相当舒适(并且在某种程度上,它还与构建过程,版本控制,快速的上下文相关搜索等集成在一起,因此我认为这符合条件)作为“ IDE”)。

我对使用vi和类似vi的编辑器也非常满意(我开始使用ed,因为我认为emacs太复杂了;回想起来这是倒退的,但这确实为我以后学习vi奠定了坚实的基础)。我主要将vi用于“小型快速编辑”,主要用于未安装emacs的远程计算机上。

对于您的“我有时偶尔需要进入服务器并弄乱配置文件;为此我使用vi”方案,我建议使用一小套命令和一些关于vi的一般想法:

  • Vi不是模态的,它具有“ a”(附加),“ A”(附加在行尾),“ i”(插入)和“ I”(在行首插入)命令,将文本插入作为参数并用Esc表示“命令结束”
  • h,j,k和l是移动键。它可以使用箭头键起作用,但是由于典型的VT样式“我是箭头键”序列以Esc开头,所以这会破坏您没有想到的text-insertion命令
  • linenum将您移到linenum行,第1行是最上面的行,第$行是最下面的行
  • 是“重复最后一个命令”命令(请参阅第一个项目符号点)

“我可以放心地编辑文本文件,但我可能没有效率”,花了大约一两个小时的时间才可以玩vi,这与您可能需要的一样好。 。失败的话,任何不喜欢在制表符和空格之间进行自动转换的编辑器都应该“足够好”以达到您的目的。如果您所有的远程服务器上安装了Eclipse ,那么我认为使用它并不是一个大问题。


为什么要下票?
Vatine

1

我是一个Emacs家伙。我在所有编程中都使用了它,并积极鼓励我的同事也使用它(他们也积极地忽略了我)。我发现它比任何IDE都更具生产力,而且我永远都不会改变。

除非我正在编写Java或C#(而且我想这个类别中还会有其他语言)。他们拥有如此庞大的带有长名的资料库,以至于在尝试记住所有内容时完全失去了使用Emacs所获得的收益。

我当然鼓励您尝试 vim和/或Emacs。但是您可能最终会回到Eclipse for Java。


0

我对可用的各种UNIX编辑器没有任何问题,但是我只是在抗议下使用它们。正如我所说,不是因为我与他们有问题,而是因为如果我必须使用它们,则意味着我们的部署过程在某种程度上缺乏。

这可能应该得到更多的信息:我在大型电子商务解决方案上工作,所有控制我们系统运行的事物都是由一键式构建/部署过程生成的。我们有一系列的测试环境,因此在任何给定的时间,我都可以通过Eclipse进行更改,将其检入cvs并触发构建/部署以证明我的修复程序已经起作用。所以-如果我在'vi'中乱搞,那是因为我们等不及部署的1小时周转时间,或者是因为部署不覆盖我正在编辑的文件,因此需要扩展才能执行因此(否则,下次有问题的文件需要更改时,我将在vi中进行黑客入侵)。


0

就个人而言,这两个程序都使我无所适从。Eclipse的问题在于,当您处理大型项目时,Eclipse的运行速度很慢,这是因为它没有执行“ DGLP索引”或其他任何操作。要刷新您的存储库?有15分钟?哦,那是个好主意,在这里Ctrl-C一些文本,然后在某处Ctrl-P,但不是去想要的地方,而是打开一个完全不同的文件并粘贴到其他东西上,而您却想知道wtf是否在那里首先。哦,我是否提到在VPN上的大型项目中使用Eclipse?几乎是不可能的。

至于vim,假设您知道许多完全没有意义的按键组合,使它发挥作用,并且很快,如果您偶然发现自己处于未知模式,它的运气很好。同样,使用vim,您几乎必须先了解整个项目的目录结构,才能打开正确的文件。Vim的主要优点是,理论上您可以更快地创建代码,因为它具有所有键,但实际上我并不在乎我要写多少文本,它的大小与质量无关紧要,而取决于文本的质量代码需要连续几个小时盯着数十个文件,直到您弄清楚要键入的正确内容(通常很短)。

我希望有人可以编写一个命令行程序,例如vim,实际上在侧面具有像eclipse这样的目录结构,或者您可以扩展/折叠或打开文件的目录结构。有人知道这样吗?


3
您可以在缓冲区中打开一个目录,它将在目录中列出文件。将光标移到要编辑的文件上,按回车键,它将打开该文件。各种vim插件(如NerdTree)提供了更复杂的功能,例如自动分割窗口,在一个窗格中打开文件,在另一个窗格中保留目录树。vim和emacs的一般困难不是缺少功能,而是不能通过浏览菜单轻松发现这些功能,您必须阅读帮助文档。
查尔斯E.格兰特

答案的最后一部分应该是另一个问题。
Matthieu

当您使用“无意义”的作品来描述按键组合时,您会成为业余爱好者。当插入vim时,书呆子树也会做您要描述的事情。
阿鲁纳夫·桑尼亚

-1

如果您对VIM或EMACS不满意,则可以在该计算机上寻找其他文本编辑器。可能会有某种形式的nedit或gedit或您可以使用的某种形式,它们将具有更熟悉的命令(例如,ctrl x,c,v和s可以完成您所期望的操作)。

您的发行版上可能有两个以上选择,值得一看。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.