10

Vim で cscope.out をロードした後、毎回、Vim の "pwd" を cscope.out ファイルがあるディレクトリと同じディレクトリに変更する必要があります。そのため、cscope のタグ ファイル cscope.out で絶対パスを使用するよう強制する方法がある場合、Vim セッションの pwd が cscope.out ファイルがあるディレクトリと同じであるかどうかに関係なく適用されます。

4

6 に答える 6

16

オプションを設定することで、cscope.out ファイルの場所に相対的なcscope.out 内のパスを解釈するよう vim に指示できcscoperelativeます。から:help csre:

'cscoperelative' が設定されている場合、cscope に接頭辞が指定されていない場合 (接頭辞は cscope の -P オプションの引数です)、cscope.out の場所 (通常はプロジェクトのルート ディレクトリ) のベース名が接頭辞として使用されます。絶対パス。デフォルトはオフです。注: このオプションは、cscope (cscopeprg) がプレフィックス パス (-P) なしで初期化されている場合にのみ有効です。

: csre を設定
: nocsre を設定

于 2015-04-13T11:46:50.193 に答える
12

cscope.out をインポートするとき、接頭辞を指定できます。

:cscope add /path/to/cscope.out /path/to/src/code

次に、検索は次のようになります。

Cscope Tag: foobar
    #   line  filename / context / line
    1     21 /path/to/src/code/foobar_file.c
于 2010-07-07T17:14:33.357 に答える
4

cscopeチュートリアルには、この問題に対する非常に簡単な回避策があります。

11.作成したCscopeデータベースを指すように環境変数を設定して$CSCOPE_DBみてください。そうすれば、データベースと同じディレクトリでVimを起動する必要がなくなる可能性があります。これは、コードが複数のサブディレクトリに分割されているプロジェクトで特に役立ちます。注:これを機能させるには、絶対パス名を使用してデータベースを構築する必要があります:cd to /、および

find /my/project/dir -name '*.c' -o -name '*.h' > /foo/cscope.files

次に、cscope.filesファイルと同じディレクトリでCscopeを実行し(または'cscope -i /foo/cscope.files'を使用)、$ CSCOPE_DB変数を設定してエクスポートし、結果のcscope.outファイルをポイントします。

cd /foo
cscope -b
CSCOPE_DB=/foo/cscope.out; export CSCOPE_DB   

(上記の最後のコマンドは、Bourne / Korn / Bashシェル用です。ペストのように変数を回避するため、cshベースのシェルで変数をエクスポートする方法を忘れました)。

これで、マシンの任意のディレクトリで「vim -t foo」を実行し、Vimを「foo」の定義に直接ジャンプできるようになります。私は、さまざまなプロジェクトすべてに対して小さなシェルスクリプト(CSCOPE_DBを定義してエクスポートするだけ)を作成する傾向があります。これにより、単純な「sourceprojectA」コマンドでプロジェクトを切り替えることができます。

于 2012-01-05T22:17:28.753 に答える
3

ファイルへの絶対パスを使用してcscope.filesを作成できます。これが、cscopeデータベースを生成するためのスクリプトです。

#!/bin/sh

find $PWD -name '*.[ch]' -exec echo \"{}\" \; | sort -u > cscope.files
cscope -bvq

次に、vim cscope.filesと多分:csがcscope.outを追加しますが、私のcscopeプラグインはそれを自動的に行います。次に、興味のあるファイルを検索し、gfでそれらにジャンプします。

于 2013-02-05T10:14:43.470 に答える
1

@Aaron H.は正しいです。

私の構成では、cscope_maps.vim プラグインを使用し、次の行を変更しました。

  40     " add any cscope database in current directory
  41     if filereadable("/usr/project/cscope.out")
  42         cs add /usr/project/cscope.out /usr/project
  43     " else add the database pointed to by environment variable 
  44     elseif $CSCOPE_DB != ""
  45         cs add $CSCOPE_DB
  46     endif

「/usr/project」は、cscope.out ファイルの場所であり、使用する絶対パスです。

于 2010-12-14T06:07:59.680 に答える