您的位置:首页 > 其它

详解vim插件安装及配置

2018-03-15 19:53 99 查看
前言

vim插件依赖项安装:

dnf install python-future

dnf install python-devel

dnf install ncurses

dnf install cmake

dnf install ctags

dnf install cscope

更新vi:dnf update vi

安装vim:dnf install vim

安装g++:dnf install gcc-c++

一、安装插件管理器vundle

1、git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

2、拷贝.vimrc为~/.vimrc,这个文件里指定了vundle路径及vundle要安装哪些插件,拷贝好以后使用vim时会报一些错误,原因是插件还没有安装好,可以先忽略错误提示。

二、安装插件

0、打开~/.vimrc文件,在call vundle#begin()和call vundle#end()之间进行添加和删除要安装的插件

1、打开一个vim, 命令模式运行 :BundleInstall

2、打开一个vim,执行其他命令的作用如下:

更新插件:BundleUpdate

清除不再使用的插件:BundleClean(就是删除Vundle目录中的插件,但是.vimrc中没有添加配置的插件)

列出所有插件:BundleList

查找插件:BundleSearch

三、安装YCM失败的解决方案

1、进入到YouCompleteMe目录,在terminal窗口敲入git submodule update –init –recursive

2、执行./install.sh –clang-completer

如果下载太慢,则可在其他地方下载然后放到/root/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/../clang_archives/clang+llvm-5.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz后在执行该命令。

3、报libtinfo.so.5找不到

ln /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5

四、配置及使用插件请看.vimrc

" 1、基本设置
" vim比vi支持更多的功能,如showcmd,避免冲突和副作用,最好关闭兼容
set nocompatible

" 语法高亮
syntax on

" 基于文件类型打开
filetype on

" 打开基于文件类型的缩进
filetype indent on

" 打开基于文件类型的插件
filetype plugin on

" 不使用备份文件
set nobackup
set nowritebackup
set noswapfile

" 显示行号
set number

" 按一个tab之后,显示出来的相当于几个空格
set tabstop=4
" 每一级缩进的长度
set shiftwidth=4
set textwidth=80
" 缩进用空格来表示
set expandtab

" 设置不折行
" set nowrap

" 设置缩进
set autoindent
set smartindent
set cindent

set colorcolumn=81
set hidden

" 高亮搜索
set hlsearch

" 开启实时搜索功能
set incsearch

set ruler
set showcmd
set title

" vim 自身命令行模式智能补全
set wildmenu
set wildmode=list:longest,list:full

set foldmethod=marker

" 忽略大小写
set ignorecase
set smartcase

" complete opts
set completeopt=menu,longest

" ignore files inside vcs dirs
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*
" ignore object code files
set wildignore+=*.o,*.obj,*.a,*.so,*.d

" 设置支持多语言,解决乱码
set fileencodings=ucs-bom,utf8,cp936,gbk,big5,euc-jp,euc-kr,gb18130,latin1

" Mouse Support
if has('mouse')
set mouse=a
endif

" Fonts
set guifont=DejaVu\ Sans\ Mono\ for\ Powerline\ 11
set guifontwide=WenQuanYi\ Micro\ Hei\ Mono

" .bashrc里加上 stty -ixon ,取消C-s和C-q在终端的作用
" map:全模式映射
" nmap:normal模式映射
" vmap:visual模式映射
" imap:insert模式映射
" <leader>:\
" <CR>:回车
" <C>:Ctrl
" <C-s>:Ctrl+s
" <tab>:Tab
" <S>:Shift
" <F5>:F5
" <Esc>:Esc
" <M>或<A>:Alt,好像不起作用,待解决
" <k0> - <k9>:小键盘数字0-9
" <silent>:不提示执行的命令内容

" 退出
" nnoremap <C-w> :q<CR>

" 保存
" nnoremap <C-s> :w<CR>

" 全选
" nnoremap <C-a> ggVG

" 2、插件安装设置
" Vundle
" Install Vundle:
" git clone git://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
"
" Usage:
" :BundleList            - list configured bundles
" :BundleInstall         - install(update) bundles
" :BundleSearch          - search for plugins
" :BundleClean           - confirm removal of bundles
"
" see :h vundle for more details or wiki for FAQ

