Vim插件YouCompleteMe错误信息

23
每次我编写新的Python源代码*.py时,都会出现以下错误信息:
Error detected while processing BufRead Auto commands for"*.py":
E518:Unknow option:set
E28:No such highlight group name: BadWhitespace

我该如何解决这个问题?

在提出这个问题之前,我按照这篇文章修改了我的_vimrc文件,但是错误信息仍然存在。更糟糕的是,另一个错误消息也出现了:

The ycmd server SHUT DOWN(restart with':YcmRestartSever').YCM core library not detected;you need to compile YCM before using it. Follow the instructions in the documentation.

我是一名新的Gvim用户,使用的是Windows 10中的gVim 8.0版本。我通过搜索互联网设置了我的Python开发环境,并通过Vundle安装了YouCompleteMe插件,但现在对于自己编译YCM来说太难了。


其他没有提到YCM的错误似乎与这个问题无关。你的_vimrc文件可能存在其他问题。 - dkasak
我在au BufRead语句下面添加了注释,错误Error、Error518和E28都消失了。但是我该如何修改au命令才能正确呢?谢谢。 - J.Neue
8
match 命令会将满足给定模式的字符串应用上一个“高亮组”(即一组背景和/或前景颜色),在你的情况下是 BadWhitespace。问题是你没有定义这个高亮组(可能是因为你没有粘贴整个来自该文章的代码段)。要解决这个问题,你需要在你的 _vimrc 文件中定义这个高亮组,例如:highlight BadWhitespace ctermbg=red guibg=red,这将告诉 vim,BadWhitespace 意味着应该将背景染成红色。颜色可以是名词,也可以是十六进制颜色值,例如 #6f4822 - dkasak
我逐一复制并粘贴命令到 _vimrc 文件中,但这三个错误消息仍然出现。 - J.Neue
很奇怪。在评论中,有人遇到了与你相同的问题,并使用了我给你的相同解决方案进行了修复。也许你应该发布另一个问题,因为这是一个单独的问题,并粘贴你的_vimrc(或者更确切地说是一个最小化、完整、可验证的代码片段来重现问题)。 - dkasak
显示剩余2条评论
2个回答

40

出现错误的情况:

Error detected while processing BufRead Auto commands for"*.py":
E518:Unknow option:set
E28:No such highlight group name: BadWhitespace

set xxx的末尾添加 | 符号

au BufNewFile,BufRead *.js,*.html,*.css,*.vue
\ set tabstop=2 |
\ set softtabstop=2 |
\ set shiftwidth=2
"Flagging Unnecessary Whitespace
highlight BadWhitespace ctermbg=red guibg=darkred
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/

1
这是一个很好的答案,它在主问题的这个评论中有解释。如果您将其编辑到此处,则可以使其更好。第二节诗意味着什么? - icedwater
对于第一个问题,另一个解决方法是删除除第一个之外的所有“set”。这样打字更少。 - Daliang LYU

6
YCM依赖于ycmd来进行实际工作。 ycmd是在后台运行的编译服务,因此必须编译它才能使其正常工作。
基本安装过程包括打开您操作系统的shell/命令行,cd到YouCompleteMe的vim插件目录,并在那里运行./install.py来编译它。 如果您需要用于除Python以外的其他语言,则可以运行./install.py --help并查找任何附加标志,以打开您想要使用的语言的支持。
以上假定您已经阅读了YCM的安装指南并安装了所需的依赖项。 有两个与您的情况相关的指南,它们非常详细和清晰地编写:

请安装CMake并重试。 回溯(最近的调用最先): 文件“C:\ Users \ admin \ .vim \ bundle \ YouCompleteMe \ install.py”,第44行,在<module>中 Main() 文件“C:\ Users \ admin \ .vim \ bundle \ YouCompleteMe \ install.py”,第33行,在Main中 subprocess.check_call([python_binary,build_file] + sys.argv [1:]) 文件“C:\ Python27 \ lib \ subprocess.py”,第541行,check_call函数 raise CalledProcessError(retcode,cmd) subprocess.CalledProcessError:命令'['C:\ Python27 \ python.exe',u'C:\ Users \ admin \.vim \ bundle \ YouCompleteMe \ third_party \ ycmd \ build.py']'返回非零退出状态1 - J.Neue
我尝试运行install.py,然后返回这些消息。这里我有一个问题:当我使用YCM插件时,我是否必须“编译”它?如果是这样,那将非常不方便。 - J.Neue
1
请查看我的更新答案。是的,要使用YCM,您必须编译一次ycmd二进制文件(在某些情况下,当您更新YCM插件并且API不兼容时,还需要再次编译)。这有点麻烦,但是只有通过运行持久化服务才能获得快速准确的完成(以及其他YCM提供的功能)。 - dkasak
非常感谢您的帮助和耐心。在我安装了VS并编译YCM之后,编译消息消失了,也许YCM的问题已经解决了。 - J.Neue
1
Python的自动补全功能是否可用?请尝试在vim中打开一个test.py文件,然后输入import math,接着输入math.,最后按下control-space(默认的自动补全快捷键)。这样应该会显示出一个自动补全列表。如果它能正常工作,请给我的回答点赞/采纳。 - dkasak

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