Vim缺失的最重要的集成开发环境(IDE)特性是什么?

4

自2001年1月1日起,我几乎专门使用Vim进行编程,我觉得作为一个编辑器/IDE,Vim能够满足我的所有需求。但是我不禁想知道,在过去的十年中是否有一些新的杀手级功能被其他IDE开发出来,使我比使用Vim更高效。所以我问:Vim缺少哪些最重要的IDE功能?


@Simucal - 是的,这取决于所使用的编程语言。对于C++来说,OmniCppComplete效果很好。我还尝试过使用eclim,这个工具能将Eclipse的代码补全功能引入到vim中。 - MichaelM
@Simucal - 请检查vim的最新版本以及其自动完成菜单。我使用的语言无法使用真正的智能感知,因此我无法判断它是否足够好。 - user80168
9个回答

4
  1. 与Visual Studio/Eclipse提供的所有炫酷的集成调试(线程调试等等)
  2. 内联文档支持的自动完成方法/属性
  3. 从编辑器应用程序'内部'构建和运行

3
在vim中输入:make将构建项目,前提是当前工作目录中有一个Makefile。在构建后输入:cw将会显示编译错误/警告列表,你可以按回车键跳转到代码中发生错误的行。 - MichaelM
Vim 确实支持编译和运行 - 试试 :make。 - swegi
广告1 - 从未需要。 广告2 - 很容易。我有自动完成功能,至于内联文档:map <c-h> :!perldoc -f <cword><enter> 广告3 - :help make - user80168
1
+1. 构建和运行是支持的,但自动完成功能不如Eclipse,并且集成调试会非常好,这样您就不必加载一些垃圾IDE来调试代码了。Keil uVision甚至不能被设置为只读模式,所以你最终会在你的代码上留下很多:q符号! - DrAl
1
自动补全是我在Vim中最想要的一个重要功能。虽然Vim中有一定程度的自动补全功能,但上次我尝试时发现它对于PHP来说速度太慢,准确性也不够,这可能与PHP的动态类型以及我没有使用必要的phpDoc样式注释有关。 - too much php
了解:make和:cw很好。谢谢! - psychotik

4

我很喜欢像Resharper这样的工具提供的优秀重构支持和代码提示。虽然正则表达式在修改代码方面非常强大,但是像Resharper一样理解代码在我看来更好一些。

幸运的是,我可以在Visual Studio中同时使用Resharper和Vim,所以我很高兴。


ReSharper可能非常吸引人,但我从未使用过C#。是否有类似的工具适用于其他语言? - too much php
1
Resharper也适用于VB.NET,Java也有类似的工具。我不知道PHP是否有类似的工具(假设您的句柄表示您的首选语言)。 - Brian Rasmussen

3
真正的问题是:VIM有什么是IDE缺少的。

1
一个好的文本编辑器。每次我不得不使用VS或Eclipse时,我发现与vim相比,编辑器非常笨重。当然,其中一部分原因是习惯了vim。 - David Cournapeau
7
模态编辑!大多数命令都非常简单,以至于当我必须这样做时,伸手按F5都成了一项重大的工作。 - too much php
@David - 看看 ViEmu。 - Brian Rasmussen

3

我发现重构是一个非常好的东西。在vim中更改具有大量源文件的Java包名称可能会非常繁琐。


我正在处理这个问题(重构操作很简单,但是这只是一个开始)。我有一个重要的插件更新需要上传。http://code.google.com/p/lh-vim/wiki/lhRefactor - Luc Hermitte

3

最初的重构功能是让我们从Emacs转换到Eclipse的杀手级特性。我已经在Java方面广泛使用Eclipse达6年之久,我期望任何替代品都具备以下功能:

  • 重构:重命名变量、函数、更改方法签名(包括所有调用)。

  • 调试: "您在此处" "当前变量为"以及类似于"转到此对象的定义类"或"转到此对象的实际类型"等等。我相信后者需要在调试器和编辑器之间进行相当多的集成。

  • 调试时更换代码。更改代码,按Ctrl-S,你的调试会话中的代码将更新为你刚刚更改的内容。对于大型程序来说,这是一个杀手级功能。

  • 导航:简单的类层次结构导航(请显示此接口中此方法的所有实现以及类似内容)。

  • Javadoc集成 - Eclipse可以通过将鼠标悬停在标识符上来显示javadoc。

还有一些其他的功能 :)


编辑:我偶尔会在Eclipse内部错过Emacs功能,但Eclipse编辑器已经变得更加强大,所以现在不那么糟糕了。在这方面,每次保存时进行格式化的Save Action是一个杀手级功能。这确保了更改在源代码库中正确显示。


1

在文件中搜索:在大多数编辑器中,有一个单独的窗口用于在文件中进行搜索,同时可以在主窗口上继续编辑。搜索结果会随着发现而更新。即使搜索仍在进行中,也可以通过单击当前结果来查看它,而无需等待整个搜索完成。(而在cim中,必须等到vimgrep/ctags完成才能查看结果)

这对于搜索大量文件特别有用。

因此,基本上就像在后台搜索并同时显示结果,可以单击结果以同时查看它们。 (类似于Microsoft Visual Studio 6.0的功能)


在 Vim 中,"点击"并不是它的强项... 因为离开键盘并不是很高效... - João Portela
“点击”只是举例而已。主要问题是事情不能同时完成。 - Vicky

1
我错过的是代码自动补全和调试。这就是为什么我开始使用 eclimhttp://eclim.sourceforge.net/index.html,这样我就可以发挥 vim 的优势,并在实际需要时使用 eclipse。你也可以试试 - 这是一个绝妙的组合。

0

Vim没有任何一个IDE所拥有的功能缺失。我们唯一可以争论的是:Vim需要定制,而IDE则是开箱即用。

让我评论其他答案以及如何解决这些“需求”。

  1. 构建

如上所述,使用:make并学习如何自定义它。

  1. 重构

使用非常著名的ropevim(适用于Python),它是一个很好的重构工具。你不需要更多了。还有许多其他工具,可以搜索你所使用的语言。

  1. 自动完成

我使用这个代码片段和映射到TAB键(我认为supertab插件可以实现)

" python stuff
python << EOF
import os
import sys
import vim
for p in sys.path:
    if os.path.isdir(p):
        vim.command(r"set path+=%s" % (p.replace(" ", r"\ ")))
EOF

" tags for python libs
set tags+=~/.vim/tags/python.ctags

autocmd FileType python,mako set omnifunc=pythoncomplete#Complete
autocmd FileType html,mako set omnifunc=htmlcomplete#Complete
autocmd FileType html,mako set omnifunc=htmlcomplete#CompleteTags
autocmd FileType mako set filetype=mako.html.js
  1. 帮助系统

Vim的帮助系统非常完善,你只需要学习它的系统。它有自己的约定,如何组织事物。

  1. 调试

我不知道除了Python之外的其他语言,但运行pdb和!python%可以完成它的工作。


0

这就像是一个老问题:"苏格兰裙下穿着什么?"

回答:"什么都没有。一切都在完美运转中!"

但说真的,我希望看到更直观易用的帮助系统被添加到Vim中。


经过9年的使用,我已经熟悉了Vim的帮助系统和其中大部分内容,因此我不会仅仅因为另一个编辑器有更好的帮助系统就转换到它。我不确定你的苏格兰裙与问题有何关系。 - too much php
这只是个“玩笑”,孩子。但正如你所说:Vim 的帮助系统没有问题,它完美地工作着。只不过需要九年时间来学会它 ;-D(这也是个玩笑)。 - pavium

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