我學習計算機不久就開始用了 vim,到如今也三四年了,且算是對 vim 有了必定的控制力。在這裏分享一下使用過程當中的一些「心路歷程」,說實話,要留意的小地方有不少,可是因爲不少不可抗(_懶_)因素,本系列並不保證還有後續 :)git
如下內容適用於對 vim 有必定使用經驗的用戶,相關的具體配置參見 space-vim。有些內容我雖然給出了連接,可是可能並無完整貼出代碼,須要你自行查找,理解並抽取整合對本身有用的地方。github
vim 自己並無 project 的概念,只有工做目錄 working directory, :echo getcwd()
能夠查看當前的工做目錄。vim-rooter 能夠給 vim 引入 project 的概念,它會自動將 vim 的工做目錄切換到項目根目錄。在 vim-rooter 中,所謂 project,是指符合某些「特徵」的目錄,好比有些目錄含有 Rakefile,.git 等,這些目錄就會被認爲是項目的根目錄。vim
有了項目根目錄之後,咱們就可以以項目爲單位進行各類查找搜索等等。好比,因爲 fzf 的一些命令,好比 Ag
默認是在當前目錄下進行,實際就變成了在項目根目錄下搜索。固然了,也能夠顯式參考 space-vim 的 fzf 配置 指定 fzf Ag
的搜索目錄:app
call fzf#vim#ag(a:query, extend({ \ 'dir': spacevim#util#RootDirectory(), \ 'options': '--prompt="'.spacevim#util#RootDirectory().'> "'}, \ g:fzf_layout))
spacevim#util#RootDirectory() 對 vim-rooter 進行了簡單封裝,若是存在 vim-rooter 會直接進行調用,不然會進行簡單探測是不是 git 倉庫。異步
fzf 是一個命令行的模糊查找工具,用過的人應該知道,單就一個 CTRL-R
查找歷史就值得強烈推薦,更沒必要說其餘各類可以提高生產力的地方。若是使用 fzf,那麼 fzf.vim 也是必不可少。工具
fzf.vim 提供的各類功能就不細談了,這裏談一下可能出現的槽點:有人以爲 fzf.vim 的模糊查找太模糊了,候選項太多,有時候因爲對模糊查找的依賴性,致使輸入比較隨性,反而比精確查找要輸入更多字符。學習
這裏提幾個建議:優化
:FZF ~/.vim/plugged
。不要上來就 :FZF
默認在用戶目錄下查找,那天然是候選項很是多。這一點只要用 vim-rooter 就能夠實現,如今大都用的都是 git,通常項目都是可識別的。Ag
,好比不要直接 :Ag
打開 fzf 再輸入想要查找的內容,交互式地查詢雖然比較酷,可是通常沒有在調用時就指定查找字符串更加高效。好比一個比較實用的就是用 Ag
查找當前光標下的詞。call fzf#vim#ag(expand('<cword>'), extend({ \ 'dir': spacevim#util#RootDirectory(), \ 'options': '--prompt="'.spacevim#util#RootDirectory().'> "'}, \ g:fzf_layout))
不少人的狀態欄一開始大都只是爲了看起來酷而已,我也不能免俗 :)。最先的 space-vim 狀態欄效果是仿 spacemacs ,裏面顯示了各類信息。spa
後來狀態欄部分被提取成了一個獨立的插件 eleline.vim。隨着時間的推移,我愈來愈以爲顯示的不少信息其實有點多餘,因而就有了下面的精簡模式。插件
安裝 eleline.vim 並在 .vimrc
中設置:
let g:eleline_slim = 1
就可使用精簡模式,只顯示 buffer number, window number, filename 還有一些插件的信息。
若是想要在精簡模式查看多一些信息的話,能夠用 CTRL-G
,見 :h CTRL-G
。若是對默認的 CTRL-G
不滿意,也能夠參考 space-vim 對 CTRL-G
進行加強.
nnoremap <silent> <C-G> :call spacevim#vim#file#CtrlG()<CR>
默認的 CTRL-G
:
"/usr/local/etc/profile.d/z.sh" 243 lines --65%--
加強後:
"/usr/local/etc/profile.d/z.sh" 243 lines --65%-- Cursor 159:1 8.6K TOT:2 [sh]
eleline.vim 如今採用異步的方式獲取 git branch 信息,代碼參考了 chemzqm 的 statusline.vim。由於 chemzqm 在 V2EX 的一個帖子提到,經過系統調用,也就是直接依賴 vim-fugitive 獲取 git branch 可能會對啓動時間有幾十毫秒的影響。不過他可能以 neovim 爲主,並無支持 vim8,我在他的基礎上加入了 vim8 的支持 :)。
更多關於 vim 的啓動優化,有興趣能夠查看 chemzqm 的這篇文章:vim 啓動速度優化的一些經驗 。
今天就先講這麼多了,下一篇可能更多講講如何配置更美觀的一些小細節。由於我高中是學美術的,大學也在傳播學院呆過一年多,因此對審美有必定要求,對死板的界面實在看不下去 :(。
總之,happy vimming :)