Выполнить 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 запускаться, как только вы внесете какие-либо изменения. просто отмените
выбор,
1
Внимание, этот ответ уже несколько устарел: плагин File Watchers теперь имеет предварительно созданный наблюдатель go fmt, который вы можете добавить, не выполняя никаких дополнительных действий.
Аарон Шейвер
61

Gogland EAP 16 отказался от действий при сохранении и заменил их плагином 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 я не вижу такой опции. Я думал, что если щелкнуть правой кнопкой мыши на имени файла в разделе «Перейти», я могу загрузить файл. но я не вижу возможности включить его во время автосохранения.
curiousengineer 02