This is a cache of https://qiita.com/y-tsutsu/items/6b809b2977a7d485b9a7. It is a snapshot of the page at 2020-07-18T12:30:36.754+0000.
VSCodeでPythonワークスペース内のシンボル<strong>検索</strong>を復活させる - Qiita
Help us understand the problem. What is going on with this article?

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

はじめに

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

y-tsutsu
itage
ITAGEは「IT」のAGENCYになることを夢、目標として進化、変化していきます。「It’s It Agency」
http://www.itage.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした