Виконайте 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.