2014-11-09 68 views
0

我已經使用Vim和Vim-Go插件編寫了一個Go包(package commands)文件(下面還有golang教程)。這些軟件包中有幾個還沒有在軟件包中使用。當我保存文件:w時,Vim似乎正在刪除未使用的軟件包,這實際上很煩人,因爲這些未使用的軟件包將被使用。我只是沒有爲他們添加必要的代碼。有沒有辦法在Vim-Go中關閉此功能,或者我是否必須刪除整個插件才能擺脫這種惱人的行爲?vim-go在寫入磁盤時刪除未使用的代碼

之前寫

package commands 
import (
    "fmt" 
    "os" 
    "time" 

    rss "github.com/jteeuwen/go-pkg-rss" 
    "github.com/spf13/cobra" 
    "github.com/spf13/viper" 
) 

保存

import (
    "github.com/spf13/cobra" 
    "github.com/spf13/viper" 
) 

回答

4

後這是因爲你使用goimports作爲工具格式化你的Go代碼時使用(我認爲VIM-GO在默認情況下做到這一點 - 它默認保存格式化代碼)。 goimports爲您刪除未使用的進口..多數民衆贊成爲什麼它如此之大。你會學到在某些時候喜歡它:)

現在,你想要使用的是gofmt來格式化你的代碼,它不會觸摸導入 - 它只是格式化代碼。你可以把這個在您的.vimrc

let g:go_fmt_command = "gofmt" 

如果你決定要在你的文件手動運行goimports你做了上述後..你可以運行。

您也可以選擇另一種選擇,如果你喜歡:你可以把這個放入你的.vimrc關閉格式上節省:

let g:go_fmt_autosave = 0 

然後,你仍然可以格式化你的代碼時使用goimports ..但它將不會自動保存。

+1

謝謝,這是非常奇怪的默認行爲imo,因爲它不鼓勵經常保存文件,除非你強迫自己進入代碼使用後才導入包的奇怪行爲,這是絕對愚蠢的,因爲你可以給包在OP – Leahcim 2014-11-09 02:18:40

+1

中代碼中需要使用的自定義名稱(請參閱例如'rss')它並不奇怪 - 「goimports」可以同時使用。如果你啓動一個新文件並輸入'http.ListenAndServe(「:8080」,nil)' - 它會自動爲你導入'net/http'。如果你刪除該行,它將刪除導入。這可以節省令人難以置信的文件和擊鍵量,因爲未使用的導入是編譯器錯誤。如果你決定使用'net/http',你必須跳到你的導入區。手動導入..跳回..等'goimports'保存所有這些。 – 2014-11-09 02:19:57

+1

好吧,我還沒有偶然發現。儘管如此,我更喜歡不使用它。謝謝你的幫助。 – Leahcim 2014-11-09 02:21:45