0

gem-ctagsrbenv-ctagsを使用して、gem と ruby​​ ライブラリのインデックスを作成しています。

また、Vim がタグ ファイルを探す場所に影響を与えるいくつかのプラグインを使用します。

適切にインデックス化されたコードベースを飛び回ることができるのは素晴らしいことですが'tags'、タグ スタックをナビゲートするときに Vim のオプションが誤って処理されていることに気付きました。

Rails プロジェクトから始めて、アプリ内、Ruby 標準ライブラリ (現在のプロジェクトに関連するバージョンの Ruby)、または gem など、好きな場所にジャンプできることがわかりました。そこで、gem にジャンプしましたが、Vim はその gem のタグを見つけることができなくなり、その中で簡単にナビゲーションを行うことができなくなりました。

例: Ruby 2.1.0 と 2.2.0 がインストールされており、2.2.0 がグローバル デフォルトとして設定されています。

Ruby 2.1.0 を使用する Rails アプリのルート ディレクトリから空のバッファーで Vim を起動します。

  • :verbose set tags?ショーの実行は'tags'、vim-rails によって最後に設定されました。
  • タグは、アプリ自体、Ruby の標準ライブラリ (2.1.0)、および gem (2.1.0) で使用できます。

プロジェクトでファイルを開きます。

  • 現在、レポート'tags'は vim-fugitive によって最後に設定されました。
  • 上記と同じタグの良さ。ここまでは順調です。

gem 内のタグにジャンプします。

  • 現在'tags'は vim-bundler によって最後に設定されており、作業ディレクトリ、現在のバッファーのディレクトリ、および ruby​​ 2.2.0 標準ライブラリのみが含まれています。

ナビゲートしているgemのルートディレクトリにあるタグファイルが見つかったことを確認するにはどうすればよいですか?

: Tim Pope のrbenv-sentienceから着想を得て、適切な .ruby-version ファイルを各 Ruby インストールのルートに追加しました。'tags'gem に移動すると、まだ gems パスが失われますが、少なくとも標準ライブラリの正しいバージョンが反映されるようになりました。一歩近づく...

4

1 に答える 1

0

私はそれを手に入れたと思います。答えの一部は、各 Ruby インストールに .ruby-version ローカルを設定することでした。これにより、そのインストールのサブディレクトリ (たとえば、インストールされた gem 内) にいるときはいつでも、正しい Ruby インストールの標準ライブラリを参照できるようになりました。

ただし、主な修正は、現在のバッファーまたはディレクトリから再帰的に検索するようです。

set tags-=./tags,tags
set tags+=./tags;~,tags;~

このスレッドに従って、セミコロン構文を使用すると、指定された「停止」ディレクトリ (私の場合~) まで上方向に検索できます。

実際には、この変更を現在のバッファーのディレクトリ ( ) に適用するだけで十分です。これ./tags;~で私のユース ケースの 99% をカバーできるからです。

また、プロジェクトのルート ディレクトリを認識して、それより上だけを検索できればいいのですが、それを実現する方法はまだ見つかっていません。

于 2015-04-12T03:36:54.523 に答える