LoginSignup
2
2

More than 3 years have passed since last update.

VSCodeでPythonワークスペース内のシンボル検索を復活させる

Last updated at Posted at 2020-04-29

はじめに

VSCodeでPythonのワークスペース内でシンボル検索を行うことができますが,しばらく前から動かなくなってました.そのうち復活するかなと待っていましたが戻らなかったので調べました.
image.png
前提はVSCodeにMicrosoftのPython拡張をインストールしている状態です.
image.png
https://marketplace.visualstudio.com/items?itemName=ms-python.python

さきに結論

単純にPython拡張のワークスペース内のシンボル検索機能がデフォルトで無効に切り替わっていました.設定で有効にすると今まで通りに動きます.個人的には有効で困ること少ないので使っています.
https://github.com/microsoft/vscode-python/issues/9046

python.workspaceSymbols.enabledという設定項目をtrueにすればOKです.
image.png
設定UIからならこんな感じ.
image.png

この設定を有効にすることで,ワークスペース内のシンボル検索が動くようになります.
image.png

おまけ

ショートカットキー

ワークスペース内のシンボル検索のショートカットキーはCtrl + Tです.コマンドパレットからはGo to Symbole in Workspaseです.
image.png

ctagsのインストール

Pythonの拡張機能ではワークスペース内のシンボル検索はctagsを使っているので,本機能を動かすにはctagsを別途インストールしておく必要があります.
Windowsの場合はGitHubからctagsの実行ファイルをダウンロードしてpathの通った場所に置いておけばOKです.または拡張機能の設定でctagsのパスを指定することもできます.
image.png
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が使われます.
image.png
https://pypi.org/project/jedi/

個人的には標準ライブラリの補完がJediのほうがうまく動いているようなので,デフォルト設定のままJediを使っています.

ファイル内のシンボル検索

ファイル内でのシンボル検索の場合はCtrl + Shift + OGo to Symbole in Editorで行えます.こちらはJediを使っている場合でもctagsを使いません.(python.workspaceSymbols.enabledがfalseでも動きます)
image.png

ワークスペース内での検索と使い分けるといいと思います.また先頭に:を入力するとカテゴリごとに並び変わるので便利です.
image.png

2
2
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
2
2