LoginSignup
51
43

More than 5 years have passed since last update.

goimportsを使ってIntelliJ IDEA でGoのコードのimportを手軽に整理する

Last updated at Posted at 2014-12-23

import文を削るのが手間

GoをIntelliJで書いていると、必要なimportは結構よしなに追加してくれます。
ところが、そのimportしたパッケージが不要になった場合(使用してるコードを削除する)、そのimportを削除するところまではやってくれません。
Goは不要なimport文があるとコンパイルが通らないので、自分でimport文を削らなければならずちょっと手間です。

GoImportsを使う

Goimportsというツールが有ります。
https://github.com/bradfitz/goimports

これを使用することで、不要なimportsの削除、標準パッケージであればimportsの追加をしてくれていい感じに整理もしてくれます。

導入は簡単で

go get golang.org/x/tools/cmd/goimports

をすればOK
あとはコマンドライン上で、goimports -w hoge.goとするだけでファイルのimportを整理してくれます。
ちなみに -w 付けないと標準出力に吐き出されます。

IntelliJ IDEAから呼び出す

これでいつでも整理できるようにはなりましたが、都度コンソールから実行するのは不便です。
IntelliJから呼び出せるようにしましょう。
まず一旦 goimportsのフルパスを確認。

$ which goimports -> /Users/yourname/bin/goimports

で、適当な場所(今回は/usr/local/bin/ )にシェルスクリプトを作成します。

$ touch /usr/local/bin/goimp.sh
$ chmod +x /usr/local/bin/goimp.sh

中身をこんな感じに編集

goimp.sh

#!/bin/sh

if [[ $1 == *.go ]]
then
         /Users/yourname/bin/goimports -w $1
fi

きちんと実行できるかは試しておいたほうがよいです。

$ /usr/local/bin/goimp.sh /Users/yourname/src/hoge/fuga.go

きちんとimportが整理されているようなら、外部ツールとして登録します。
Preference(⌘+,)を開いて、IDE SettingsExternal Toolsを開きます。で、追加ボタン。

Preferences.png

名前は自分のわかりやすいもの、Groupも適当にGolangとかにしておくと良いです。
Open Consoleのチェックは外しておいた方がイチイチ実行するたびにターミナル出てこなくて楽です。
Programのところにはさっきのシェルスクリプト、Parameters には、右のinsert macroから $FilePath$ を選びましょう。

大体こんな感じ

2014-12-24 0.59.19.png

あとは保存してOK.

実行するには、メニューのToolsからさっきのGroupに入れればOK.
Goの方に入れたいけど出来ないのかな。

2014-12-24 1.01.28.png

Macro化

これでIntelliJからいつでもgoimportsが実行できるようになりました。
しかしまだ、面倒ですね。
出来たら保存のアクション(IntelliJは基本的に自動保存なので、明示的に⌘+Sする必要はないですが)の時に都度実行されて欲しい感じもあります。

なので、この動作をmacroとして設定します。

メニューの EditMacroStart recording macroを選びます。
2014-12-24 1.05.03.png

ここからマクロとして記録されてしまうのでIntelliJの中では余計な動作をしないようにしましょう。

  1. Tools からさっきのgoimportsを実行する
  2. “File から Save allを実行する
  3. 再度 EditMacro から Stop recording macroを選ぶ
  4. 適当な名前をつける。

ここからはもうマクロじゃないので適当に。

これでマクロとして一連の操作が保存されたので、キーボードショートカットして登録すればOK。

Preference(⌘+,)を開いて、IDE SettingsKeymap を開いて、さっき付けたマクロの名前で検索。
あとは自分の分かりやすいショートカット、今回はctrl+sをアサインして終わり。
都度、ctrl+sを押すだけでgoimportsが実行されるようになりました。

よく見たら設定にあった

スクリーンショット 2014-12-24 1.14.56.png

まぁでもこれを応用して、
gofmt
golint https://github.com/golang/lint
goimports https://github.com/bradfitz/goimports

をまとめて実行してくれるようなシェルスクリプトにすれば、結構いい感じになるんじゃないかと。

テスト環境
・Mac OSX 10.9.5
・IntelliJ IDEA CE 13.1.4
・Go 1.3

参考
http://marcesher.com/2014/03/30/intellij-idea-run-goimports-on-file-save/

51
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
43