はじめに
VSCodeでPythonのワークスペース内でシンボル検索を行うことができますが,しばらく前から動かなくなってました.そのうち復活するかなと待っていましたが戻らなかったので調べました.
前提はVSCodeにMicrosoftのPython拡張をインストールしている状態です.
https://marketplace.visualstudio.com/items?itemName=ms-python.python
さきに結論
単純にPython拡張のワークスペース内のシンボル検索機能がデフォルトで無効に切り替わっていました.設定で有効にすると今まで通りに動きます.個人的には有効で困ること少ないので使っています.
https://github.com/microsoft/vscode-python/issues/9046
python.workspaceSymbols.enabled
という設定項目をtrueにすればOKです.
設定UIからならこんな感じ.
この設定を有効にすることで,ワークスペース内のシンボル検索が動くようになります.
おまけ
ショートカットキー
ワークスペース内のシンボル検索のショートカットキーはCtrl + T
です.コマンドパレットからはGo to Symbole in Workspase
です.
ctagsのインストール
Pythonの拡張機能ではワークスペース内のシンボル検索はctags
を使っているので,本機能を動かすにはctagsを別途インストールしておく必要があります.
Windowsの場合はGitHubからctagsの実行ファイルをダウンロードしてpathの通った場所に置いておけばOKです.または拡張機能の設定でctagsのパスを指定することもできます.
https://github.com/universal-ctags/ctags-win32/releases
シンボル検索機能を行うと,ワークスペース内の.vscode
ディレクトリにtags
ファイルが自動的に生成されます.(この仕様をきらって本機能はデフォルトでOFFになったようです.)
Microsoft Python Language Server
IntelliSenseのエンジンにMicrosoft Python Language Serverを使用するとctagsを使わずにワークスペース内のシンボル検索ができるようです.
Microsoft Python Language Serverに切り替えるにはPython拡張の設定でpython.jediEnabled
をfalseにします.trueの場合はJedi
というPython用の静的解析ツールが使われます.デフォルト設定ではJediが使われます.
https://pypi.org/project/jedi/
個人的には標準ライブラリの補完がJediのほうがうまく動いているようなので,デフォルト設定のままJediを使っています.
ファイル内のシンボル検索
ファイル内でのシンボル検索の場合はCtrl + Shift + O
のGo to Symbole in Editor
で行えます.こちらはJediを使っている場合でもctagsを使いません.(python.workspaceSymbols.enabled
がfalseでも動きます)