電気ひつじ牧場

技術メモと日常のあれこれ

VSCodeでGoをいい感じにフォーマットする

普通はFormat Toolにgoimportsを指定すれば終わるはずだけど,上手くいかないのでなんとかするメモ

普通の方法

f:id:cha-shu00:20200614125434p:plain

設定を開いてGo: Format Tool:にgoimportsを指定する. これでgoimportsが規定のフォーマッターとして機能し,コマンドパレットでFormat Documentすればフォーマットとimportsの補完,削除が自動で行われる.

だがしかし

上手くいかない.Format Documentしてもフォーマットはされるがimportsの補完や削除は行ってくれなかった.コマンドラインgoimportsすれば期待通りに動くので,Format Documentした時にVSCodeから実行されるコマンドがgoimportsになってないのかもしれない.おそらく自分の環境が何か間違えてるのだと思うが,ggってもDeveloper toolを見てもよく分からなかった.

こんなことに時間を使うのも嫌なので,他のアプローチでなんとかする.

やりたいこと

キーボードショートカットを叩けばgoimports -w .相当の処理(カレントディレクトリ以下のgoファイルに対して再起的にgoimportsを適応)がしたい.

キーボードショートカットで任意コマンド呼び出し

VSCode標準の機能ではできないらしい*1ので,拡張機能を利用する.

marketplace.visualstudio.com

keybindings.jsonに以下を追記する.

    {
        "key": "ctrl+[",
        "command": "terminalCommandKeys.run",
        "when": "editorTextFocus && !editorReadonly",
        "args": {
            "cmd": "goimports -w ."
        }
    },

これでctrl + [を入力すればフォーマットとimport補完が効くようになる.

*1:よく調べればできるのかもしれない