Виконайте gofmt при збереженні файлу в IntelliJ


89

Я використовую IntelliJ з плагіном Golang. Чи можна налаштувати IDE для запуску gofmt при збереженні файлу?


3
Я рекомендую використовувати godoc.org/golang.org/x/tools/cmd/goimports замість стандартного gofmt. Goimports не тільки запускає gofmt, але й фіксує імпорт.
Девід Брофі,

Відповіді:


133

Звичайно, ви можете.

  1. встановити плагін File Watchers
  2. відкрийте "Налаштування-> Інструменти-> Переглядачі файлів" & Додати новий спостерігач
  3. набір File Type: Go, Program: на abosolute шлях gofmt, Arguments:-w $FilePath$
  4. натисніть OK

введіть тут опис зображення


4
Це завжди переформатує кожен файл у моєму репо, навіть Godeps / *. Тож я натомість жорстко закодував свій шлях. Будь-яким способом використовувати $ FilePath $ без рекурсивного форматування кожного файлу в репозиторії кожного разу? Здається, FilePath має для мене ефект доміно.
jayunit100

1
@ jayunit100 Ви можете налаштувати параметр Scope 1. додати локальну область 2. назвіть її та встановіть Pattern на: file [$ proj]: * / &&! file [$ proj]: Godeps // *! знімок
yee

1
Це не дозволяє мені редагувати свої файли. Коли я намагаюся додати новий рядок для кодування, програма повертає мене до попереднього рядка і видаляє мій новий рядок. як це зупинити? примітка: за допомогою phpstorm
bia.migueis

6
неважливо, я це зрозумів. "Негайна синхронізація файлу" зробить його таким, що fmt запускається, як тільки ви вносите зміни. просто скасуйте вибір, і він буде працювати лише при збереженні файлу (або розфокусуванні вікна)
bia.migueis

1
Зверніть увагу, ця відповідь зараз дещо застаріла: плагін File Watchers тепер має заздалегідь побудований спостерігач "go fmt", який ви можете додати, не потребуючи великої роботи взагалі.
Aaron Shaver

61

Gogland EAP 16 припинив дії On Save та замінив їх плагіном File Watchers .

Якщо ви вже налаштували дії "Зберегти", IDE запропонує встановити плагін і налаштувати все автоматично. Якщо ви хочете налаштувати його з нуля самостійно, перевірте, чи є у вас плагін File Watchers, а якщо не встановлено.

Увімкнути gofmt:

  1. Перейти до Settings | Tools | File Watchers.
  2. Клацніть на +кнопку та виберіть go fmt.
  3. Значення за замовчуванням хороші.
  4. У додаткових параметрах виберіть:
    • Автоматичне збереження відредагованих файлів для запуску спостерігача
    • Увімкніть спостерігача щодо зовнішніх змін
  5. Клацніть добре!

Налаштувати

Ви можете зробити те ж саме для goimportsі gometalinter.


8
Насправді краще налаштувати лише goimports замість go fmt, оскільки він також виконує fmt, як зазначено в документах goimports: "окрім виправлення імпорту, goimports також форматує ваш код у тому ж стилі, що і gofmt, щоб його можна було використовувати як заміну для вашого редактора gofmt-on-save хук "
dux2

2
Це правильна відповідь для Голанда станом на жовтень 2018 року
Джордж Арісті

54

Якщо ви використовуєте Gogland, у вас є опція Увімкнути Зберегти під Налаштуваннями

введіть тут опис зображення


1
gogland - це не те саме, що і плагін go.
споттер

Це майже те саме, що і плагін python проти pycharm. Єдина можлива різниця - затримка оновлення. Інше, ніж це - воно надає вам точно такі ж набори функцій.
Олексій Павленко

24
Механізм збереження застарілий і буде вилучений у майбутньому. Натомість використовуйте плагін File Watchers
Zangetsu

3
Але навіть в останньому GoLand я не бачу цього варіанту. Хоча, клацнувши правою кнопкою миші на назві файлу, у розділі "Перейти" я можу fmt файл. але я не бачу можливості ввімкнути його під час автоматичного збереження.
curiousengineer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.