Vim YouCompleteMe 配置

24

我刚通过Vundle为Vim安装了YouCompleteMe。它可以工作,但仅显示当前文件中包含的单词。我想要使用它来开发C++程序,如何配置它以从例如/usr/include中的C++头文件中显示自动完成?非常感谢。


2
你需要构建并安装clang以进行语义补全。你是否按照YCM自述文件中详细的安装过程进行操作? - romainl
是的,我按照指示操作了,但只得到了本地自动完成提示。我的操作是安装 YCM 作为 Vundle Bundle,并在 YCM 目录中执行了安装脚本。是否有我错过的某种配置? - mastergap
9
你是执行了 ./install.sh --clang-completer 还是仅执行了 ./install.sh 呢? - romainl
我错过了--clang-completer选项。非常感谢。也许可以回答一下,这样我就可以将其标记为正确的解决方案。 - mastergap
@mastergap 你可以回答自己的问题。 - Dilawar
5个回答

21

您需要导航到~/.vim/bundles/YouCompleteMe并使用--clang-completer运行安装脚本,因此执行./install.sh --clang-completer。 安装完成后,您应该支持像C语言一样的语言。

您还可能需要在~/.vimrc中添加let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py'


10
为了新版本的YouCompleteMe,它被更改为: let g:ycm_global_ycm_extra_conf = ".vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py" - Iman Mirzadeh
5
对我来说,定义这个配置文件似乎完全不合逻辑和晦涩难懂。为什么我需要将这个配置文件设置为深藏在插件文件夹中的隐藏文件呢?对我来说,这样做感觉就是错误的。 - Arne
1
较新版本通常使用.py,而install.sh现在变成了install.py - Zoe stands with Ukraine

8

我已经使用了Pathogen进行安装。我尝试使用./install.sh --clang-complete的上述指令。但是这个方法没有生效,我确实需要添加路径。但是这与此处其他回复中的不同,即

let g:ycm_global_ycm_extra_conf = '.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

路径中多了一个"third_party/ycmd"。


5
虽然这里的建议可能在一开始有效,但我不确定这是正确的做法。根据YCM开发人员的说法,每当您启动一个项目时,都需要一个新的.ycm_extra_conf.py文件。
来自https://valloric.github.io/YouCompleteMe/#ubuntu-linux-x64-super-quick-installation YCM在打开的文件目录或其上层任何目录(递归地)中寻找.ycm_extra_conf.py文件;找到该文件后,它将作为Python模块加载(仅一次!)。 YCM在该模块中调用FlagsForFile方法,该方法应提供编译当前文件所需的信息。您还可以提供全局.ycm_extra_conf.py文件的路径,以备用。为了防止从未编写过的文件中执行恶意代码,YCM将每个.ycm_extra_conf.py文件询问一次是否安全加载。这可以禁用,并且可以为文件设置白名单/黑名单。有关更多详细信息,请参见选项部分。

虽然你可能只需要修改原始的.ycm_extra_conf.py文件中的编译标志,但我认为最好为每个新项目创建一个新文件。


1
链接已经失效了。如果您能更新一下就太好了。 - Enlico
编辑队列已满,请在此处放置更新后的链接 https://github.com/ycm-core/YouCompleteMe#option-2-provide-the-flags-manually - ljden

1

这里的所有内容都是正确的。我只想补充一点,截至2017年,“install.sh”脚本已被弃用。现在,您需要使用“install.py”脚本,方法是输入:

./install.py --clang-completer

此外,在您的 .vimrc 文件中,不要使用 ".vim/bundle/blahblahblah",而是需要在地址前面添加“~/”,方法如下:
let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py"

将以下代码添加到您的 .vimrc 文件中,以从Home目录为其提供绝对路径,以便Vim可以找到“.ycm_extra_conf.py”文件。否则,您可能会遇到一些有趣的行为。


1

请不要将评论写成答案。在网站上投入一些时间,您将获得足够的特权,以对问题和答案进行评论和投票。 - RaminS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接