set nocompatible              " 这是必需的
filetype off                  " 这是必需的

" 设置运行时路径
set rtp+=~/.vim/bundle/vundle

" 插件放到begin与end之间
call vundle#begin()

" 从Github进行安装
" 插件管理器vundle
Plugin 'gmarik/vundle'
" 文件树
Plugin 'scrooloose/nerdtree'
" 符号窗口
Plugin 'majutsushi/tagbar'
" 状态栏
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
" 多文件浏览编辑
Plugin 'fholgado/minibufexpl.vim'
" 语法分析
Plugin 'scrooloose/syntastic'
" 注释插件
Plugin 'scrooloose/nerdcommenter'
" 配色插件
Plugin 'tomasr/molokai'
" 模糊搜索
Plugin 'ctrlpvim/ctrlp.vim'
" 自动补全
Plugin 'Valloric/YouCompleteMe'
Plugin 'ervandew/supertab'
" 括号匹配
Plugin 'jiangmiao/auto-pairs'
" 高亮及高亮搜索
Plugin 'mbriggs/mark.vim'

" 从http://vim-scripts.org/vim/scripts.html进行安装
" 调用shell命令插件
Plugin 'Clam'
" 回退插件
Plugin 'Gundo'
" 高亮
Plugin 'TagHighlight'

"
4000
从另一个git软件库进行安装
" Plugin 'git://git.wincent.com/command-t.git'

" 从本地文件进行安装
" Plugin 'file:///home/gmarik/path/to/plugin'

" 定制其他参数,比如插件的运行时路径,如果你在自行编写插件,或者就想从不是~/.vim的另一个目录来装入它
" Plugin 'rstacruz/sparkup', {'rtp': 'another_vim_path/'}

" 如果你有同样名称的插件,可以更名插件,那样它就不会冲突
" Plugin 'user/plugin', {'name': 'newPlugin'}

call vundle#end()

" 基于文件类型打开
filetype on

" 打开基于文件类型的缩进
filetype indent on

" 打开基于文件类型的插件
filetype plugin on

" 3、插件配置设置
" Cscope and ctags
" 源码根目录执行命令生成数据库:
" cd /root/work/kbengine-1.1.5;
" 使用find命令时-type f 指定查找普通文件,否则如果将链接符号文件也查找出来的话,cscope -bkq 将会提示找不到链接符号文件。
" find `pwd` -type f -name "*.h" -o -type f -name "*.c" -o -type f -name "*.cpp" > cscope.files;
" cscope -bkq -i cscope.files;
" ctags -R
nmap <S-s> :Clam cd /root/work/kbengine-1.1.5;find `pwd` -type f -name "*.h" -o -type f -name "*.c" -o -type f -name "*.cpp" > cscope.files;cscope -bkq -i cscope.files;ctags -R<CR>
" 去掉重复加载数据库警告
set nocscopeverbose
" 加载数据库
if has("cscope")
if filereadable("cscope.out")
cs add cscope.out
endif
endif
" 使用cscope
" cs find s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
" g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
" d: 查找本函数调用的函数
" c: 查找调用本函数的函数
" t: 查找指定的字符串
" e: 查找egrep模式,相当于egrep功能,但查找速度快多了
" f: 查找并打开文件,类似vim的find功能
" i: 查找包含本文件的文
nmap <leader>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <leader>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <leader>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <leader>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <leader>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <leader>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <leader>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <leader>d :cs find d <C-R>=expand("<cword>")<CR><CR>
" 将搜索结果输出到quickfix窗口
set cscopequickfix=s-,c-,d-,i-,t-,e-
" 打开quickfix窗口
nmap <F2> :copen<CR>
" 跳转到上/下一个搜索结果
nnoremap <F3> :cp<CR>
nnoremap <F4> :cn<CR>

" NERDTree
nnoremap <leader>nt :NERDTreeToggle<CR>
let NERDTreeWinPos=1

