VIMで大きなソースファイルをどのようにナビゲートしますか?


7

まず、私はパフォーマンスについて質問していません。私は、精神的に、私が慣れていない大きなCソースコードファイルに入るのに役立つ何かを探しています。例を挙げましょうreadelf.c。このファイルは20,000行です。私はコードを読んでそれを理解することができますが、私はそうではありません。これは、Cでの私の経験においてのみ問題になります何らかの理由で、Cではファイルサイズが非常に大きく、readelf.cこれだけではありません。Cファイルを仮想化して構造化プロジェクトのような正気なものにすることができるものはありますか?私はそれが多くを求めていることを知っていますが、誰かがそのようなことをしたであろうすべてのCコードが存在しているように見えます。

私のラップトップの端末は最大50行を保持できます。vimは、10000行を超え10万行未満のファイルをナビゲートするためにどのツールとプラグインを提供していますか?


5
コードの折りたたみは、タグと一緒にいくらか役立ちます
D.ベンノブル

1
タグバーを試すことができます。ページで提供されているスクリーンショットを参照してください。次に、サイドバーで定義された関数や構造体をナビゲートできます。
劉シャ

@LiuShaそれはまさに私が探しているものです。もしあなたがそれを答えにしたいなら、私はそれを受け入れます。
エヴァンキャロル

回答:


4

あなたが探しているのは、すべての関数、構造体/クラス、マクロなどを表示するサイドバーを作成できるtagbarのようなプラグインだと思います。また、タグをクリックして(またはEnterキーを押して)、次にジャンプすることもできます定義。


3

vimオプションを使用してコードの折りたたみを有効にすることができます。 set foldmethod=syntax これにより、一度に表示されるコードの量が減り、管理しやすくなります。コードの折りたたみを有効にした後、折りたたみの開閉に以下のコマンドを使用します。コマンドzc(閉じる)、zo(開く)、およびza(トグル)は、カーソルで折りたたみの1つのレベルを操作します。コマンドzC、zO、zAは類似していますが、すべての折りたたみレベルで機能します(たとえば、カーソル線が開いた折りたたみにあり、これが別の開いた折りたたみの内側にある場合があります。zCを入力すると、カーソルですべての折りたたみが閉じます)。

コマンドzrは、バッファー全体で折りたたみのレベルをもう1つ開くことで折りたたみを減らします(カーソル位置は関係ありません)。zRを使用してすべての折り目を開きます。


1

私がやっていることは使用しています

  • プラグインGutentags:ルートフォルダーからプロジェクト全体にタグを作成するために使用されます。
  • プラグインタグバー:ファイル内を移動するために使用されます。
  • Plugin Ack:プロジェクト全体を検索するために使用されます。

私のセットアップ全体はここにあります @


1

タグリストのようなctagsベースのプラグインに加えて、私はcscopeを使用ます。いくつかのプラグインが役に立つかもしれません:cscope_macrosCCTreeなど。ctagsまたはcscopeを使用する前に、タグファイルとcscopeデータベースを作成する必要があります。上記のリンクを参照してください。これらのツールはかなり古いですが、多くの最新のC実装で問題なく機能します。

また、あなたが重要な場所に設定することができ、マーク、不要な部分を折りたたみ、忘れてはいけないgD*]]および同様の動き。外部プログラムやプラグインを使用したくない場合は、これによってファイルのプレビューを取得できます

:set foldmethod=syntax
zM

foldmethodC構文に基づいて折りたたみを設定し(.vimrcで記述できます)、zMコマンド(通常モード)はすべてを最大レベルに折りたたみます。

詳細については、以下を参照してください。

:help tags
:help ctags
:help cscope
:help mark-motions
:help folding

1

タグバーは、単一のファイルで多数の関数をナビゲートするのに役立ちます。他の機能の中でも、名前や行番号による並べ替えをサポートしています。

marksまた、大きなファイル内を前後に移動する際にも非常に役立ちます。詳細については:h markshttp://vimdoc.sourceforge.net/htmldoc/motion.html#markを参照してください。

複数の(大きな)ファイル間を常に移動する必要がある場合、Gtagsはプロジェクト全体で定義/参照を見つけるのに役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.