Vim插件YouCompleteMe翻译之UserGuide I.

原文如下

自己在安装使用这个插件的时候遇到了不少曲折,现在这里对用户指导进行翻译,一来让自己能够耐下心来通读一遍,二来方便其他朋友使用。


用户指导 (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):

子序列过滤器会去除掉那些和输入不匹配的补全提示,这时排序系统就会启动。这其中的机制非常复杂,并且使用到了很多参数,但是还是有一点需要特别指出:“单词边界”(WB)子序列字符匹配要比非单词边界(non-WB)的匹配要好。实际上,这意味着,给定一个输入"gua",“getUserAccount”会比“Fooguxa”在补全提示中的排序更高(两者都是子序列匹配)。全大写字符,前置有下划线的字符和首字母字符都是单词边界字符。

通用语义补全引擎的使用 (General Semantic Completion Engine Usage):

· 即便没有字符串前缀,在任何位置也都可以用 Ctrl + Space 来触发补全提示。这有助于看到可以被使用的函数中的最高级别的那个。

C族语义补全引擎的使用 (C-family Semantic Completion Engine Usage):

YCM会在已打开文件的所在文件夹中查找  .ycm_extra_conf.py 文件,如果没有找到,会在这个文件夹的上级文件夹中递归寻找。当找到的时候,这个文件就会被当做
一个Python的模块被加载。YCM会调用这个模块中的FlagsForFile方法,来实现对当前文件的补全。也可以提供一个全局.ycm_extra_conf.py文件的路径。为了防止错误代码的执行,YCM会在这个文件被安全加载之后对用户进行一次询问。

之所以这个系统会被设计成这个样子,是因为这样就可以让用户执行任意操作序列。

更多细节请参看YCM自己的.ycm_extra_conf.py文件,你可以把这个文件当成一个起点。不要简单的拷贝/复制这个文件,就以为它可以工作了。你的项目会需要不用的flags。提示:用自己的项目中的必要编译flag来替换其中的flag变量,99%的情形下都是奏效的。

是的,Clang的CompilationDatabase系统也是被支持的。同样的,请参看之前的示例文件。

在编译文件所包含的头文件时,如果Clang遇到了错误,通常会花费很长时间来完成补全功能。当补全菜单最终显示的时候,会包含许多不想干的补全字符串(类型/方程 名字都不是成员对象)。这是因为,如果在包含的头文件中有错误的话,Clang就不能为文件建立一个预先编译的前同步码。

调用 :YcmDiags命令来看看在你的文件中是否有错误或者警告。

Python语义补全引擎的使用 (C-family Semantic Completion Engine Usage):

YCM使用Jedi作为对Python的语义补全器。这个补全器应该是不需要用户的任何配置就可以使用的。你不需要自己安装Jedi;YCM默认把它当做一个git子库来使用。如果是用Vundle安装的YCM(这也是我们推荐的方式),那么Vundle会确保在调用 :BundleInstall时子库被检查。如果是手动安装YCM,那么在检查YCM库时需要运行命令 
git submodule update --init --recursive

 

















不要试图从本手册中去获取什么知识, 使用Vim更多的是一种技能而 不是一种知识, Vim的学习需要的更多的不是头脑而是双手, 经常按书中 的指示进行示例性的操作, 在学习Vim众多精致的技巧时, 不要贪图一下 子全都掌握, 最好是看一条技巧后, 马上在编辑器上进行操作, 这样在以 后实际的编辑操作时你的手指就会建立一种自然的反应而不是由头脑来搜 索该使用哪一条操作技巧. 建议读者不动手来不读书. 如果手边没有一 个合适的Vim编辑器环境可供操练, 那么建议读者还是不要在这里浪费时 间. 如果读者是在气温比较低的条件下阅读此书从而增加了你动手的惰性 时, 也请不要浪费时间, 这会严重影响学习的效果. 虽然本书鼓励读者多动手, 但也绝非说一点不要动脑, 相反, Vim中 多达几百个的命名与操作方式有它自己的规律可循, 在你的手指能对要完 成的编辑任务条件反射之前, 最好还是由头脑做一点辅助. 经常总结自己 最经常进行的操作. 为这些操作找出最简练的办法来, 在每学习一条新的 操作之前与自己以前的编辑经验比较一下, 找出节省你敲击键盘次数的捷 径来. 是提升Vim经验值的不二法门. 其实, Vim与其它编辑器一个很大的区别在于, 它可以完成复杂的编 辑与格式化功能. 在这些领域还少有软件能与它分庭抗礼, 但是, 与所有 的灵活性的代价一样, 你需要用自己的双手来实现它. 这在事实上造成 了用户在使用Vim过程中的几个自然阶段. 一开始是notepad, word, edit垄断你的大脑, 这些东西根深蒂固, 挥之不去. Vim 的使用对你而言是一场噩梦, 它降低而不是提高了你的 工作效率. 对三种工作模式的不解甚至使你认为它是一个充满BUG或者至 少是一个古怪的与当今友好用户界面设计严重脱节的软件. 事实上, 这些 起初看起来古怪的特性是Vim(或者是vi)的作者和它的用户们在自己漫长 的文字编辑和程序设计生涯中总结出来的最快速最实在的操作, 在几乎等 于计算机本身历史的成长期中, 历经无数严厉苛刻的计算机用户的批评与 检验, 无用的特性或糟糕的设计在Vim用户群面前根本就没有生存的余地. Vim细心而谨慎的作者们也不允许自己精心设计的软件里有这样的东西. 第二个阶段你开始熟悉一些基本的操作, 这些操作足以应付你日常 的工作, 你使用这些操作时根本就不假思索. 但这些阶段你仍然很少去 碰Vim那晦涩的在线帮助文档. 它在你心里只是notepad, edit一个勉强 合格的替代品. 第三个阶段, 精益求精的你不满足于无休无止的简单操作, 冗长而 乏味, 有没有更好的办法可以驭繁于简? 于是, 从UNIX参考手册上, 从 同事口中, 你渐渐叩开:help xxx的大门. 开始探索里面充满魔力的咒 语. 从杂耍般的带有表演性质的技巧开始, 这些技巧令人眩目但少有实 用性. 不过这却是你拥有魔力的第一步. 接下来, 你开始认识到这些 咒语背后的真经, 开始偷偷修改一些奇怪的符号, 于是, 奇迹产生了, 魔力不但仍然有效, 而且真实地作用于你现实中的文字编辑生活. 你 2 3 前言 在第二阶段由于熟练操作而尘封已久的大脑突然开始运作. 但这个过 程并非是达到某个临界状态后的一路坦途, 不断的挫折, 新的挑战, 看 似Mission Impossible的任务. 永远伴随着任何一个人的任何一个学习 过程. 这是你使用Vim的最后一个阶段, 也是最漫长最有挑战性同时也 充满无数奇趣的阶段. 这个阶段里你开始定制一些希奇古怪的颜色. 开始以敲入i18n来输入internationalization, 开始让Vim替你纠正经常 把the 误敲成teh的毛病, 开始让Vim与系统里各种精悍而强大的兄弟工具 进行合作, 开始写越来越长的script, 每一次的文本编辑体验都妙趣横 生高潮跌起. 你的头脑因为要用Vim完成高效的编辑而高度紧张. 你开始 在Vim邮件列表里提一些确实是问题的问题. 也开始发现你在Vim里做了以 前在SHELL里做的几乎一切事. 事实上你已经成了一个无可救药的Vim骨 灰级玩家.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值