Ubuntu16.04VIM无法补全错误记录
先记录一下YouCompleteMe的安装过程。
按照教程进行安装
1. 安装 vundle
# vundle是vim的包管理器,十分好用
cv@cv: ~$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
cv@cv: ~$ vim ~/.vimrc
写入:
" description: configuration of vim
" author: phillee
" date: 2019-06-04
" email: phillee2016@163.com set nocompatible " be iMproved, required
filetype off " required " set the runtime path to include Vundle and initialize
set runtimepath+=/home/cv/.vim/bundle/Vundle.vim
set runtimepath+=/home/cv/.vim/bundle/ctrlp.vim
set runtimepath+=/home/cv/.vim/bundle/ultisnips call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
" call vundle#begin('~/some/path/here') " let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo
Plugin 'tpope/vim-fugitive'
Plugin 'Valloric/YouCompleteMe'
Plugin 'vim-syntastic/syntastic'
Plugin 'nvie/vim-flake8' " " Track the engine
Plugin 'SirVer/ultisnips' " Snippets are separated from the engine.
Plugin 'honza/vim-snippets' " plugin from http://vim-scripts.org/vim/scripts.html
" Plugin 'L9'
" Git plugin not hosted on GitHub
" Plugin 'git://git.wincent.com/command-t.git' " git repos on your local machine(i.e. when working on your own plugin)
" Plugin 'file://home/gmarik/path/to/plugin' " The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
" Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " Install L9 and avoid a Naming conflict if you've already install a different version somewhere else.
" Plugin 'ascenator/L9', {'name': 'newL9'} " Define bundles via GitHub repo
Bundle 'scrooloose/nerdtree' " All of your Plugins must be added before the following line
call vundle#end() filetype plugin indent on " To ignore plugin indent changes, instead use:
" filetype plugin on " Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append '!' to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append '!' to refresh local cache
" :PluginClean - confirms removal of unused plugins; append '!' to auto-approve removal " see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line set number
set numberwidth= set tabstop=
set background=dark
set showcmd
set encoding=utf- " Default conf file path
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
" No query for loading ycm_extra_conf.py configuration when vim is opened
let g:ycm_confirm_extra_conf= let g:ycm_use_clangd= set completeopt=longest,menu " path of python Interpreter
let g:ycm_path_to_python_interpreter='/usr/bin/python'
" Enable complete syntax
let g:ycm_seed_identifiers_with_syntax= " Enable or not complete even in the comments
let g:ycm_complete_in_comments=
let g:ycm_collect_identifiers_from_comments_and_strings=
let g:ycm_collect_identifiers_from_tags_files=
let g:ycm_min_num_of_chars_for_completion=
let g:ycm_autoclose_preview_window_after_completion=
let g:ycm_cache_omnifunc=
let g:ycm_complete_in_strings= let python_highlight_all=
syntax on
au BufNewFile,BufRead *.py
\ set tabstop= |
\ set softtabstop= |
\ set shiftwidth= |
\ set textwidth= |
\ set expandtab |
\ set autoindent |
\ set fileformat=unix "Autoclose preview window when leave the insert mode
autocmd InsertLeave * if pumvisible()==|pclose|endif "The user-defined action of the direction keys"
inoremap <expr> <Down> pumvisible()?'\<C-n>':'\<Down>'
inoremap <expr> <Up> pumvisible()?'\<C-p>':'\<Up>'
inoremap <expr> <PageDown> pumvisible()?'\<PageDown>\<C-p>\<C-n>':'\<PageDown>'
inoremap <expr> <PageUp> pumvisible()?'\<PageUp>\<C-p>\<C-n>':'\<PageUp>' " NERDTree config
map <F2> :NERDTreeToggle<CR>
autocmd vimenter * NERDTree
autocmd StdinReadPre * let s:std_in=
autocmd VimEnter * if argc() == && !exists("s:std_in") | NERDTree | endif " This command is to open NERDTree automatically when vim starts up on opening
" a directory.
autocmd VimEnter * if argc() == && isdirectory(argv()[]) && !exists("s:std_in") | exe 'NERDTree' argv()[] | wincmd p | ene | endif " This command is to close vim if the only window left open is a NERDTree.
autocmd bufenter * if(winnr("$")== && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
let g:NERDTreeDirArrowExpandable = '~'
let g:NERDTreeDirArrowCollapsible = '~' " UltiSnips - Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe.
let g:UltiSnipsExpandTrigger="<c-j>"
let g:UltiSnipsListSnippets="<c-h>"
let g:UltiSnipsJumpForwardTrigger="<c-j>"
let g:UltiSnipsJumpBackwardTrigger="<c-k>"
let g:UltiSnipsSnippetDirectories=['/home/cv/.vim/bundle/ultisnips/mysnippets/'] " If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical".vimrc
2. 安装 YouCompleteMe
cv@cv: ~$ sudo apt-get install build-essential cmake
cv@cv: ~$ sudo apt-get install python-dev python3-dev
cv@cv: ~$ cd ~/.vim/bundle/YouCompleteMe
cv@cv: ~/.vim/bundle/YouCompleteMe$ git submodule update --init --recursive
cv@cv: ~/.vim/bundle/YouCompleteMe$ ./install.py --clang-completer
3. 安装 libclang ,否则无法语义补全
cv@cv: ~/.vim/bundle/YouCompleteMe$ sudo apt-get install llvm-3.9 clang-3.9 libclang-3.9-dev libboost-all-dev
4. 编译构建 ycm_core 库
cv@cv: ~/.vim/bundle/YouCompleteMe$ mkdir .ycm_build
cv@cv: ~/.vim/bundle/YouCompleteMe$ cd .ycm_build
cv@cv: ~/.vim/bundle/YouCompleteMe/.ycm_build$ cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON -DUSE_SYSTEM_LIBCLANG=ON . ../third_party/ycmd/cpp
cv@cv: ~/.vim/bundle/YouCompleteMe/.ycm_build$ cmake --build . --target ycm_core --config Release
5. 配置文件
主要是 ~/.vimrc 和 ~/.vim/.ycm_extra_conf.py 两个文件
cv@cv: ~/.vim/bundle/YouCompleteMe/.ycm_build$ cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/ cv@cv: ~/.vim/bundle/YouCompleteMe/.ycm_build$ sudo vim ~/.vim/.ycm_extra_conf.py
添加 C++ 头文件和 opencv 头文件索引,写入
'-isystem',
'/usr/include/c++/5.4.0',
'-isystem',
'/usr/local/include/opencv2',
6. 然后安装各种插件
有些插件需要先去 GitHub 上克隆到本地。
打开 vim ,在命令模式下键入下面的插件安装指令,等待完成。
cv@cv: ~$ vim:PluginInstall
7. 试验一下效果
再次打开 vim ,结果最下面有提示
the ycmd server SHUT DOWN (restart with ':YcmRestartServer'). Unexpected error while ...M core library. Type ':YcmToggleLogs ycmd_41013_stderr_cys4wh16.log' to check the logs.
根据提示键入 :YcmToggleLogs ycmd_41013_stderr_cys4wh16.log
# /tmp/ycmd_41013_stderr_cys4wh16.log
Traceback (most recent call last):
File "/home/cv/.vim/bundle/YouCompleteMe/third_party/ycmd/ycmd/utils.py", line , in ImportAndCheckCore
ycm_core = ImportCore()
File "/home/cv/.vim/bundle/YouCompleteMe/third_party/ycmd/ycmd/utils.py", line , in ImportCore
import ycm_core as ycm_core
ImportError: /home/cv/.vim/bundle/YouCompleteMe/third_party/ycmd/ycm_core.so: undefined symbol: clang_getCompletionFixIt
原来是 clang_getCompletionFixIt 未定义,怎么办呢?
Valloric/YouCompleteMe主页查看了一下,找到了一些线索
根据指示运行 install.sh (因为 install.py 和 install.sh 运行效果一样,当然也可以使用 cv@cv: ~$ python install.py )
cv@cv: ~$ ~/.vim/bundle/YouCompleteMe/install.sh
#!/bin/sh echo "WARNING: this script is deprecated. Use the install.py script instead." >& SCRIPT_DIR=$(dirname $ || exit $?) command_exists() {
command -v "$1" >/dev/null >& ;
} PYTHON_BINARY=python
if command_exists python2; then
PYTHON_BINARY=python2
fi $PYTHON_BINARY "$SCRIPT_DIR/install.py" "$@" || exit $?install.sh
然后就ok了,现在补全功能可以用了。
- 如果在执行 ./install.py --clang-completer 的过程中出现HASH mismatch错误
 
