vim-go 的 tutorial 裡頭有很多有趣、有用的技巧。取出一些我覺得比較好用的。
Import 的技巧
:GoImportAs ff fmt
:GoImport strings
Edit 的技巧
if 表示函數的內部 inside a function
dif = delete inside a function
yif = yank inside a function
vif = visual mode inside a function
af 表示整個函數 -> a function
daf = delete a function
yaf = yank a function
vaf = visual mode a function
Trace 程式碼的技巧
對 channel 的理解
:GoChannelPeers 選擇某個channel,顯示它的send/receive/def
對 variable 的理解
:GoReferrers 選擇某個變數,顯示所有被使用的地方。
對於 type 的理解
:GoImplements 選擇某個類別,顯示它實作的介面。(一個有搭配函數的類別就很可能是有實作介面的類別)
:GoDescribe 選擇某個類別,顯示所有使用它的函數。(用使用範例來"描述"一個類別)
對於 error 的理解
:GoWhicherrs 選擇某個錯誤,顯示它可能包含的錯誤資訊。
對 func 的理解
:GoCallees 選擇某個區域變數(該變數的型態是函數),顯示它可以對應到的函數。
:GoCallstack 選擇某個函數顯示它被呼叫時的call stack
:GoCallers 選擇某個函數的定義,顯示它被呼叫的位置
Refactor 的技巧
將區段的程式碼抽取出來,變成函數
:GoFreevars 區塊選擇一段程式碼之後,顯示這段程式碼裡的輸入變數(input variables)
:GoRename 修改一個變數的命名,自動修改多個位置。
註:在新版的 vim-go ,已經用 guru 取代了 oracle 。所以如果沒有看到 oracle ,不用再去找了。
Showing posts with label vim-go. Show all posts
Showing posts with label vim-go. Show all posts
Wednesday, August 31, 2016
Monday, May 9, 2016
vim的插件vim-go使用心得
這幾天認真地來試用了一些 vim-go 裡提供的指令:
1 :GoDef 可以快速跳到 symbol 的定義。( 按Ctrl + O 跳回 )
2 goimports 基本上,算是 gofmt 的加強版
直接在 .vimrc 裡設定,取代掉 gofmt
let g:go_fmt_command = "goimports"
3 :GoLint 可以得到一些很好的 code review 的建議。( 按 :ccl 可以關閉 quickfix window )
4 :GoRename refactor 的利器,用來快速修改函數的名稱
5 :GoAlternate 快速切換 test file 和 original source file
6 :GoVet 做靜態分析,抓出一些邏輯的 bug 。比方說,如果有資料結構有定義 marshal 後的json格式。而格式寫錯,就可以透過 go vet 抓得出來。
7 :GoErrCheck 可以檢查出所有沒有處理的 error 。許多函數都會丟出 error ,寫程式時粗心一點,就會忘記要處理妥善處理這些 error 。有時連寫進 log 這麼基本的事情也沒有做,於是就會造成「錯誤卻看不出來是錯誤」
1 :GoDef 可以快速跳到 symbol 的定義。( 按Ctrl + O 跳回 )
2 goimports 基本上,算是 gofmt 的加強版
直接在 .vimrc 裡設定,取代掉 gofmt
let g:go_fmt_command = "goimports"
3 :GoLint 可以得到一些很好的 code review 的建議。( 按 :ccl 可以關閉 quickfix window )
4 :GoRename refactor 的利器,用來快速修改函數的名稱
5 :GoAlternate 快速切換 test file 和 original source file
6 :GoVet 做靜態分析,抓出一些邏輯的 bug 。比方說,如果有資料結構有定義 marshal 後的json格式。而格式寫錯,就可以透過 go vet 抓得出來。
7 :GoErrCheck 可以檢查出所有沒有處理的 error 。許多函數都會丟出 error ,寫程式時粗心一點,就會忘記要處理妥善處理這些 error 。有時連寫進 log 這麼基本的事情也沒有做,於是就會造成「錯誤卻看不出來是錯誤」
Subscribe to:
Posts (Atom)