红联Linux门户
Linux帮助

Vim插件配置

发布时间:2016-06-23 15:39:42来源:linux网站作者:Hiroshi

前言

折腾了大半天,终于搞得像个样子了,自己的环境是 ubuntu 16.04,主要有以下插件:

VundleVim(https://github.com/VundleVim/Vundle.vim) 管理插件
YouCompleteMe(https://github.com/Valloric/YouCompleteMe/) 代码自动补全
vim-airline(https://github.com/vim-airline/vim-airline) 增强状态栏和标签栏
TagList(http://www.vim.org/scripts/script.php?script_id=273) 查看函数和变量的定义
NERDTree(http://www.vim.org/scripts/script.php?script_id=1658) 文件目录树
identline(http://www.vim.org/scripts/script.php?script_id=4354) 显示缩进的对齐线
delimitMate(http://www.vim.org/scripts/script.php?script_id=2754) 自动补全括号和引号
Cscope(http://cscope.sourceforge.net/) 代码阅读


VundleVim

用这个插件来管理插件十分方便
安装

首先 clone 该项目到 ~/.vim/bundle,没有该文件夹的话可以新建

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

配置

修改 vim 配置文件,比如我的是 ~/.vimrc
首先需要关闭兼容模式和文件类型检测

set nocompatible
filetype off  

然后设置运行时路径和插件

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" 这里根据自己需要的插件来设置,以下是我的配置 "

" github 仓库中的插件 "
Plugin 'VundleVim/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'
Plugin 'vim-airline/vim-airline'

" vim-scripts 中的插件 "
Plugin 'taglist.vim'
Plugin 'The-NERD-tree'
Plugin 'indentLine.vim'
Plugin 'delimitMate.vim'

call vundle#end()
filetype plugin indent on

还支持两种插件类型,如下

" 非 github 仓库的插件 "
Plugin 'git://git.wincent.com/command-t.git'

" 本地仓库的插件 "
Plugin 'file:///home/gmarik/path/to/plugin'

使用

 

命令 说明
PluginList 列出安装的插件
PluginInstall 根据配置文件安装插件
PluginUpdate 更新插件
PluginSearch [name] 查找名为 [name] 的插件
PluginClean 清除无用的插件


YouCompleteMe

我的这个文件夹装完总共 400M,功能强大,体积也大
安装

安装前需要满足这些条件

Make sure you have Vim 7.3.598 with python2 or python3 support. Ubuntu 14.04 and later have a Vim that's recent enough.

这里使用 Vundle 来安装,在配置文件中加入下面这一句

Plugin 'Valloric/YouCompleteMe'

保存后执行 PluginInstall 等待下载完成,之后插件的安装都是这个步骤
由于这个插件有点大,国内不科学上网的话可能要需要比较久的时间才能下载完成
下载完成后,还需要安装一些东西

sudo apt-get install build-essential cmake
sudo apt-get install python-dev python3-dev

接下来开始编译,这里分为需要和不需要支持 C/C++ 的情况

cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer

上面是支持 C/C++ 的情况,会自动下载 clang,如果不需要支持 C/C++,则去掉 --clang-completer
对于 C#,GO,JavaScript 等语言的支持可以到 github 上查看安装方法
配置

如果需要支持 C/C++,在配置文件内加入下面这行代码,这里可以自己更改配置文件,具体方法和更多配置可以到 github 上查看

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


vim-airline

这插件颜值挺高的,还支持更换主题
安装

Plugin 'vim-airline/vim-airline'

安装方法与之前相同,部分系统为了显示完全可能还需要安装字体补丁
配置

这里只简单地开启了标签栏

let g:airline#extensions#tabline#enabled = 1


TagList

这个东西感觉可以用 cscope 代替,不过旁边放个函数变量的窗口感觉更高大上一点
安装

首先需要安装 ctags,对于 ubuntu 来说比较简单,部分系统可能需要编译安装

sudo apt-get install ctags

然后按照之前的方法安装插件

Plugin 'taglist.vim'

配置

我简单地配置了一下,按 F3 开启,放在右边,仅显示一个文件的 tag,当只有一个窗口时自动关闭

map <F3> :TlistToggle<CR>
let Tlist_Use_Right_Window=1
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_WinWidt=25

需要自动开启加入 let Tlist_Auto_Open=1 即可
使用

 

快捷键 说明
< CR > 跳到 tag 定义的位置
< Space > 显示 tag 定义
u 更新 tag
j 向下移动
k 向上移动
x 放大缩小窗口
q 关闭窗口


NERDTree

目录树,用起来特别方便
安装

Plugin 'The-NERD-tree'

安装方法与之前相同
配置

单纯设置了快捷键

map <F2> :NERDTreeToggle<CR>
let NERDTreeWinSize=25

需要自动启动可以加入下面的代码

autocmd vimenter * NERDTree

使用

 

快捷键 说明
o 打开关闭文件或目录
t 在新标签中打开并转到文件
T 在新标签中打开文件
! 执行文件(文件名后面有 * 代表可执行)
j 向下移动
k 向上移动
m 显示系统菜单
p 转到父目录
P 转到根目录
q 关闭窗口


identline & delimitMate

这两个插件可以不用配置,直接安装便可使用
安装

Plugin 'indentLine.vim'
Plugin 'delimitMate.vim'

安装方法与之前相同


Cscope

这个插件在阅读代码时十分有效,可以方便找到定义和跳转
安装

首先如果系统没有安装 csope,需要先安装,在 ubuntu 上依旧很方便

sudo apt-get install cscope

然后在 vim 内通过 version 查看是否支持 cscope,如果结果含有 +cscope 则代表支持,否则需要加入 --enable-cscope 选项并重新编译 vim
使用

首先需要创建目标工程的符号表数据库

cd ~/linux-0.11
cscope –Rbq

-R 递归生成子目录内代码的索引
-b 建完数据库后不进入查询界面
-q 生成倒排索引,加快搜索速度

执行后会生成三个文件 cscope.out cscope.in.out cscope.po.out
然后打开 vim,执行 :cs add cscope.out 便可以开始使用搜索功能
用法 :cs f c|d|e|f|g|i|s|t name

 

选项 说明
s 搜索指定符号
g 跳转到指定符号的定义
d 搜索指定函数调用的函数
c 搜索调用指定函数的函数
t 搜索指定字符串
e 使用指定正则表达式搜索
f 搜索指定文件
i 搜索包含指定文件的文件

如果需要在打开 vim 时自动连接数据库,可以在配置文件加入下面的代码

if fileradable("cscope.out")
cs add csope.out
endif

意思是寻找当前目录的 cscope.out,如果有则连接,所以需要在指定目录打开 vim

cd ~/linux-0.11; vim


本文永久更新地址:http://www.linuxdiyf.com/linux/21779.html