Vim 是一款神奇的软件,但因其年代久远,也相当混乱。 Vi
发布于1976年,Vim
发布于1991年。例如,Vim 提供了很多不同的文本补全方式,从简单的关键字到其 "omni" 补全系统。除此之外,一些插件选择使用内置的功能,而另一些则完全替换它。希望以下建议能为您带来启示。
您可以尝试使用 Vim 的这个新补丁,它允许将 Vim 作为编辑器嵌入到 Visual Studio 中:
首先,为 Vim 安装 Vundle 插件管理器插件!它非常好用,可以轻松管理 Vim 插件。 它可以处理安装、更新和卸载。
例如,您的 .vimrc
文件现在只需包含:
" === Plugins! ===
Plugin 'junegunn/fzf'
Plugin 'scrooloose/nerdtree'
Plugin 'w0rp/ale'
...
执行 PluginUpdate
命令可以安装或更新插件。
以下 Vim 脚本使 Vim 更具 IDE 感觉。请记住,Vim 内置了大量功能,因此在加载 20 个插件之前,请花时间学习这些功能(这是一个持续的过程)。
对我来说最有影响力的插件是fzf和ALE。你会想要安装fzf和ripgrep。
导航:
文本自动完成:
我个人认为代码补全过于繁琐,只依赖 Vim 的内置 CTRL-N
文本补全功能。你可以自行选择,但记住 CTRL-N
! Vim 的内置补全系统还包括不同的补全模式,例如使用 CTRL-X CTRL-F
的文件名补全或“omni补全”,后者尝试通过 CTRL-X CTRL-O
提供特定于文件类型的上下文相关补全。Omni补全需要文件类型特定的插件,例如针对 Golang 的 vim-go 包支持它。
格式化:
太棒了:
配色方案:
与其自己进行设置和配置,您可以使用以下项目来快速使用更像IDE的Vim。下面的两个项目包含我上面提到的许多插件:
我建议您不要使用它们。如果您花时间自己配置vim并逐个安装插件以充分了解每个插件,您将学到更多。
VimAwesome可以是浏览Vim插件、查找有用且常见的插件的好地方。
除了这些脚本,您可能还想查看一些Vim的补丁程序。我没有使用过它们,所以不确定它们的质量,但它们中的大多数看起来非常有前途。您可以在此处查看所有补丁程序here,使vim更像IDE的那些是:
安装这些脚本和补丁后,您应该会拥有与Visual Studio或Eclipse功能非常接近的Vim。
您还可以选择使用一个名为 viemu 的插件来实现相反的功能。该插件可在VS IDE中提供vi模式,使得同事在您的系统上协作更加容易。
Taglist插件非常棒,不要忘记使用它。
您还可以设置标签补全,点击这里了解如何设置。
Omnicompletion非常好用,如果您的语言得到支持,效果会更出色。
此外,VIM tip 1439提供了一些IDE化的技巧。
VIM作为IDE对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框架模块。
这些评论也很大程度上取决于它们所写的年份。因此,以下是我对2018年Vim作为IDE的想法。
语言服务器协议变得越来越重要,Sourcegraph通过他们的总体计划使其流行起来。
这就是ALE(异步Linting引擎)如此重要的主要原因,因为它实现了LSP。因此,它还提供跳转到定义、代码完成和悬停信息。我只是开始使用它进行linting,还没有深入研究其他功能,但我认为它有巨大的潜力,可以提供从IDE中期望的许多功能。
但基本上,Tim Pope + FZF + Ripgrep + ALE提供的所有通用功能都将为您提供非常强大的编辑器。
坦白地说,一个“Everything Tim Pope”编辑器是你可以拥有的最好的Vim IDE起点之一(我甚至专门为此创建了vim-tim)。
唯一与David Terei的优秀答案稍有不同的地方:
安装IDE插件时要小心,它们很容易影响Vim的性能。
值得注意的是,Vim允许您在设置代码库时具有很大的灵活性。许多IDE仅适用于项目级别,而您可以创建跨越许多Git存储库的父文件夹,FZF和Ripgrep非常强大,它们将消耗巨大的代码库,并且在跨它们进行搜索时几乎不会减速。使用Ctags,您可以在存储库边界上建立索引。这实际上填补了Sourcegraph智能编辑器清单中的一些不常见的要点(我认为Vim能够满足大多数当前IDE所做的除此之外的所有要点):
您的跳转到定义是否跨存储库边界工作?
您是否可以在一个地方搜索所有代码和依赖项?
使用 Vim 的缓冲区可让您打开数百个缓冲区,而不会使界面混乱或降低性能。键入:b some-buffer-text
,然后按 Tab 键可轻松自动完成缓冲区名称。我还使用以下行从另一个答案中获取,它允许列出所有缓冲区并打印缓冲区命令,以便您可以通过其编号快速切换到另一个:
nnoremap <leader>bb :buffers<cr>:b<space>
Tim Pope最近开发了一个新的数据库dadbod插件,它可以让你拥有类似于Microsoft的数据库管理工具的功能。
set showbreak=...
或类似的变体。 - Greg Nisbet