如何使用Vim/Emacs提高工作效率

6
我过去三年一直使用Eclipse。我在其中进行Java EE(和Spring)开发,到目前为止,我完成了90%的任务而无需使用鼠标。通常我的Eclipse设置如下:
  • Subclipse(或者我使用命令行)
  • m2clipse(Maven Eclipse插件)
  • Data Source Explorer(处理SQL)

我通常在Eclipse中进行以下活动(并希望将其转移到Vim / Emacs中):(这是针对多模块/多项目/多文件夹源代码的):

  • 重构(在整个“打开项目”中重命名方法)
  • 跳转到类实现
  • 搜索特定类或方法的所有用法
  • 通过maven pom.xml更新依赖项(第三方JAR)
  • 跳转到第三方库实现(如果本地存储库没有它,则maven可以下载source.jar,eclipse会将我带到Hibernate实体管理器实现的实际Java代码)。
  • 编写和运行单元测试

上述所有活动都不需要我使用鼠标。有一些活动需要我使用一点点鼠标,例如全局搜索文件。

最近,我想尝试使用VM进行开发。这里的想法是创建一个裸机VM(比如使用Ubuntu Server)并在那里开始编码或使用Putty / SSH。

我有一台MacBook Pro 13“,使用VIM / Emacs或任何轻量级编辑器会很方便。

有两个主要目标:

  • 移动性(旅行和编码)
  • VM作为开发环境

我想使用的工具如下:

  • Linux
  • Ruby,Python,PHP(偶尔甚至可能使用Java,但绝对不是Microsoft .NET)
  • 任何RDBMS
  • 任何构建/依赖系统
  • 单元测试框架

你会推荐什么:VIM?Emacs?其他?其他工具呢?Gnu Screen,ctags等。

帮助我建立我的梦想环境:轻巧,高效,易于复制:)

谢谢!


3
现代化的IDE功能在Emacs中这篇文章介绍了如何使用Emacs来实现一些现代IDE(集成开发环境)的功能。作者讨论了Emacs的一些常用插件和模式,例如代码高亮、自动完成、代码折叠、调试器等等。同时,他还提到了如何使用Emacs编写和运行脚本以及如何与外部工具(例如编译器和版本控制系统)进行交互。总的来说,这篇文章强调了Emacs的灵活性和可扩展性,以及它作为一个文本编辑器和开发环境的强大功能。 - zmf
2
如果你决定使用emacs,我会建议你立即启用的头号功能是ido-mode:http://www.emacswiki.org/emacs/InteractivelyDoThings。没有ido-mode,我发现在文件和缓冲区之间导航非常困难。有了ido-mode,我更喜欢它而不是选项卡设置。我喜欢emacs(这可能也适用于VIM),因为经过几年的练习,我已经达到了使用鼠标甚至10%的任务听起来很痛苦的地步。此时,我在emacs中使用鼠标的时间不到0.1%。即使如此,我的效率仍在提高。 - Wilduck
5个回答

5
如果你问一个涉及到“vim或者emacs”的问题,你永远不会得到一个有用的答案。这是一个没有正确答案的信仰问题!话虽如此,你应该明确地使用Vim! ;-) 但是说真的:Vim更加轻量级,因此它可能更适合你所描述的场景。Vim可以用不同的语言进行脚本编写,你可以在www.vim.org上找到许多有用的脚本。 Emacs比较“重”,但Lisp是一种非常强大的脚本语言。因此,Emacs更像是一个通用工具而不仅仅是一个文本编辑器。类似项目管理的IDE功能是我有时会在Vim中感觉缺失的东西。虽然有一些脚本可以实现,但我不喜欢它们。如果你需要这个功能,我会选择Emacs。

感谢您指出我问题中的问题(vim,emacs)。但让我们进行一次讨论,无论哪个能接近我的当前Eclipse设置就赢了:)。 - xandross
顺便问一下,命令行的Emacs是否支持语法高亮? - xandross
1
@xandross,您所说的命令行是指终端吗?是的,确实如此。 - kindahero

3

我是一个Emacs的支持者(仅在/ etc下编辑配置文件时使用vi)。 我认为,使用Emacs时,你应该每天最多启动一次,并且它与vim非常不同,你应该在你的.emacs文件中进行配置。例如,我使用F12键编译,我的.emacs中有(global-set-key [f12] 'recompile)


2

我是vim爱好者,已经使用它进行Perl脚本编写约6年,并且仍然很满意。所以,在vim中编写任何脚本都应该很容易且有趣。一旦开始学习vim,您肯定会非常喜欢它,因为它拥有许多功能!

我想强调几个vim插件,可以让您感受到IDE的感觉!(但无法使其成为真正的IDE!)

而且我相信vim绝对不需要鼠标!

您可以在这里找到一系列文章中解释的其他功能vim技巧和诀窍(其中一些是我写的)。


1

对于Java开发,Eclipse拥有许多功能,这些功能你可能在Emacs或VIM中会错过。然而,有一个项目可以让你从其他编辑器中访问这些功能。你可能会觉得这对弥补丢失的功能很有帮助。

顺便一提,如果你以Eclipse的思维方式来使用其他编辑器,几乎肯定会感到失望,因为这些编辑器是基于不同的哲学构建的。它们的优势并不在于Eclipse的优势所在。


是的,我听说过eclim,但它仍然在后台运行Eclipse。 - xandross

1
任何一个文本编辑器都需要一定的学习曲线。话虽如此,我已经成功地使用emacs完成了以下与您所要求的任务相符的任务:
  1. 编写PL/SQL并在编辑器中执行它。
  2. 编写、编译、运行Java。
  3. 编辑pom文件。
  4. 在org模式下保持一个相当不错的TODO列表。
您可以在emacs中启动一个shell,这个功能基本上可以满足您所要求的大部分功能(SVN、make/ant/mvn等)。
如果您希望在其中一个编辑器中使用漂亮的Eclipse和Visual Studio功能,例如绿色的JUnit条,我不确定它们是否存在。Eclipse的重构工具也很好用,我不知道emacs有什么可能性。但是,我发现在emacs中,通常有人编写了一些扩展来完成我想要的事情,您只需要找到它并学会如何使用它。我最多只是一个emacs新手,但在小型项目中,我发现它非常高效,而且我几乎不需要离开键盘。
免责声明:(白天是Java/EE/Spring Eclipse开发人员,晚上使用emacs混合Lua和Love框架)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接