19

cscopePython コードを使用して成功した人はいますか? VIM 7.2 と の最新バージョンがcscopeインストールされていますが、コードのタグが正しく取得されません (常に数行ずれています)。スクリプトを試しましたpycscopeが、その出力は の最新バージョンではサポートされていませんcscope

何か案は?または、VIM で Python コードをブラウズするための代替手段はありますか? (私はcscope、 の単純なタグを超えて提供される追加機能に特に興味がありますctags)

4

6 に答える 6

18

編集:プロセスを段階的に実行します。

ソースの準備:

あふれんばかりの ctags、オプションがあります: -x

   Alternatively,  ctags  can generate a cross reference file which lists,
   in human readable form, information about the  various  source  objects
   found in a set of language files.

これが問題の鍵です。

 ctags -x $(ls **/*.py);                  # replace with find if no zsh

ソース オブジェクトのデータベースを既知の形式で提供します。

 man ctags;                               # make sure you use exuberant ctags!

Gnu Global は、「すぐに使える」タイプのファイルだけに限定されません。通常のファイル形式であれば、どのファイル形式でも使用できます。

また、マニュアルのセクション 3.7 で説明されているように、グローバルに付属している gtags-cscope を使用して、gtags を使用したショートカットを作成することもできます。Global/gtags が解析してオブジェクトを取得できる ctags 表形式ファイルの入力が得られるか、既知の形式の ctags ファイルと一緒に pycscope のソースを使用して、vim cscope コマンドの入力を取得できます。

if_cscope.txt。

いずれにせよ、それは十分に実行可能です。

おそらくidutilsの方がいいでしょうか?

以来、間違いなく可能

z3c.recipe.tags

on pypi では、ビルドアウト用のタグ ファイルを作成するために ctags と idutils の両方を使用します。この方法については、すぐに調査します。

もちろん、いつでも以下の greputils スクリプトを使用できます。これは idutils をサポートしています。idutils は python で動作することがわかっています。それが失敗した場合は、今年から vimentry と呼ばれるものもあり、python、idutils、および vim も使用します。

参照リンク (完全なリストではありません):

これがあなたの問題の解決に役立つことを願っています。私は確かに私を助けました。今夜は、うじ虫のピクスコープを持っていたら、とても悲しかったでしょう。

于 2010-09-20T16:37:32.237 に答える
15

これは私にとってはうまくいくようです:

Python コードのトップ ディレクトリに移動します。というファイルを作成しますcscope.files

find . -name '*.py' > cscope.files

cscope -R

cscope -b相互参照が適切に構築されない場合は、最初に実行する必要がある場合があります。

于 2010-11-23T16:28:46.460 に答える
12
  1. のメンテナとのやり取りからcscope、このツールはPythonで動作するように設計されておらず、その互換性を実装する予定はありません。現在機能しているものは、明らかに誤って機能しており、機能し続けるという約束はまったくありません。
  2. の古いバージョンを使用しているようですpycscope。最新バージョン0.3はcscopeDBでサポートされています。の作者は、のソースコードを読んでDBpycscopeの出力フォーマットを理解したと言っていました。その形式は意図的に文書化されていませんが、それでも現在0.3で動作します。これは、私が使用するソリューションです。cscopecscopepycsope

残念ながら、報奨金が宣言された後でも他の回答は助けを提供しなかったので、私はこの回答を受け入れるつもりです。賛成の答えはないので、正直なところ、賞金がどこに行くのかわかりません。

于 2010-09-23T15:20:49.373 に答える
2

すばらしいPython-mode-klenプラグインがあります。<C-c>gそれとロープ (python リファクタリング ライブラリ) がインストールされている場合、特定の用語の定義に移動するのはorと同じくらい簡単です<C-c>rag(最初はファイル タイプ マッピング、2 番目はグローバル マッピングです)。もっと便利な機能がありますが、私には役に立たないものもあります。それらはすべて無効にできます。cscope-in​​troにある質問リストの特徴:

  1. この記号はどこで使われていますか? <C-c>f. ただし、実際の行の代わりにクイックフィックス リストの結果が表示されるため、かなり混乱します-(ただし、正しい場所を指しています)。多分それは修正されるでしょう。
  2. それはどこで定義されていますか?このグローバル シンボルの定義は何ですか? この関数はソース ファイルのどこにありますか? <C-c>g
  3. <...> グローバルシンボルの定義は何ですか? <C-c>raj

それほど多くはありませんが、私はropevimの経験豊富なユーザーではありません.

于 2012-05-26T18:41:38.873 に答える
0

あなたと同じ質問を受けました。インターネットを閲覧した後、これを修正する方法を見つけました。

Python スクリプトを作成します。cscope_scan.py

import os

codeRootDir = os.getcwd()

__revision__ = '0.1'
__author__ = 'lxd'

FILE_TYPE_LIST= ['py']

if __name__ == '__main__':
    import os
    f = open('cscope.files','w')
    for root,dirs,files in os.walk(codeRootDir):
        for file in files:
            for file_type in FILE_TYPE_LIST:
                if file.split('.')[-1] == file_type:
                    f.write('%s\n' %os.path.join(root,file))
    f.close()
    cmd = 'cscope -bk'
    os.system(cmd)

このスクリプトをコードのルート フォルダーで実行するcscope.filesと、 が生成されて実行さcscope -bれます。コンピューターに何が起こるかわかりません。最後の 2 行はうまく機能していませんが、手動で a を入力しても問題ないと思いますcscope -bk:)

于 2012-03-30T07:46:06.280 に答える