以下所有配置均在ubuntu16.04下安装完成:
配置vim插件管理工具
常用的vim插件管理工具有两个,一个是vim-pathogen另一个是Vundle.vim.
配置vim-pathogen
对比了一下两个工具,这里我选择的是vim-pathogen,其配置过程简单描述如下,详细信息直接参考官网就可以了:
-
首先在
~/.vim
下创建两个文件夹,一个是autoload,另一个是bundle,以后所有的插件应用都安装在bundle中。然后下载pathogen到autoload下面。$ mkdir -p ~/.vim/autoload ~/.vim/bundle && \ $ curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
-
配置
.vimrc
,在.vimrc
添加如下代码:$ execute pathogen#infect() $ syntax on $ filetype plugin indent on
基本配置完上述内容就可以使用了,详情请参考文档。
配置vimogen
vimogen结合上面的pathogen使得安装插件更加容易,只要在一个固定的文件.vimogen_repos
中添加上插件的github地址,然后就可以使用命令自动安装。在安装好pathogen之后,添加如下代码即可:
-
安装
$ git clone https://github.com/rkulla/vimogen $ chmod u+x vimogen $ cp vimogen to your $PATH
-
使用
首先将想要安装软件的地址放在~/.vimogen_repos
里面(见我的github),像下面这样:https://github.com/Valloric/YouCompleteMe https://github.com/jeaye/color_coded https://github.com/rdnetto/YCM-Generator https://github.com/scrooloose/nerdtree https://github.com/Shougo/neocomplete.vim
然后执行
vimogen
:$ vimogen
安装界面如下:
1) INSTALL 2) UNINSTALL 3) UPDATE 4) EXIT Enter the number of the menu option to perform:
直接按
1
就可以了,程序会自动安装上面链接里面的插件,如果已经安装,则会跳过。
如果按2
,则是卸载已经安装的插件,直接选择要卸载的插件对应的编号即可。
配置常用插件
1. YouCompleteMe
YouCompleteMe基本上支持各种语言的自动补全,其安装过程需要编译一下,因此这里介绍一下安装过程,后面的几个插件因为直接使用vimogen装上就可以直接使用,因此不在过多介绍后面几类插件。YCM
安装过程如下:
下载
直接使用vimogen一节介绍的方法讲YCM
下载到~/.vim/bundle
中,然后进入到~/.vim/bundle/YouCompleteMe/
路径下。-
安装
按照自己的需求选择编译命令,这里我因为常用的是python,但是也把c-family语言也选上了,因此执行下面命令进行编译安装:cd ~/.vim/bundle/YouCompleteMe python3 install.py --clang-completer # 注意:如果编译开始时出错一般是缺少各种工具,按照提示安装就可以了。
-
配置
这里根据自己的需求配置一些常用参数在.vimrc
中。
我配置的如下:"==================YCM==================== let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py' nnoremap
:YcmCompleter GoToDefinitionElseDeclaration 配置的第二行配置了一个快捷键用来使用
F12
实现go to definition的功能。自动补全的效果如下:
常见问题:
- 在有一次配置服务器上的vim编辑器时候,遇到下面的问题:
YouCompleteMe unavailable no module named builtins.
查资料发现:这是因为网络很慢,导致要依赖的文件还没有下载全,所以可以先把文件下载了。
解决办法:
$ cd /home/yourusername/.vim/bundle/YouCompleteMe
$ git submodule update --init --recursive
2. neocomplete.vim
- neocomplete.vim实现路径的自动补全功能,效果如下:
3. nerdtree
- nerdtree实现在左侧目录树功能,其效果如下:
- 使用方法:
- 按
m
显示出菜单,然后根据菜单提示可以进行更多操作,比如这里我想新建一个文件(夹),直接按a
, 然后输入想新建的文件(夹)即可。
- 按
4. vim-airline
主要负责状态栏显示
5. vim-gitgutter
主要负责git状态显示
6. vim-signify
和vim-gitgutter结合使用
7. vim-fugitive
更强大的git管理
8. auto-pairs
括号,引号等自动补全,很实用
9. indentLine
显示缩进
10. vim-colorschemes
代码配色方案
最终效果
- 通过配置上面插件,我经常使用的界面大概长成下面的样子。
.vimrc
最后把常用的.vimrc
文件配置贴出来用于给读者参考. 感兴趣的读者可以去我的github上下载。
"===============pathogen=================
execute pathogen#infect()
syntax on
filetype plugin indent on
""===============基本设置=================
set number "显示行号
set ruler "打开状态栏标尺
syntax on "自动语法高亮
set shiftwidth=4 "默认缩进4个空格
set softtabstop=4 "使用tab时 tab空格数
set tabstop=4 "tab 代表4个空格
set expandtab "使用空格替换tab
set showmatch "高亮显示匹配的括号
set hlsearch "高亮显示搜索结果
set t_Co=256 "颜色
set foldmethod=indent "代码折叠
set foldlevel=99
nnoremap za
"===============nerdtree=================
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif "当没指定文件时nerdtree自动打开
map :NERDTreeToggle
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif "当只剩下nerdtree时候vim自动退出
"==================YCM====================
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py'
nnoremap :YcmCompleter GoToDefinitionElseDeclaration
"================ultisnips================
""Trigger configuration. Do not use if you use
"https://github.com/Valloric/YouCompleteMe.
let g:UltiSnipsExpandTrigger=""
let g:UltiSnipsJumpForwardTrigger=""
let g:UltiSnipsJumpBackwardTrigger=""
"================airlinae=================
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline_left_sep = '»'
let g:airline_right_sep = '«'
let g:airline_symbols.crypt = ''
let g:airline_symbols.linenr = '☰'
let g:airline_symbols.maxlinenr = '㏑'
let g:airline_symbols.branch = '⎇'
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.spell = 'Ꞩ'
let g:airline_symbols.notexists = 'Ɇ'
let g:airline_symbols.whitespace = 'Ξ'
"================colorscheme==============
colorscheme molokai
# .vimogen_repos
https://github.com/Valloric/YouCompleteMe
https://github.com/SirVer/ultisnips.git
https://github.com/honza/vim-snippets.git
https://github.com/Shougo/neocomplete.vim
https://github.com/jiangmiao/auto-pairs
https://github.com/scrooloose/nerdtree
https://github.com/airblade/vim-gitgutter
https://github.com/mhinz/vim-signify
https://github.com/tpope/vim-fugitive
https://github.com/vim-airline/vim-airline
https://github.com/vim-airline/vim-airline-themes
https://github.com/Yggdroot/indentLine
https://github.com/flazz/vim-colorschemes
参考资料
- Building-Vim-from-source
- [ubuntu]自己编译安装vim 8.0的方法
- github: vim-pathogen
- github: Vundle.vim
- YouCompleteMe A code-completion engine for Vim
- 跟我一起学习VIM - vim插件合集
- vim查找/替换字符串
- Vim技巧之分割窗口
- vim 多窗口编辑
- VIM选择文本块/复制/粘贴
- ultisnips
- vimtex
- Auto-call auto-completion v2
- anyone_else_abusing_ultisnips?
- vim-airline
- dotfiles
- vim-latex-live-preview
- fugitive-vim-working-with-the-git-index
- vimcasts.org
- vim的powerline插件没有颜色
- Creating a new file or directory in Vim using NERDTree
- Using Spell Checking in Vim
- Vim 实用插件推荐(2017)
- Tmux使用手册