Searching Python 2.7 libraries...
Found Python library: /usr/lib/python2./config-x86_64-linux-gnu/libpython2..so
Found Python headers folder: /usr/include/python2.
-- The C compiler identification is GNU 5.4.
-- The CXX compiler identification is GNU 5.4.
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PythonLibs: /usr/lib/python2./config-x86_64-linux-gnu/libpython2..so (found suitable version "
2.7.", minimum required is "2.7")
-- Downloading libclang 8.0. from https://dl.bintray.com/micbou/libclang/libclang-8.0.0-x86_64-unknown-l
inux-gnu.tar.bz2
CMake Error at ycm/CMakeLists.txt: (file):
file DOWNLOAD HASH mismatch for file: [/home/cv/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/../clang_archives/libclang-8.0.-x
86_64-unknown-linux-gnu.tar.bz2]
expected hash: [e81a186cd1180ae80c17d67d8d0c101248f8ee032d138cf6f1e95001e733249c]
actual hash: [e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855]
status: [;"SSL connect error"] CMake Error at ycm/CMakeLists.txt: (message):
Cannot find path to libclang in prebuilt binaries -- Configuring incomplete, errors occurred!
See also "/tmp/ycm_build_JVaiLo/CMakeFiles/CMakeOutput.log".
ERROR: the build failed. NOTE: it is *highly* unlikely that this is a bug but rather that this is a problem
with the configuration of your system or a missing dependency. Please carefully
read CONTRIBUTING.md and if you're sure that it is a bug, please raise an issue on
the issue tracker, including the entire output of this script and the invocation
line used to run it.
问题详情可以参考 GitHub上YouCompleteMe Issues: CMake Error at ycm/CMakeLists.txt: 92(file) file DOWNLOAD HASH mismatch #2353
解决方案:可能是网络的问题,需要手动下载,放到指定位置,重新执行上面的指令即可。下载地址【 https://dl.bintray.com/micbou/libclang/ 】到网站上找到自己需要的版本下载即可。
下载完成后需要放在 ~/.vim/bundle/YouCompleteMe/third_party/ycmd/clang_archives 文件夹下面
mv ~/Downloads/libclang-8.0.-x86_64-unknown-linux-gnu.tar.bz2 ~/.vim/bundle/YouCompleteMe/third_party/ycmd/clang_archives/
Ubuntu16.04VIM无法补全错误记录的更多相关文章
- Sublime Text 使用 Emmet 补全错误问题
		
Sublime Text安装了Emmet后,使用Tab或者ctrl+e发现补全有问题,如: div.testClass#testId 变成了 div.<testClass id="te ...
 - 记录一次bug解决过程:else未补全导致数据泄露和代码优化
		
一.总结 快捷键ctrl + alt + 四个方向键 --> 倒置屏幕 未补全else逻辑,倒置查询数据泄露 空指针是最容易犯的错误,数据的空指针,可以普遍采用三目运算符来解决 SVN冲突解决关 ...
 - CozyRSS开发记录6-继续补全订阅内容栏
		
CozyRSS开发记录6-继续补全订阅内容栏 1.订阅内容栏布局 按照之前的原型图,把订阅内容栏分成三块.Xaml如下: 2.照葫芦画瓢,完成头部和列表 头部依然使用ColorZone,右侧再放两个按 ...
 - ROS tab键补全操作出现错误
		
ros tab键补全操作出现错误如下: $ roslaunch sp[rospack] Warning: error while crawling /home/hemudu: boost::files ...
 - Linux --- vim 安装、支持python3的配置、插件自动补全YCM的安装配置及全过程错误总结
		
1.git(用来下载vim和相关插件) sudo apt-get install git 2,cmake(用来编译clang-llvm) sudo apt-get install build-esse ...
 - 在Ubuntu16.04中python环境下实现tab键补全
		
1.编写tab.py的代码: 1 #!/usr/bin/env python 2 # python startup file 3 import sys 4 import readline 5 impo ...
 - IDEA错误的忽略了智能补全代码,导致正确的代码自动提示不出来的问题
		
标题说起来有点绕,当今大部分IDE都提供 Alt+Enter 呼出自动补全菜单的功能,IDEA也不例外,今天手残了一下,具体问题如下: 1. 通常我们键入一个自定义类时IDEA会自动提示为红色,表示缺 ...
 - 删除Chrome地址栏记录中自动补全的网址
		
为了删除某个自动补全的网站,多年的历史纪录没了,还浪费我十多分钟,蠢哭_(:з」∠)_ 不是历史记录.不是清除浏览器数据.不是myactivity(谷歌账号)中的历史纪录,直接在书签中搜索,删除,OK ...
 - centos7安装docker记录+命令补全
		
原本用centos6.6部署项目环境,突然想装docker ,使用uname -r 发现内核版本太低,更新内核完后重启起不来了~~~~~,还是用回7吧 21 yum -y install gcc 22 ...
 
随机推荐
- 【Java Web开发学习】Spring消息-ActiveMQ发送消息
			
ActiveMQ发送消息 转载:http://www.cnblogs.com/yangchongxing/p/9042401.html Java消息服务(Java Message Service, J ...
 - 2019年Java并发精选面试题,哪些你还不会?(含答案和思维导图)
			
Java 并发编程 1.并发编程三要素? 2.实现可见性的方法有哪些? 3.多线程的价值? 4.创建线程的有哪些方式? 5.创建线程的三种方式的对比? 6.线程的状态流转图 7.Java 线程具有五中 ...
 - RocketMQ 整合 DLedger(多副本)即主从切换实现平滑升级的设计技巧
			
目录 1.阅读源码之前的思考 2.从 Broker 启动流程看 DLedger 2.1 构建 DefaultMessageStore 2.2 增加节点状态变更事件监听器 2.3 调用 DefaultM ...
 - 用正则表达式【regexp】进行高级搜索数据
			
正则表达式介绍 正则表达式是用来匹配文本的特殊字符集合,如果你想从一个文本中提取电话号码而已使用正则表达式,如果你需要查找名字中包含数字的所有文件可以使用正则,如果你你要在文本块中找到所有重复的单词, ...
 - jfinal shiro共享
			
和上一篇tomcat sexxion共享一样,用的也是redis 代码: package com.test.shiro; import com.jfinal.log.Log; import com.j ...
 - 阿里云linux镜像发布web项目时候 tomcat与域名映射
			
tomcat 与 域名映射 一 准备工作: 阿里云服务器Linux镜像 及 域名备案和将域名解析至服务器,通过<暂不说,网上一大把或者参考阿里官方实例手册> 在Linux镜像中安装tom ...
 - 在 .NET Core 中使用 Diagnostics (Diagnostic Source) 记录跟踪信息
			
前言 最新一直在忙着项目上的事情,很久没有写博客了,在这里对关注我的粉丝们说声抱歉,后面我可能更多的分享我们在微服务落地的过程中的一些经验.那么今天给大家讲一下在 .NET Core 2 中引入的全新 ...
 - CTF KFIOFan: 2 Vulnhub Walkthorugh
			
主机扫描: ╰─ nmap -p- -A 10.10.202.152 Starting Nmap 7.70 ( https://nmap.org ) at 2019-08-29 16:55 CSTNm ...
 - 如何快速将百度大脑AI技术内置智能小程序中
			
实现效果: 该AI智能小程序目前集成了百度AI开放平台数十个AI服务产品功能,包括人脸识别.文字识别.表格识别.红酒识别.货币识别.地标识别.手势识别.商标识别.果蔬识别.菜品识别等图片识别功能,以及 ...
 - AndroidStudio初识
			
大家好,欢迎来到下码看花,伟大领袖毛爷爷曾经说过:“ ‘走马看花不如驻马看花,驻马看花不如下马看花.’我希望你们都要下马看花.”,比喻停下来,深入实际,认真调查研究,这就是咱们公众号名字的由来.与君初 ...