使用Vi,Vim或GVim作为IDE

Using Vi, Vim, or GVim as an IDE

我不得不在工作中的大部分项目中使用VS2008,但是每当奇数文本文件需要编辑时,我都使用VIM。

现在我知道有插件和什么不能让Vim像一个IDE一样工作,所以我想知道是否有人真的把它用作一个IDE?

编辑:

对于那些认为你代表大众说VIM不应该被用作IDE的人,请考虑在VIM.org上的官方特性请求列表上,IDE特性是第一个特性请求。


Vim是一款令人惊叹的软件,但由于它的年龄,它也相当混乱。Vi于1976年发布,Vim于1991年发布。例如,VIM提供了很多不同的文本完成方法,从简单的关键字到它的"Omni"完成系统。除此之外,一些插件选择使用内置功能,而其他插件则批量替换。不过,希望下面的建议能帮你开始。好的。用VIM进行IDE

您可能想尝试这个新的vim补丁,它允许vim作为编辑器在Visual Studio中使用:好的。

  • 维维姆

冯德尔

首先,安装VIM的Vundle插件管理器插件!它工作得很好,使管理VIM插件变得容易。处理安装、更新和删除。好的。

例如,您的.vimrc现在只包含:好的。

1
2
3
4
5
" === Plugins! ===
Plugin 'junegunn/fzf'
Plugin 'scrooloose/nerdtree'
Plugin 'w0rp/ale'
...

PluginUpdate命令将安装或更新它们。好的。VIM IDE插件

下面的vim脚本给vim更多的IDE感觉。请记住,VIM内置了大量的特性,因此在加载20个插件之前,请花时间学习这些特性(这是一个持续的过程)。好的。

对我来说影响最大的插件是FZF和ALE。您需要安装FZF和Ripgrep。好的。

导航:好的。

  • FZF-最喜欢的插件,很棒的文件系统导航和文本搜索
  • NERD树-文件系统导航
  • command-t-按文件名搜索要打开的项目,建议改用fzf
  • ctrlp—一种替代命令T、模糊文件和缓冲区搜索的方法。通常较慢,但不需要编译
  • 标签栏-按功能的代码导航
  • 书签-VIM书签(我自己的插件:)

文本完成:好的。

  • 定界-括号、大括号的自动结束。等
  • tcomment-简单注释/取消注释源代码命令
  • Ultisnips-伟大的VIM片段系统
  • YouCompleteme-代码完成,很多功能
  • 新完成-代码完成比YCM稍微简单一些

我个人觉得代码完成太多了,只能依赖于Vim的内置CTRL-N文本完成功能,这取决于您自己,但请记住CTRL-N!VIM的内置完成系统超越了这一点,它具有不同的完成模式,例如使用CTRL-X CTRL-F完成文件名或"omni完成",试图通过CTRL-X CTRL-O提供特定于文件类型的上下文相关完成。Omni完成需要特定于文件类型的插件,Golang的VimGo包支持它。好的。

格式化:好的。

  • 表格-轻松对齐文本
  • VIM环绕-快速环绕一些文本(即括号、标签…)

棒极了:好的。

  • ALE-对许多语言进行实时语法检查,支持VIM 8的新功能,例如异步作业,以确保它在运行时不会冻结VIM。
  • 逃犯-在Vim,diff,责备…等
  • GitGutter-文件的Git提交版本的实时差异
  • 扬克-轻松访问以前复制或删除的文本对象

更好的图形用户界面:好的。

  • 航空公司-更容易阅读状态行和更有用的信息
  • 将vim undo历史可视化为一棵树(我最喜欢的是,确保在vim中打开持久的undo)

配色方案:好的。

  • 日光浴-很棒的配色方案

VIM分布

与其自己进行设置和配置,不如使用下面的项目来使用更像VIM的IDE快速地进行配置。下面的两个项目包括我上面提到的许多插件:好的。

  • 詹纳斯
  • SPF13

不过,我建议你不要使用它们。如果您花时间自己配置VIM,并在交错的过程中安装插件,以便更好地了解每个插件,那么您将了解更多。好的。VIM插件指南

VimAwesome是一个浏览Vim插件并找到有用和流行的插件的好地方。好的。VIM补丁

除了这些脚本之外,您可能还需要查看以下VIM的一些补丁。我没用过,所以质量不太确定,但大部分看起来都很有前途。您可以在这里查看所有补丁,使VIM更像一个IDE的补丁包括:好的。

  • 代码检查-即时代码检查(注意:现在,合成是更好的选择)。
  • 提示-允许使用gdb调试和单步执行vim中的代码。

安装了这些脚本和补丁之后,您应该在VIM中拥有一些与Visual Studio或Eclipse非常接近的特性。好的。好啊。


你也可以反过来使用一个名为viemu的插件。这一个为您提供了在vs-ide中的vi模式,这使同事更容易在您的系统上共同驱动。


标签列表是一个很好的插件——没有它不要离开家。

还可以设置选项卡完成。

