VIM无法补全错误记录
Posted phillee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VIM无法补全错误记录相关的知识,希望对你有一定的参考价值。
按照教程进行安装
1. 安装 vundle
# vundle是vim的包管理器,十分好用 [email protected]: ~$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim [email protected]: ~$ vim ~/.vimrc
写入:
.vimrc" description: configuration of vim " author: phillee " date: 2019-06-04 " email: [email protected] 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=5 set tabstop=4 set background=dark set showcmd set encoding=utf-8 " 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=0 let g:ycm_use_clangd=0 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=1 " Enable or not complete even in the comments let g:ycm_complete_in_comments=1 let g:ycm_collect_identifiers_from_comments_and_strings=0 let g:ycm_collect_identifiers_from_tags_files=1 let g:ycm_min_num_of_chars_for_completion=2 let g:ycm_autoclose_preview_window_after_completion=1 let g:ycm_cache_omnifunc=0 let g:ycm_complete_in_strings=1 let python_highlight_all=1 syntax on au BufNewFile,BufRead *.py \\ set tabstop=4 | \\ set softtabstop=4 | \\ set shiftwidth=4 | \\ set textwidth=79 | \\ set expandtab | \\ set autoindent | \\ set fileformat=unix "Autoclose preview window when leave the insert mode autocmd InsertLeave * if pumvisible()==0|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=1 autocmd VimEnter * if argc() == 0 && !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() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe ‘NERDTree‘ argv()[0] | wincmd p | ene | endif " This command is to close vim if the only window left open is a NERDTree. autocmd bufenter * if(winnr("$")==1 && 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"
2. 然后安装各种插件
有些插件需要先去 GitHub 上克隆到本地。
打开 vim ,在命令模式下键入下面的插件安装指令,等待完成。
[email protected]: ~$ vim:PluginInstall
3. 试验一下效果
再次打开 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 637, in ImportAndCheckCore ycm_core = ImportCore() File "/home/cv/.vim/bundle/YouCompleteMe/third_party/ycmd/ycmd/utils.py", line 628, 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 运行效果一样,当然也可以使用 [email protected]: ~$ python install.py )
[email protected]: ~$ ~/.vim/bundle/YouCompleteMe/install.sh
install.sh#!/bin/sh echo "WARNING: this script is deprecated. Use the install.py script instead." 1>&2 SCRIPT_DIR=$(dirname $0 || exit $?) command_exists() command -v "$1" >/dev/null 2>&1 ; PYTHON_BINARY=python if command_exists python2; then PYTHON_BINARY=python2 fi $PYTHON_BINARY "$SCRIPT_DIR/install.py" "[email protected]" || exit $?
然后就ok了,现在补全功能可以用了。
以上是关于VIM无法补全错误记录的主要内容,如果未能解决你的问题,请参考以下文章
CloudKit 光标错误和无法返回所有行 - 获取记录时遇到错误