我的 Golang Vim 配置
去年九月發過一篇開發 Golang 的 IDEs,不過現在我基本上都使用 vim 開發了, update 一下我現在的配置。所有資料都可以在我的 vimrc 找到。
插件
和之前一樣最主要還是靠 golang 官方 plugin 以及 gocode 這兩個,多加了一個 gotags 取代 ctags,這個超好用的。
由於 golang 官方 plugin 和 gocode 的 plugin 都沒有抽出單獨的 repo,不方便 vundle 或 pathogen 使用,所以我之前就有自己抽出方便安裝的 repo:
如果搭配 supertab 可以設 let g:SuperTabDefaultCompletionType = "context"
來 trigger gocode 自動補完。
gotags 的部份則是要搭配 tagbar 來使用,抓的非常準(感謝 go 天生內建語法樹 parser),而且安排的順序就完全是建議的順序,按這個順序組織你的程式碼就對了。
vim-airline 現在也內建 tagbar 支援了,所以可以直接在狀態列看到現在在程式的什麼區塊。
設定與巨集
go fmt
實在是一個非常優秀的設計,不用再為了 style 的瑣事吵半天。在存檔的時候順手執行 go fmt
吧!安裝過官方插件的話,只要加上 au FileType go au BufWritePre <buffer> Fmt
即可。
由於 golang 的哲學是,不需要的程式碼就不要,所以沒用到的變數或 import package 都會被當成 error 處理。導致常常改一改就要回到檔案最上方處理 import。多利用 :Import <package>
跟 :Drop <package>
兩個命令可以簡化這個步驟。
測試的部份,原來我就有使用 tslime 這個插件,就多 bind 一個指令 au FileType go map <leader>t :Tmux go test<CR>
把 go test
指令送到 tmux 其他 window。目前這樣就能滿足我的需求。
參考資料
還有更多 plugin 可以參考這篇:My (Go-centric) Vim Setup