如果您的语言得到支持,那么全包是一件很好的事情。

VIM提示1439有一个完整的识别提示。


如果您使用Linux,只需尝试pida。您可以将vim或emacs嵌入其中。许多集成,如文件浏览器、项目结构和控制台,使VIM看起来像Eclipse。imho,这是一个使用VIM作为IDE的简单方法。


我不想因为这个反应而发炎,但我想让你省去一些头痛。这是我给所有在维姆问类似问题的人的相同答案。

VIM不是一个IDE。是个编辑。它从来没有打算成为一个IDE,任何试图使其符合这一点的尝试都只会给您带来问题。有一些插件试图为Vim提供一种类似于IDE的感觉,但是这些插件太可怕了。

另一方面,我确实推荐了一些插件,这些插件将帮助您从VIM获得一些扩展功能。这些可能适合你的需要。

  • 标记列表-非常适合按函数/方法/类导航代码
  • 一个很棒的文件系统导航插件


作为一个IDE,VIM对C和C++有着一流的支持。您甚至有一个带有clewn和gdb的可视化调试器。其他语言,你将不得不做一些调整和摆弄,结果可能达不到你想要的。值得一个小时的尝试,看看进展如何。

我觉得Emacs作为更多语言的IDE做得更好。


在http://code.google.com/p/exvim中尝试exvim这个项目使VIM成为一个多语言开发的IDE。


我单独使用vim-它有一些基本的功能,可以通过^x自动完成,然后使用各种选项(^p表示关键字,^o表示OmniComplete(适用于在Web文件中在HTML、CSS等之间切换)。

它还可以通过以下方式启动命令:!(编译器或其他命令)。

与基本开发的简单、无痛苦的集成,不需要工作区或类似的东西,如果需要的话,还需要文件设置的模型。

编辑:就模块而言,通常有一些模块可以在VIM环境内部或旁边嵌入相关的脚本语言——但是,我不知道类似的.NET框架模块。


有时我会在凯特内部使用vim作为一个IDE,否则我会在vim中打开几个选项卡,这很难更改为。

否则,我会坚持普通的维姆。

kde for windows将允许您在Windows中安装kate。


此外,这些评论还完全取决于它们的撰写年份。所以这些是我对Vim在2018年成为IDE的想法。

语言服务器协议越来越重要,并且源代码图通过其主计划来填充它。

这就是ALE(异步短绒引擎)之所以如此重要的主要原因,因为它实现了LSP。所以它还提供了定位定义、代码完成和悬停信息。我刚开始用它来整理皮毛,我还没有深入研究其他功能,但我认为它有很大的潜力提供很多预期的IDE功能。

但是几乎所有普通的东西,从tim pope+fzf+ripgrep+ale,都会让你成为一个非常强大的编辑。

坦率地说,"一切都是蒂姆·波普"的编辑是一个VIM IDE最好的起点之一(我甚至为此创建了VIM-Tim)。

我唯一不同于大卫·特瑞的绝妙答案的地方是:

  • 基础知识:蒂姆·波普的痴迷是拯救你已经打开的缓冲区的基础。
  • 导航:FZF+Tim Pope's醋+使用缓冲器,因为它们是完全预定的
  • 文本完成:超级选项卡(ALE应该可以用于此操作)
  • 跳到定义:通用CTags(同样,ALE也应该可以用于此),当CTags失败时,ripgrep是难以形容的。

您应该小心安装IDE插件,它们很容易影响VIM的性能。

与其他IDE相比的潜在好处

值得注意的是,VIM允许您灵活地设置代码库。在许多IDE只在项目级别工作的地方,您可以在许多git repos上创建一个父文件夹,fzf和ripgrep非常强大,它们会消耗大量的代码库,并且在搜索时几乎不会减慢速度。使用CTAG,您可以跨回购边界建立索引。这实际上填补了sourcegraph的智能编辑器检查表中的几个不常见的点(我认为vim能够完成大多数当前IDE所做的超越这些点的所有点):

  • Does your jump-to-def work across repository boundaries?

  • Can you search over all of your code and dependencies in one place?

使用VIM的缓冲区可以让您打开100秒的缓冲区,而不会造成UI混乱或性能下降。键入:b some-buffer-text,然后键入t,您就可以轻松地自动完成缓冲区名称。我还使用另一个答案中的以下行,该行允许列出所有缓冲区并打印缓冲区命令,以允许您通过其编号快速切换到另一个:

1
nnoremap <leader>bb :buffers<cr>:b<space>

TimPope最近有一个新的数据库dadbod插件,它提供了与微软数据库管理工作室类似的功能。


我今天在查看O.T.android ndk的东西时遇到了gvide——vim的长期用户,在eclipse中使用了eclim,但坦率地说,我的vim环境是用于编写代码,而不是开发代码。读到不同的曲折使VIM成为一个开发环境真的很有趣,而且GVIDE有一些令人信服的东西。-

http://www.crystax.net/en/gvide