原文如下:
自己在安装使用这个插件的时候遇到了不少曲折,现在这里对用户指导进行翻译,一来让自己能够耐下心来通读一遍,二来方便其他朋友使用。
用户指导 (User Guide)
一般用法 (General Usage):
·如果觉得补全功能太广泛的话,只需要继续输入代码即可;YCM会基于你的输入持续修正补全功能。
·过滤功能是“smart-case(智能大小写)”敏感的;如果输入的全部是小写字母,就会变成大小写不敏感。如果输入中包含大写字母,那么大写字母必须匹配待补全字符 串中的大写字母(小写字母仍然是会大小写都匹配)。因此"foo"和“Foo”以及"foo"都是匹配的,“Foo”和“Foo”以及“FOO”都是匹配的,但是和“foo”就无法匹配。
·使用TAB键来接受补全功能提供的提示选项,继续按TAB键可以在提示选项中循环。按Shift + TAB向后循环。注意如果是使用console Vim(即,不是GVim或者 MacVim)的话,Shift + TAB键很有可能无法启用,因为控制台可能无法将指令传递给Vim。可以重新设置键的映射,请参见下面的参考(Options)部分。
了解一些YCM的内部工作机制也有助于对它的使用。YCM使用的补全引擎有:一个基于标示符的补全器(identifier-based completer)。这个补全器会收集当前文件以及其他被访问文件中的所有标示符,并在用户输入的时候搜素这些标示符。
YCM中还有几个语义引擎。其中有一个libclang-based补全器,这个补全器会对C族语言提供语义补全。有一个Jedi-based补全器,用于对Python提供语义补全。有一个omnifunc-based补全器,这个补全器会使用来自Vim omnicomplete系统的数据来对那些在YCM中没有原生补全器支持的语言进行补全。
还有几个其他的补全器,例如UltiSnips补全器和filepath补全器。
YCM会自动的探测应该使用哪个补全引擎。偶尔,也会同时查询若干个补全引擎,并把输出结果合并后一起呈现出来。
客户服务器架构 (Client-server architecture):
YCM有一个客户服务器架构;YCM的Vim部分只是一个HTTP+JSON服务器的一个小客户,而后者才拥有着YCM的大部分逻辑和功能。这个服务器会在Vim启动和关闭时自动的启动和关闭。
补全字符串排行 (Completion string ranking):
通用语义补全引擎的使用 (General Semantic Completion Engine Usage):
C族语义补全引擎的使用 (C-family Semantic Completion Engine Usage):
在编译文件所包含的头文件时,如果Clang遇到了错误,通常会花费很长时间来完成补全功能。当补全菜单最终显示的时候,会包含许多不想干的补全字符串(类型/方程 名字都不是成员对象)。这是因为,如果在包含的头文件中有错误的话,Clang就不能为文件建立一个预先编译的前同步码。
git submodule update --init --recursive