Wykonaj gofmt przy zapisywaniu pliku w IntelliJ

89

Używam IntelliJ z wtyczką Golang. Czy można skonfigurować IDE tak, aby wykonywało gofmt przy zapisywaniu pliku?

Myles McDonnell
źródło
3
Polecam używanie godoc.org/golang.org/x/tools/cmd/goimports zamiast standardowego gofmt. Goimports nie tylko uruchamia gofmt, ale także naprawia import.
David Brophy

Odpowiedzi:

133

Oczywiście, że możesz.

  1. zainstaluj wtyczkę File Watchers
  2. otwórz „Preferencje-> Narzędzia-> Obserwatory plików” i dodaj nowy obserwator
  3. zestaw File Type: Go, Program: ścieżkę abosolute o gofmt, Arguments:-w $FilePath$
  4. Kliknij OK

wprowadź opis obrazu tutaj

tak
źródło
4
To zawsze ponownie formatuje każdy plik w moim repozytorium, nawet Godeps / *. Więc zamiast tego zakodowałem na stałe moją ścieżkę. Jakikolwiek sposób na użycie $ FilePath $ bez rekurencyjnego formatowania każdego pliku w repozytorium za każdym razem? Wygląda na to, że FilePath daje mi efekt domina.
jayunit100
1
@ jayunit100 Możesz skonfigurować parametr zakresu 1. dodać zakres lokalny 2. nazwać go i ustawić wzorzec na: plik [$ proj]: * / &&! plik [$ proj]: Godeps // *! snapshot
Yee
1
To nie pozwala mi na edycję moich plików. Kiedy próbuję dodać nowy wiersz do kodowania, program przenosi mnie z powrotem do poprzedniego wiersza i usuwa nowy wiersz. jak to zatrzymać? uwaga: używając phpstorm
bia.migueis
6
nieważne, rozgryzłem to. „Natychmiastowa synchronizacja plików” sprawi, że fmt będzie działał zaraz po wprowadzeniu jakichkolwiek zmian. po prostu odznacz to i będzie działać tylko po zapisaniu pliku (lub
rozogniskowaniu
1
Uwaga, ta odpowiedź jest teraz nieco nieaktualna: wtyczka File Watchers ma teraz wstępnie wbudowany obserwator „go fmt”, który można dodać bez konieczności wykonywania dużej ilości pracy.
Aaron Shaver
61

Gogland EAP 16 wycofał akcje przy zapisywaniu i zastąpił je wtyczką File Watchers .

Jeśli wcześniej skonfigurowałeś akcje przy zapisywaniu, IDE wyświetli monit o zainstalowanie wtyczki i skonfigurowanie wszystkiego automatycznie. Jeśli chcesz samodzielnie skonfigurować ją od podstaw, sprawdź, czy masz wtyczkę File Watchers, a jeśli nie, zainstaluj ją.

Włącz gofmt:

  1. Iść do Settings | Tools | File Watchers .
  2. Kliknij +przycisk i wybierzgo fmt .
  3. Domyślne wartości są dobre.
  4. W opcji Advance wybierz:
    • Automatycznie zapisuj edytowane pliki, aby uruchomić obserwatora
    • Uruchamiaj obserwatora zmian zewnętrznych
  5. Kliknij OK!

Config

Możesz zrobić to samo dla goimportsi gometalinter.

David Miguel
źródło
8
Właściwie lepiej jest skonfigurować tylko goimports zamiast go fmt, ponieważ wykonuje również fmt, jak określono w dokumentach goimports: „oprócz naprawiania importu, goimports formatuje również kod w tym samym stylu co gofmt, aby można go było użyć jako zamiennika dla haka gofmt-on-save twojego redaktora ”
dux2
2
To jest poprawna odpowiedź dla Goland na październik 2018
George Aristy
54

Jeśli korzystasz z Goglanda, masz w Preferencjach opcję Włącz zapisywanie

wprowadź opis obrazu tutaj

Arun Gopalpuri
źródło
1
gogland to nie to samo, co wtyczka go.
spotter
To prawie to samo, co wtyczka Pythona vs Pycharm. Jedyną możliwą różnicą jest opóźnienie w aktualizacjach. Poza tym to - zapewnia dokładnie ten sam zestaw funkcji.
Alex Pavlenko
24
Mechanizm przy zapisywaniu jest przestarzały i zostanie usunięty w przyszłości. Zamiast tego użyj wtyczki File Watchers
Zangetsu
3
Ale nawet w najnowszym GoLandzie nie widzę tej opcji. Myślę, że po kliknięciu prawym przyciskiem myszy na nazwie pliku pod „Go” mogę umieścić plik. ale nie widzę opcji włączenia go podczas automatycznego zapisywania.
curiousengineer