" Tagbar
nnoremap <leader>tb :TagbarToggle<CR>
let g:tagbar_left = 1
let g:tagbar_width = 25
let g:tagbar_autoclose = 0
let g:tagbar_autofocus = 1
let g:tagbar_autoshowtag = 1
" let tags sorted according to their order int source files
let g:tagbar_sort = 0
let g:tagbar_ctags_bin = '/usr/bin/ctags'
" let Tagbar start with vim
autocmd VimEnter * nested :TagbarOpen

" Vim-airline
let g:airline_theme = 'dark'
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#buffer_nr_show = 1
" Make airlines appear all the time
set laststatus=2

" MiniBufExplorer
" <C-Tab>   向前循环切换到每个buffer上,并在但前窗口打开
" <C-S-Tab> 向后循环切换到每个buffer上,并在但前窗口打开
let g:miniBufExplMapCTabSwitchBufs = 1
" <C-h,j,k,l>切换到上下左右的窗口中去
let g:miniBufExplMapWindowNavVim = 1
map <leader><Tab> :bn<CR>
map <leader><leader><Tab> :bp<CR>

" Color Schemes
" .bashrc里要加export TERM=xterm-256color
if has("gui_running")
" set background=dark
colorscheme molokai
set guioptions-=T
" set guioptions-=m
" set guioptions-=r
" set guioptions-=L
else
set t_Co=256
set background=dark
colorscheme molokai
endif

" CtrlP
let g:ctrlp_map = '<leader>ff'
let g:ctrlp_cmd = 'CtrlP'
map <leader>p :CtrlPMRU<CR>
let g:ctrlp_custom_ignore = {
\ 'dir':  '\v[\/]\.(git|hg|svn|rvm)$',
\ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|pyc)$',
\ }
" enable cache for ctrlp
let g:ctrlp_clear_cache_on_exit = 0
let g:ctrlp_cache_dir = $HOME.'/.cache/ctrlp'
" only search the filename and use regex
" let g:ctrlp_by_filename = 1
" let g:ctrlp_regexp = 1
" cancel the limit to max files number
let g:ctrlp_max_files = 0
let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:20,results:20'

" YouCompleteMe
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
" 自动补全配置
set completeopt=longest,menu    " 让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
autocmd InsertLeave * if pumvisible() == 0|pclose|endif    " 离开插入模式后自动关闭预览窗口
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"    " 回车即选中当前项
let g:ycm_confirm_extra_conf=0    " 关闭加载.ycm_extra_conf.py提示
let g:ycm_collect_identifiers_from_tags_files=1    " 开启 YCM 基于标签引擎
let g:ycm_min_num_of_chars_for_completion=2    " 从第2个键入字符就开始罗列匹配项
let g:ycm_cache_omnifunc=0    " 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_seed_identifiers_with_syntax=1    " 语法关键字补全
nnoremap <F5> :YcmForceCompileAndDiagnostics<CR>    " force recomile with syntastic
inoremap <leader><leader> <C-x><C-o>
"在注释输入中也能补全
let g:ycm_complete_in_comments = 1
"在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
"注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 0
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>
let g:ycm_key_invoke_completion = '<S-a>'

" SuperTab
let g:SuperTabRetainCompletionType=1

" mark.vim
" <leader>m 高亮或反高亮一个单词
" <leader>n 清除当前的单词高亮(光标处)若光标处无高亮的单词就清除所有的单词高亮显示
" <leader>r 按照输入的正则表达式高亮单词
" <leader>* 跳转到当前高亮的下一个单词
" <leader># 跳转到当前高亮的上一个单词
" <leader>/ 跳转到任一下一个高亮单词
" <leader>? 跳转到任一上一高亮单词
map <F8> <leader>m
map <F6> <leader>#
map <F7> <leader>*

" Clam
" :Clam<Space>后即可输入shell命令执行
" 执行命令后会有一个新的窗口显示该命令的打印
nnoremap <S-c> :Clam<Space>

" Gundo
nnoremap <leader>u :GundoToggle<CR>
let g:gundo_right = 1

" TagHighlight
nnoremap <S-u> :UpdateTypesFile<CR>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息