【问题标题】:using vim as a c++11 IDE使用 vim 作为 c++11 IDE
【发布时间】:2014-04-19 20:44:46
【问题描述】:

我在 Vim 中设置我的开发环境已经有一段时间了。由于我所有的项目都是在 C++11 中,我发现了一些让我的生活更轻松的插件,几乎和 Intellij 和 Java 时代一样好。但是,仍然缺少一些东西。

我想念的主要功能是重构实用程序(跨项目重命名,将代码重构为函数/类,删除类,...)。关于如何在 vim 中获得此类功能的任何建议?

我正在使用以下插件:


gmarik/vundle
Valloric/YouCompleteMe
一个.vim
wincent/Command-T
DoxygenToolkit.vim
scrooloose/书呆子
Godlygeek/表格
tpope/vim-sensible
tpope/vim-unimpaired
tpope/vim-endwise
tpope/vim 逃犯
jeffkreftmeijer/vim-numbertoggle
Lokaltog/vim-easymotion
rstacruz/sparkup'
Mizuchi/STL 语法


如果你想了解完整的细节,这里是我的 .vimrc(请随意在要点中贡献它):

https://gist.github.com/MauricioCarneiro/9547864

【问题讨论】:

  • 老实说,为什么不自己破解呢?良好的学习经历。也许拿起 romainl 的回答中提到的项目并更新它。

标签: c++ vim c++11 intellij-idea


【解决方案1】:

Refactor 是 vim.org 上唯一的 C++ 重构插件。不过,它的最新更新是从 2007 年开始的,所以我不确定它是否适用于 C++11。

您也可以尝试Eclim, 一个 Eclipse/Vim 插件,让您可以使用 Vim 中的 a number of Eclipse features

【讨论】:

  • 无论如何,Vim 是一个文本编辑器,而不是一个 IDE。如果您需要 IDE,请使用一个。
  • 我的大部分插件都专用于 C++,而 lh-refactor 虽然完美,但支持 C++。
【解决方案2】:

在我的插件套件中,您会发现:

  • lh-cpp(C++ 专用的各种东西)
  • lh-brackets(智能插入括号,环绕,...)
  • mu-template,具有高级 C++ 感知模板和 sn-ps
  • local_vimrc 插件可帮助定义项目
  • BuildWrapperTools那个
    • 包装调用 make,
    • 为编译器输出提供过滤器(例如,动态添加 STLfilt),
    • 允许在调试/发布/任何配置之间切换(对于 CMake 下的项目);例如here
  • lh-refactor(通用重构套件)

在 github 上,我还有一个 experimental project 来包装 clang-indexer。

【讨论】:

    【解决方案3】:

    我认为您将需要UltisnipsTagbartcomment 插件,尤其是Ultisnips

    更多配置信息请参考:https://github.com/xautjzd/dotvim

    【讨论】:

    • 好建议。我很好奇你为什么在 .vimrc 中使用 Ultisnips 而不是 honza/vim-sn-ps?
    【解决方案4】:

    我所知道的唯一 c++11 重构工具是来自 LLVM 和 Intel 的 clang-modernizeChandler Carruth from Google gave a speech 在 youtube 上关于它)。您可以像任何其他 cli 工具一样从 vim 运行它,例如:

    :!clang-modernize -style=Google -format -loop-convert -pass-by-value -replace-auto_ptr -use-nullptr -use-auto -add-override -override-macros %
    

    末尾的% 符号将扩展为您当前文件的路径。现在有更多可用的工具,例如 clangtidycquery

    您可以让所有修复程序和 linter 在您键入 ALE vim plugin 之类的内容时自动更正您的代码。或者(这是我的首选解决方案)您可以使用dedicated language servercoc.nvim plugin,它允许完整的 IDE 体验(使用特定于代码的修复程序、sn-ps、跳转到定义、查找所有接口实现等)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-16
      • 2012-04-15
      • 1970-01-01
      • 2014-06-02
      • 2021-01-13
      • 1970-01-01
      • 2013-01-03
      • 1970-01-01
      相关资源
      最近更新 更多