安装vim
需要安装vim 7.4.1578以上,建议安装8.0及以上版本的,Ubuntu 19 默认是8.1的,直接sudo apt-get install vim就可以了。
sudo apt-get install vim
Vundle 插件管理工具
通过git来下载Vundle
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
在home目录下面的.vimrc配置文件中配置Vundle。
" Vundle manage
set nocompatible
filetype off
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" All of your Plugins must be added before thre following line
call vundle#end()
filetype plugin indent on
只要在该配置文件中添加“Plugin xxx”,即安装名为“xxx”的插件。
接着启动Vim,然后运行命令“:PluginInstall",即可下载并安装,有的插件可能会下载很久或者失败。
YouCompleteMe 自动补全插件
YouCompleteMe需要Vim版本在7.4.1578以上,并支持python2或者python3,还有一些相关的软件包。
查看vim版本
$ vim -version
查看python版本
一般系统默认就安装了几个python版本
按pythone再敲一下Tab健就可以看到有哪些版本了。
查看默认的python版本
$ python --version
安装相关软件包
$ sudo apt-get install build-essential cmake python-dev python3-dev
接着下载YouCompleteMe,在.vimrc中添加:
Plugin ‘Valloric/YouCompleteMe’
接着“PluginInstall”安装即可,这个下载比较久,耐心等待,过程可能会出现一些错误,自行百度。
接着编译YouCompleteMe
$ cd ~/.vim/bundle/YouCompleteMe
$ ./install.py --clang-completer
–clang-completer表示对C/C++的支持。
发生编译报错:
Cannot find path to libclang in prebuilt binaries
解决:
$ cd third_party/ycmd/clang_archives
$ mv libclang-8.0.0-x86_64-unknown-linux-gnu.tar.bz2 mlibclang-8.0.0-x86_64-unknown-linux-gnu.tar.bz2
重新下载
$ wget https://dl.bintray.com/micbou/libclang/libclang-8.0.0-x86_64-unknown-linux-gnu.tar.bz2
重新编译
$ ./install.py --clang-completer
拷贝文件
$ cp ~/.vim/bundle/YouComleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim
配置.vimrc
let g:ycm_server_python_interpreter=’/usr/bin/python’
let g:ycm_global_ycm_extra_conf=’~/.vim/.ycm_extra_conf.py’
这样就完成YouCompleteMe了。
ctags C源码跳转查找工具
安装ctags
$ sudo apt-get install ctags
使用方法,在需要工程目录下使用如下命令即可生成引索文件tags。默认只能在tags的所在目录下使用vim,在其子目录下使用Vim是不能使用ctags的跳转功能的。
$ ctags -R .
启动Vim后需要加载这个tags,使用如下命令即可加载。
:set tags=tags
常用的快捷键
Ctrl + ]
使用Ctrl + ] 跳转到光标处的函数或者变量的定义所在的地方。
Ctrl + T
Ctrl + T 返回跳转之前的地方
taglist
Taglist是vim的一个插件,提供源代码符号的结构化视图。
下载taglist:https://sourceforge.net/projects/vim-taglist/files/
解压后将doc,plugin放到.vim目录下即可。
taglist相关配置,打开.vimrc,加入如下:
""""""""""""""""""""""""""""
"Tag list (ctags)
""""""""""""""""""""""""""""
let Tlist_Ctags_Cmd='/usr/bin/ctags' "设定ctags程序路径
let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow=1 "如果taglist窗口是最后一个窗口,则退出vim
"let Tlist_Use_Right_Window=1 "在右侧窗口显示taglist窗口
let Tlist_Use_SingleClick=1 "单击tag就跳转
"let Tlist_Auto_Open=1 "启动VIM自动打开taglist
"let Tlist_Close_On_Select=1 "选择tag后自动关闭taglist
let Tlist_File_Fold_Auto_Close=1 "多文件时只显示当前文件的tag,其它的tag折叠
let Tlist_WinHeight=200 "taglist窗口高度
let Tlist_WinWidth=20 "taglist窗口宽度
"let Tlist_Use_Horiz_Window=1 "设置taglist窗口横向显示
"映射F8打开关闭taglist窗口
map <expr> <F8> bufloaded("__Tag_List__")?"q":":TlistOpen\<cr>"
效果如下:
使用TlistOpen打开taglist,使用Ctrl w + Ctrl w实现两个窗口的切换
vimrc常用命令
set fenc=utf-8 "设定默认解码
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
syntax on "自动语法高亮
syntax enable "语法高亮
set expandtab "将tab键转换为空格
set formatoptions=tcqro "使得注释换行时自动加上前导的空格和星号
set history=50 "设置冒号命令和搜索命令历史列表长度为50
set hlsearch "搜索时高亮显示被找到的文件
"set ignorecase smartcase "搜索时忽略大小写,但有一个或以上大写字母仍保持对大小写敏感
set incsearch "输入搜索内容时就显示搜索结果
set mouse= "设定在任何模式下鼠标都可用
"set nobackup "覆盖文件时不备份
set nocompatible "设定gvim运行在增强模式下, 不设置< cr > 不起作用
"set noignorecase "默认区分大小写
"set nolinebreak "在单词中间断行
"set scrolloff=5 "设定光标离窗口上下边界5行时窗口自动滚动
"set showcmd "在状态栏显示目录所执行的指定,未完成的指令片段也会显示出来
set wrap "自动换行显示
set tabstop=4 "设置tab长度为4
set softtabstop=4 "使得按退格键时可以一次删除4个空格
set shiftwidth=4 "设定>命令移动时宽度为4
set autoindent "自动缩进
set ruler "标尺信息,显示光标在哪
"set cindent "C语言缩进风格
set number "显示行号
set backspace=indent,eol,start "不设定的话在插入模式里无法使用退格键,delete和回车符等
""""""""""""""""""""""""""""
"Tag list (ctags)
""""""""""""""""""""""""""""
let Tlist_Ctags_Cmd='/usr/bin/ctags' "设定ctags程序路径
let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow=1 "如果taglist窗口是最后一个窗口,则退出vim
"let Tlist_Use_Right_Window=1 "在右侧窗口显示taglist窗口
let Tlist_Use_SingleClick=1 "单击tag就跳转
"let Tlist_Auto_Open=1 "启动VIM自动打开taglist
"let Tlist_Close_On_Select=1 "选择tag后自动关闭taglist
let Tlist_File_Fold_Auto_Close=1 "多文件时只显示当前文件的tag,其它的tag折叠
let Tlist_WinHeight=200 "taglist窗口高度
let Tlist_WinWidth=20 "taglist窗口宽度
"let Tlist_Use_Horiz_Window=1 "设置taglist窗口横向显示
"映射F8打开关闭taglist窗口
map <expr> <F8> bufloaded("__Tag_List__")?"q":":TlistOpen\<cr>"
"跨文件复制粘贴
vnoremap "y :w! /tmp/hgl.vim<CR><CR>
vnoremap "p :r /tmp/hgl.vim<CR><CR>
nnoremap "p :r /tmp/hgl.vim<CR><CR>