Programming Your Vim for Programming

最近開始把之前 Python 的各種 snippets 和 libraries 轉到 Golang, 試了幾個 plugins, 都不滿意,然後頭腦發熱又一次去試 Sublime Text

平心而論這貨上手很順,編輯方面在熟悉了它的一些基本操作和快捷鍵後速度也並不慢。好吧,然後我假裝自己用得很開心的去找一些之前 Vim 下面用的順手的 plugins,最後卡在 file templates 上。找來找去只有 FileHeader 比較合適,可在 Vintagous 模式下用下來各種彆扭,加上 VI 模式下新建的文檔因為 paste off 問題会導致格式錯誤,這個問題以 FileHeader 的實現方式來說基本無解,要麼我就把自己所有的 templates 都改成有原生斷行的模式,要麼我自己去 hack Vintagous, 可兩樣我都不願意幹。後來又發現有個關於 file_name 獲取的小問題,我提了個 Issue,可作者卻在還沒有解決的情況下就把它 closed 了,十二萬分汗, 這可不是做學問的態度啊親 (-__-“)

咱還有 Vim 不是。認真想了想,發現我不爽的其實只是 SPF13 Vim 而已。這貨入門很方便,如果你之前有過上千行的 .vimrc,你懂的。SPF13 VimJanus 這類的 Vim Distributions, 有著一堆別人覺得好的 plugins、key mappings, color schemes, 嗯呐,這其實已經和學習一個新的 IDE 差不了多少了啊親。

想了一想,自己用 Vim 已經將近十年了,與其費力將其他工具打造得更像它,還不如好好的利用它。好吧,折騰吧,in short, 這是結果:

dotvim with VimFiler & Tagbar

dotvim 所包含的 plugins

插件管理

文件管理

  • scrooloose/nerdtree: Vim 下最強樹形文件管理器,沒有之一,已經加了 NERDTreeTabs 來解決 NERDTree 單獨啟用時可能產生的視窗混亂問題,toggle 的快捷鍵默認設定如下。
map <C-o>   <plug>NERDTreeTabsToggle<CR>
  • kien/ctrlp: 文件查找,Sublime Text control-p 的 copycat,簡單好用,查找路徑已設定為 NERDTree 當前打開結點.

GIT

nnoremap <silent> <leader>gs :Gstatus<CR>
nnoremap <silent> <leader>gd :Gdiff<CR>
nnoremap <silent> <leader>gc :Gcommit<CR>
nnoremap <silent> <leader>gb :Gblame<CR>
nnoremap <silent> <leader>gl :Glog<CR>
nnoremap <silent> <leader>gp :Git push<CR>
nnoremap <silent> <leader>gw :Gwrite<CR>
nnoremap <silent> <leader>gr :Gremove<CR>

Autocomplete

File Editing

Programming

Status Bar

  • bling/vim-airline: 狀態欄顯示,已啟用 Buffers List, 結合下面設定的快捷鍵, 不再需要單獨的插件(如 MiniBufExpl) 來管理 Buffers, 如此也避免了視窗跳轉時可能產生的問題。
:nmap <C-l>     :bnext<CR>
:nmap <C-h>     :bprevious<CR>
:nmap <C-k>     :bdelete<CR>

Color Scheme

  • tomasr/molokai: 這是目前為止我測試過能同時在 iTerm 和 Gvim 不經設定就能表示良好並一致的配色方案,也是 Sublime Text 的默認配色。

安裝 dotvim:

curl -s https://raw.githubusercontent.com/jimzhan/.vim/master/setup | sh

dotvim on Github