如何将vim脚本(clang_complete)完成功能,模板?

时间:2012-03-13 13:29:46

标签: function vim autocomplete clang clang-complete

在clang_complete.txt(帮助文件)中,它在clang_complete-compl_kinds中显示:

2.Completion kinds                  *clang_complete-compl_kinds*
Because libclang provides a lot of information about completion, there are
some additional kinds of completion along with standard ones (see >
 :help complete-items for details):

'+' - constructor
'~' - destructor
'e' - enumerator constant
'a' - parameter ('a' from "argument") of a function, method or template
'u' - unknown or buildin type (int, float, ...)
'n' - namespace or its alias
'p' - template ('p' from "pattern")

问题是:
1.我无法访问完整项目(没有此文件)
2.有人可以告诉我如何使用参数'+''a'等。
3.或者你能告诉我如何(键入时)显示函数参数。

谢谢!
(原谅我可怜的英语)

1 个答案:

答案 0 :(得分:0)

已经很长时间了,但我会回答以帮助未来的访客。

我不完全理解你的问题,但我会回答第三个问题。 Clang complete仅在编写'。',' - >'时启动自动建议/完成或'::',但您可以手动启动它。

我这样使用它。在这个来源:

#include <iostream>
using namespace std;

void ExampleFunc (float foo, int &bar)
{
    cout << foo;
    bar++;
}

int main (int argc, char **argv)
{
    int a(0);
    Exa[cursor here]

    return 0;
}

编写“Exa”,您可以按<C-X><C-U>,您将看到一个预览窗口:

Example (float foo, int &bar)

和完成窗口(在插入模式下按<C-N>(CTRL-N)时显示的窗口):

Example f void Example(float foo, int &bar)

如果有多个匹配项,您可以使用<C-N><C-P>向下或向上移动,并使用<CR>(输入)完成。

完成并不完美,但它应该适用于许多其他情况,例如(如你所提到的)模板:

#include <vector>
using namespace std;

int main (int argc, char **argv)
{
    struct MyType {int asdf; float qwer;};
    vector<MyType> vec;
    ve  // suggestions after <C-X><C-U>: 
        //     "vec v vector<MyType> vec" v is for variable
        //     "vector p vector<Typename _Tp>" p is for pattern (template)
        //     constructors with its parameters, etc.

    vec.    // auto-fired suggestions: all std::vector methods
    vec[0]. // auto-fired suggestions: "asdf", "qwer" and MyType methods

    return 0;
}

如果这些示例不适合您,则表示您尚未正确安装插件。

顺便说一句,您可以将<C-X><C-U>映射到其他快捷方式。