vim - 用于导入建议的插件

时间:2015-04-20 23:48:32

标签: vim plugins ide

是否有任何好的插件会根据您编写的代码建议或自动化导入?

我更喜欢在ide上使用vim,并将其用于所有任务。我打算用它作为我唯一的开发环境并掌握它,根据我的需要定制它并使用它,但是我可能最终编程。我宁愿使用一个带有一些好的插件和一个终端的编辑器,而不是六个我永远不会真正掌握的想法,或者被迫用它来模仿vim。

1 个答案:

答案 0 :(得分:1)

在C和C ++中,我有一些C++ snippets自动添加相关的头文件。其他片段很容易定义。我根据具体情况添加它们(即,当我厌倦了总是一遍又一遍地输入相同的东西时)。该框架可以与其他语言一起使用,我也是第一次使用Python。

VimL:" mu-template python-snippet for os.path.exists()
VimL:" hint: os.path.exists()
VimL: let s:value_start = '¡'
VimL: let s:value_end   = s:value_start
VimL: let s:marker_open  = '<+'
VimL: let s:marker_close = '+>'
VimL: call s:AddPostExpandCallback('lh#dev#import#add("os", {"symbol": "path"})')
os.path.exists(¡s:Surround(1, '<+type+>')¡)<++>

对于其他语言,lh-dev中定义的框架可能需要进行调整 - 但不要担心变异点已经存在专门化。

缺点是:

  • 自动包含相关的头文件并不聪明。例如,如果foo.h包含<vector>,则在foo.cpp中展开vector(到std::vector<placeholder> placeholder)也会包含<vector>。它无法知道何时前向声明就足够了。
  • 该片段引擎是mu-template,虽然它非常强大并不是最时髦的 - 每个人都会把你推向snipmate&amp;谢我必须承认使用的显式占位符字符非常嘈杂。但请注意,lh#dev#import#add()可以在其他代码段引擎中使用 - 我只是不知道他们将如何对执行vim append()函数的函数做出反应。

lh-cpp有另一个(相关的)功能。当光标位于另一个文件中声明的标识符上时,CTRL-X_i将使lh-cpp查看声明标识符的ctags数据库,并尝试在文件开头添加正确的include语句。到目前为止,此功能专用于C和C ++,但可以将其打开到其他语言 - 我必须将其添加到我的待办事项列表中。