一般语义补全
你可以在任何地方是使用Ctrl+Space来触发语义补全,甚至没有字符串前缀。对于那些最高级功能是非常有用的。
C家族语义补全
YCM在打开文件的目录下寻找.ycm_extra_conf.py,或者递归查找所在文件的任何上层目录。找到后,会加载它作为Python模块(仅一次)。YCM用于编辑当前文件的方法,是在提供所需信息的模块中调用FlagsForFile。你也可以提供.ycm_extra_conf.py的全局路径作缺省处理。为了防止文件中的恶意代码执行,YCM每次都会问你.ycm_extra_conf.py文件的加载是否安全。这项可以被警用,你可以写入white-/blacklist文件。更多的细节,请参见选项部分。
系统以这种方式设计,便于用户执行任意操作序列来生成编译标志的列表。
详见.ycm_extra_conf.py
。你应该把使用它作为起点。别只复制/粘贴那个文件,并期望它能神奇的工作;你的项目需要不同标志。提示:仅替换你项目中必要的编译标志的字符串变量。对于99%的项目来说这就够了。
Clang的CompilationDatabase
同样支持。请参见上面的链接。你用Cmake,在你的项目文件CMakeLists.txt中添加设置set( CMAKE_EXPORT_COMPILE_COMMANDS 1 )以生成文件。如果你不使用CMake,你可以使用像Bear生成compile_commands.json文件。
考虑使用YCM-Generator生成ycm_extra_conf.py文件。
如果Clang在编译头文件时遇到错误,可能需要很长时间才能完成。当补全最终显示的菜单时,将会有大量的无关补全的字符串(类型/功能都不匹配)。这是因为Clang不能建立预编译导码,如果头文件里有任何错误。前导码是快速补全的关键。
调用:YcmDiags命令以查看你的文件中是否有任何错误和警告。