推薦一些我自己平時在用的高效vim插件,並配有安裝方法。
1. Vim-plug
Vim-plug 是一個自由、開源、速度非常快的、極簡的 vim 插件管理器。它可以並行地安裝或更新插件。你還可以回滾更新。它創建shallow clone最小化磁盤空間使用和下載時間。它支持按需加載插件以加快啟動時間。其他值得注意的特性是支持分支/標簽/提交、post-update 鈎子、支持外部管理的插件等。
安裝
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
配置
要安裝插件,你必須如下所示首先在 Vim 配置文件中聲明它們。一般 Vim 的配置文件是~/.vimrc。請記住,當你在配置文件中聲明插件時,列表應該以 call plug#begin(PLUGIN_DIRECTORY) 開始,並以 plug#end() 結束。
例如,我們安裝 “lightline.vim” 插件。為此,請在 ~/.vimrc 的頂部添加以下行
call plug#begin('~/.vim/plugged')
Plug 'itchyny/lightline.vim'
call plug#end()
使用
$ vim #打開vim:PlugStatus #查看插件狀態:PlugInstall #安裝之前在配置文件中聲明的插件
2. NERDTree
這個插件是幾乎所有研發人員都會安裝的一個插件——目錄樹,可以支持在不退出vim的編輯器的前提下,在文件中快速切換,同時能讓開發人員快速掌握項目目錄結構,是提升開發效率必不可少的工具。預覽結果如下圖所示:
安裝配置
使用vim-plug安裝,~/.vimrc
中配置
call plug#begin()
Plug 'preservim/nerdtree'
call plug#end()
NERDTree默認無須配置即可直接使用,當然更改部分映射后,可以使得目錄樹試用起來更加得心應手。最常見的配置在~/.vimrc添加如下命令,即可使用Ctrl+n快速開啟目錄樹。
map <C-n> :NERDTreeToggle<CR>
使用
目錄樹的使用主要通過在vim的command模式下鍵入如下命令,即可達到相應的效果。
?: 快速幫助文檔
o: 打開一個目錄或者打開文件,創建的是 buffer,也可以用來打開書簽
go: 打開一個文件,但是光標仍然留在 NERDTree,創建的是 buffer
t: 打開一個文件,創建的是Tab,對書簽同樣生效
T: 打開一個文件,但是光標仍然留在 NERDTree,創建的是 Tab,對書簽同樣生效
i: 水平分割創建文件的窗口,創建的是 buffer
gi: 水平分割創建文件的窗口,但是光標仍然留在 NERDTree
s: 垂直分割創建文件的窗口,創建的是 buffer
gs: 和 gi,go 類似
x: 收起當前打開的目錄
X: 收起所有打開的目錄
e: 以文件管理的方式打開選中的目錄
D: 刪除書簽
3. leaderF
LeaderF現在基本是Vim最好的模糊查找插件. 參考
https://github.com/Yggdroot/LeaderF
https://retzzz.github.io/dc9af5aa/
安裝
Plug 'Yggdroot/LeaderF', { 'do': './install.sh' }
文件檢索
就是前面說的那個場景, 有一大堆文件, 輸入幾個字母就可以篩選出少數幾個文件, 然后把你想要的那個挑出來. VIM過去有一個流行的插件叫CtrlP. 就是實現這個功能. 不過根據作者的說法, 那個插件效率比較差.
可以用這個老插件的快捷鍵Ctrl-P調出查找窗口, 然后輸入你記憶中的文件名片段就可以了. 其默認快捷鍵是f, 也是這個軟件名字的由來, 但是我習慣把這個快捷鍵map到別的功能上, 只用Ctrl-P.
let g:Lf_ShortcutF = '<c-p>'
buffer 檢索
<leader>b
4. NerdCommenter
如果你是一個酷愛寫注釋的程序員的話,那么你一定要用一下nerdcommenter。
NerdCommenter和Vim的Visual模式結合可以快速的注釋/取消注釋多行代碼,同時在行尾追加注釋並自動進入Insert模式可以方便的進行行內注釋。
5. YouCompleteMe
6. lightline
美化你的vim,具體查看官方。
安裝配置
Plug 'itchyny/lightline.vim'
set laststatus=2
set statusline=%F
let g:lightline = {
\ 'colorscheme': 'wombat',
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'readonly', 'filename', 'modified', 'saysth' ] ]
\ },
\ 'component': {
\ 'saysth': '今日任務:0. clean my room 1. nemo training flow 2. model zoo',
\ 'sunnyday': 'RE SO SO SI DO SI LA SO LA SI SI SI SI LA SI LA SO'
\ },
\ }