8

プロジェクト内の任意のサブディレクトリで vim を起動し、プロジェクト ルートまでtagsファイルを検索してから、プロジェクト ツリーの外部にある無関係なディレクトリを検索できるようにしたいと考えています。

たとえば、次のものがあるとします。

~/projects/foo/bar/baz.c
~/projects/foo/tags
~/some/arbitrary/path/tags

baz.cサブディレクトリ内から開き、bar検索して見つけてから、シンボルが見つからないかどうかfoo/tagsを検索します。some/arbitrary/path/tagsfoo/tags

今、私はできることを知っています:

set tags=./tags,tags;

最初のタスクを完了するために。ルートまで検索するようにvimに指示するのは明らかにセミコロンです。ただし、次のいずれも機能しません。

set tags=./tags,tags,~/some/arbitrary/path/tags;
set tags=./tags,tags;~/some/arbitrary/path/tags

1 つ~/some/arbitrary/path/tags目はシンボルのみを検索し、2 つ目はプロジェクト ルートのタグ ファイル内のシンボルのみを検索します。

誰でもこれを行う方法を知っていますか? 私はLinuxを購入しています。

4

5 に答える 5

5

私が使う:

set tags=~/.tags
set tags+=~/.vim/tags/cpp
set tags+=~/src/git/gitsrc/tags
" and so on...

特定のプロジェクトのルートでタグを生成するには:

map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

このセットアップは、C++ コード補完 vim のヒントから採用しました。

于 2009-12-01T22:08:49.533 に答える
0

最初の「タグの設定」オプションは、Linux で機能します。(以前に行ったことがありますが、念のため再作成しました。)タグオプションには、絶対パスと相対パスの両方でさまざまなパスを指定できます。ただし、2 番目のものでは、リストの途中にセミコロンがあり、これは正しくありません。実際、セミコロンは必要ありません。念のため、 ~ を自宅への絶対パスに置き換え、セミコロンをすべて削除します。各パスの間にコンマを入れるだけです。

ああ、タグファイルのディレクトリを検索するには、「./tags」ではなく「../tags」が必要です。1 つのドットは現在のディレクトリを意味し、2 つのドットは現在のディレクトリから 1 つ上のディレクトリを意味します。

于 2009-11-17T15:00:21.670 に答える
0

チルダを自宅へのパスに置き換えます。

于 2009-11-17T14:56:04.623 に答える
0

タグファイルは常に project/ ディレクトリにありますか? その場合は、タグ ファイルを見つけるために「検索」する必要はありません。次のように、両方のファイルへのパスをハードコードするだけです。

set tags=/home/you/projects/foo/tags;/home/you/some/arbitrary/path/tags

そうでない場合は、次のようなことを試すことができます。

set tags=/home/you/projects/**;/home/you/projects,/home/you/some/arbitrary/path/tags

私はこれを試していないので、試してみる必要があるかもしれません。それが機能するためのいくつかの前提条件があります。:help ファイル検索を参照してください。

于 2009-11-20T08:50:49.407 に答える