IntelliJのファイル保存でgofmtを実行します


88

GolangプラグインでIntelliJを使用しています。ファイル保存時にgofmtを実行するようにIDEを構成することは可能ですか?


3
標準のgofmtの代わりにgodoc.org/golang.org/x/tools/cmd/goimportsを使用することをお勧めします。Goimportsはgofmtを実行するだけでなく、インポートを修正します。
David Brophy

回答:


132

もちろんできます。

  1. FileWatchersプラグインをインストールする
  2. [設定]-> [ツール]-> [ファイルウォッチャー]を開き、新しいウォッチャーを追加します
  3. セットFile TypeGoProgram:の絶対パスgofmtArguments-w $FilePath$
  4. クリック OK

ここに画像の説明を入力してください


4
これにより、Godeps / *を含め、リポジトリ内のすべてのファイルが常に再フォーマットされます。そのため、代わりにパスをハードコーディングしました。リポジトリ内のすべてのファイルを毎回再帰的にフォーマットせずに$ FilePath $を使用する方法はありますか?FilePathが私にとってドミノ効果を持っているようです。
jayunit100 2015年

1
@ jayunit100スコープパラメータを設定できます1.ローカルスコープを追加します2.名前を付けてパターンを次のように設定します:file [$ proj]:* // &&!file [$ proj]:Godeps // *!スナップショット
2015年

1
これでは、ファイルを編集できません。コードに新しい行を追加しようとすると、プログラムは前の行に戻り、新しい行を削除します。どうすればそれを止めることができますか?注:phpstormの使用
bia.migueis 2015

6
気にしないで、私はそれを理解しました。「即時ファイル同期」により、変更を加えるとすぐにfmtが実行されるようになります。選択を解除するだけで、ファイルの保存(またはウィンドウのフォーカス解除)でのみ実行されます
bia.migueis 2015

1
ちなみに、この回答は現在やや時代遅れです。FileWatchersプラグインには、多くの作業を行うことなく追加できるビルド済みの「gofmt」ウォッチャーが含まれています。
アーロンシェーバー

61

Gogland EAP 16は、保存時アクションを非推奨にし、ファイルウォッチャープラグインに置き換えました。

以前に保存時アクションを構成したことがある場合、IDEはプラグインをインストールし、すべてを自動的に構成するように要求します。自分で最初からセットアップする場合は、File Watchersプラグインがあるかどうかを確認し、ない場合はインストールします。

gofmtを有効にします。

  1. に移動しSettings | Tools | File Watchersます。
  2. +ボタンをクリックして、を選択しますgo fmt
  3. デフォルト値が適切です。
  4. 事前オプションで以下を選択します。
    • 編集したファイルを自動保存してウォッチャーをトリガーする
    • 外部の変更でウォッチャーをトリガーする
  5. [OK]をクリックします。

構成

あなたは同じことを行うことができますgoimportsし、gometalinter


8
実際には、goimports docsで指定されているように、fmtも実行するため、go fmtではなくgoimportsのみを設定することをお勧めします。編集者のgofmt-on-saveフック用」
dux2 2018年

2
これは、2018
George Aristy

54

Goglandを使用している場合は、[設定]の下の[保存時]オプションがあります

ここに画像の説明を入力してください


1
goglandはgoプラグインと同じではありません。
スポッター2017年

Pythonプラグインとpycharmのようにほとんど同じです。考えられる唯一の違いは、更新の遅れです。それ以外は、まったく同じ機能セットを提供します。
Alex Pavlenko 2017

24
On Saveメカニズムは非推奨であり、将来削除される予定です。代わりに
FileWatchers

3
しかし、最新のGoLandでも、このオプションは表示されません。ファイル名を右クリックすると、[移動]の下でファイルをfmtできます。しかし、自動保存中にそれを有効にするオプションが表示されません。
curiousengineer 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.