VS Code でまだ Ctrl+クリック が効かない場合は、次を順に確認してください。
- Go 拡張機能を入れる
- [shift + command + P]
- コマンドパレットで Go: Install/Update Tools を実行して gopls を入れる
- コマンドパレットで Developer: Reload Window
- それでもだめなら再度 Go: Restart Language Server
ブログ記事としていかに続く文章
上記の手順を踏むことで、大半のケースでは無事に Ctrl+クリック(定義元へのジャンプ)が復活するはずです。
ここからは、なぜこのような現象が起きるのかという背景と、それでも解決しない場合の「次の一手」について解説します。
そもそも、なぜジャンプできなくなるのか?
VS Code での Go 開発において、コード補完や定義ジャンプなどの強力な機能は gopls(Go Language Server) が裏で支えています。VS Code 自体のアップデートや Go のバージョンアップ時、あるいは裏で重い処理が走ったタイミングなどで、この gopls のプロセスが一時的にハングアップしてしまうことがあります。
「さっきまで飛べていたのに急にジャンプできなくなった」というトラブルの9割は、この Language Server の一時的な不調が原因です。そのため、手順4の Restart Language Server が最も手っ取り早い特効薬になります。
5. それでも解決しない場合のチェックポイント:go.mod は適切ですか?
もし1〜4の手順をすべて試してもウンともスンとも言わない場合、エディタの設定ではなくプロジェクトの構成に原因があるかもしれません。特に以下の点を確認してみてください。
go.modが存在しているかgoplsはプロジェクトルートにあるgo.modを基準にワークスペース全体の依存関係を認識します。go mod initを忘れて単一の.goファイルだけを置いている状態だと、正しく解析されずジャンプが効かないことがあります。- VS Code で開いているディレクトリの階層は正しいか
go.modがあるディレクトリを VS Code の「ルート(一番上の階層)」として開いているか確認してください。リポジトリのルートを開いているけれど、Go のプロジェクト自体はずっと深い階層のサブディレクトリにある……といった場合、goplsが迷子になってしまうことがあります。
6. 最終手段:出力(Output)ログを見る
「ちゃんと設定しているはずなのにどうしても動かない!」という時は、VS Code の画面下部にあるパネルから「出力(Output)」タブを開き、右上のプルダウンから 「Go」 または 「Go (gopls)」 を選択してみてください。
ここで何らかのエラー(例えば「Go のパスが通っていない」「特定のパッケージのビルドに失敗している」「メモリ不足」など)が出力されていれば、解決のための具体的な手がかりを掴むことができます。
まとめ
Go の開発環境は非常にシンプルで強力ですが、エディタとの橋渡し役である gopls がご機嫌斜めになることには時々遭遇します。
「あれ?ジャンプできないな」と思ったら、まずは焦らずコマンドパレットを開いて Go: Restart Language Server。これは Go を書く上で息をするように叩くコマンドの一つになるので、いっそのこと押しやすいショートカットキーに割り当てておくのもおすすめですよ!
ぜひ設定を見直して、快適な Go 開発環境を取り戻してください。