【问题标题】:Vim function hints for CC 的 Vim 函数提示
【发布时间】:2012-07-02 20:34:17
【问题描述】:

我正在尝试实现一些简单的东西,通常称为“功能提示”。例如,基于 scintilla 的编辑器拥有它:

你输入一个名字,然后得到原型。在 vim 中存在一些问题:

  • 您必须重建 ctags 以使其保持最新状态
  • 你不能在( 之后输入 C-X C-O ,你只会得到“找不到模式”
  • 在普通模式下不能输入 C-X C-O,光标只会跳来跳去
  • 您会在顶部看到烦人的预览窗口

我尝试了一些插件;他们中的大多数人把事情搞得更糟[^1]。谁能推荐一个简单的方法来做到这一点?一个包含函数原型的简单矩形,仅此而已。

[^1] 这些插件中的一些愚蠢到令人麻木。一个插件(我不会提及它)实际上包含 在 .vim 文件中来自 libc 的函数列表。

【问题讨论】:

  • .vim 文件中实际包含的一个插件(我不会提及它)包含来自 libc 的函数列表。那有什么问题?你会在某个地方有一个数据库,对吧?还是数据库没有以秘密的不可读的专有格式存储的问题?
  • @eckes 那个插件已经使用了 ctags。
  • :-) 好的。那么这是个坏主意。

标签: vim autocomplete syntax-highlighting code-completion code-hinting


【解决方案1】:

ctags 用于自动完成是一团糟。我建议你尝试一个基于编译器的插件,例如clang-completegcc-sense(这个没试过)。优点是:

  • 更准确,因为他们所做的几乎是编译
  • 编译错误会在源代码上动态标记

您必须重建 ctags 以使其保持最新状态

您不需要处理 ctags(尽管它们仍然可以用来跳转)

你不能在 ( 之后输入 C-X C-O,你只会得到“找不到模式”

你会期待什么?

普通模式下不能输入C-X C-O,光标会跳来跳去

如果您认为这是一个常见错误,您可以随时重新映射该序列(例如nnoremap <C-x><C-o> a<C-x><C-o>

你会在顶部看到烦人的预览窗口

您可以通过从completeopt 选项中删除preview 来禁用此功能。见:help completeopt

我正在使用以下设置:

还有一些vimrc设置:

set pumheight=10             " so the complete menu doesn't get too big
set completeopt=menu,longest " menu, menuone, longest and preview
let g:SuperTabDefaultCompletionType='context'
let g:clang_complete_auto=0  " I can start the autocompletion myself, thanks..
let g:clang_snippets=1       " use a snippet engine for placeholders
let g:clang_snippets_engine='ultisnips'
let g:clang_auto_select=2    " automatically select and insert the first match

享受吧!

【讨论】:

    【解决方案2】:

    尝试使用eclim(与Eclipse 集成的插件)。

    这个解决方案开销很大,但它适用于所有情况。

    【讨论】:

      猜你喜欢
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      相关资源
      最近更新 更多