注:本文中所有的插件均爲作者長時間實踐挑選的產物,適合入門Vim編輯器之後的人羣。通過增加不同插件,幾乎可以完全拋棄鼠標,使代碼效率倍增,給人一種很爽的感覺,哈哈哈。
以下所有配置均在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 <F12> :YcmCompleter GoToDefinitionElseDeclaration<CR>
配置的第二行配置了一個快捷鍵用來使用
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 <space> 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 <C-n> :NERDTreeToggle<CR>
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 <F12> :YcmCompleter GoToDefinitionElseDeclaration<CR>
"================ultisnips================
""Trigger configuration. Do not use <tab> if you use
"https://github.com/Valloric/YouCompleteMe.
let g:UltiSnipsExpandTrigger="<c-o>"
let g:UltiSnipsJumpForwardTrigger="<c-j>"
let g:UltiSnipsJumpBackwardTrigger="<c-k>"
"================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使用手冊