GNU/Linux >> Linux の 問題 >  >> Linux

Ctags と Taglist:Vim エディターを任意のプログラミング言語用の美しいソース コード ブラウザーに変換する


写真提供:ミント インペリアル

この記事は、進行中の Vi / Vim Tips and Tricks シリーズの一部です。プログラマーまたはシステム管理者は、常にソース コードとシェル スクリプトを閲覧することになります。

以下は、ソース コード ファイルの閲覧中に実行する可能性のある典型的なアクティビティです。

<オール>
  • 関数名を指定して関数定義に移動します。
  • 「関数呼び出し」から関数定義に移動します。
  • 定義から関数呼び出しに戻ります。
  • 関数または変数のプロトタイプ/シグネチャの表示
  • ファイル内の関数の数などを表示する

  • この記事では、上記のアクティビティを Vim エディタ で効率的に実行する方法を確認しましょう。 ctags と taglist プラグインを使用します。

    この記事で説明した Vim エディターを使用した手法は、どのプログラミング言語でも使用できます。

    I. Ctags パッケージのインストールと構成

    ステップ 1:ctags パッケージのインストール

    # apt-get install exuberant-ctags
    
    (or)
    
    # rpm -ivh ctags-5.5.4-1.i386.rpm
    warning: ctags-5.5.4-1.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
    Preparing...          ########################################### [100%]
       1:ctags            ########################################### [100%]

    ステップ 2:ソース コードで ctag を生成する

    ソース コードがあるディレクトリに移動します。以下の例では、すべての C プログラミング ソース コードを ~/src ディレクトリに保存しています。

    # cd ~/src
    
    # ctags *.c

    ctags コマンドは、*.c プログラム ファイルに関するすべての必要な情報 (タグ) を含むファイル名タグを作成します。以下は、ctags ファイル内のタグ エントリの出力の一部です。

    # cat tags
    AddAcl  dumputils.c     /^AddAcl(PQExpBuffer aclbuf, const char *keyword)$/;"   f       file:
    ArchiveEntry    pg_backup_archiver.c    /^ArchiveEntry(Archive *AHX,$/;"        f
    AssignDumpId    common.c        /^AssignDumpId(DumpableObject *dobj)$/;"        f

    II. Vim Editor 内での 4 つの強力な Ctags の使用法

    1. :ta を使用して関数名を指定して、関数定義に移動します

    以下の例では、:ta main は mycprogram.c 内のメイン関数定義に移動します

    # vim mycprogram.c
    :ta main

    この機能を使用すると、関数名を指定して任意の関数定義に移動できます。

    2. Ctrl + ] を使用して「関数呼び出し」から関数定義に移動する

    カーソルが関数呼び出しの下にあるときに、CTRL + ] を押して関数定義に移動します。次の例では、カーソルが関数呼び出し ssh_xcalloc にあるときに Ctrl + ] を押すと、ssh_xcalloc 関数定義に移動します。

    # vim mycprogram.c
                av = ssh_xcalloc(argc, sizeof(char *));

    注: ctags がその関数を見つけられなかった場合、下部の vim ステータス バーに次のメッセージが表示されます:E426 タグが見つかりません ssh_xcalloc

    3. Ctrl + t を使用して定義から再び関数呼び出しに戻る

    CTRL + t を押すと、関数呼び出しに戻ります。

    4.類似した名前を持つ関数名のリストをナビゲートする

    この例では、:ta は名前が get で始まる関数定義に移動し、関連する関数をナビゲートするためのリストも作成します。

    # vim mycprogram.c
    
    :ta /^get

    次の vim コマンドを使用して、関連する機能をナビゲートできます

    • :ts – リストを表示します。
    • :tn – そのリストの次のタグに移動します。
    • :tp – そのリストの前のタグに移動します。
    • :tf – リストの最初にある関数に移動します。
    • :tl – リストの最後にある関数に移動します。

    III.タグリスト プラグイン:究極のソース コード ブラウザーとしての Vim エディター

    上記の Ctags は、コードを視覚的にブラウズするのではなく、コマンドによって駆動されるため、ソース コードのブラウジングの感覚を与えていない可能性があります。そのため、ファイル ブラウザでナビゲートするようにソースをナビゲートする場合は、vim をソース コード ブラウザとして作成する vim taglist プラグインを使用する必要があります。

    vim タグリスト プラグインの作者である Yegappan Lakshmanan は、それについて次のように述べています

    <ブロック引用>

    「Tag List」プラグインは、Vim 用のソース コード ブラウザ プラグインであり、ソース コード ファイルの構造の概要を提供し、さまざまなプログラミング言語のソース コード ファイルを効率的に参照できます。

    ステップ 1:Vim Taglist プラグインをダウンロードする

    以下に示すように、vim.org Web サイトからダウンロードします。

    $ cd /usr/src
    
    $ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701

    ステップ 2:TagList Vim プラグインをインストールする

    $ mkdir ~/.vim # if the directory does not exist already
    
    $ cd ~/.vim
    
    $ unzip /usr/src/taglist.zip
    Archive:  /usr/src/taglist.zip
      inflating: plugin/taglist.vim
      inflating: doc/taglist.txt

    ステップ 3:~/.vimrc でプラグインを有効にする

    ~/.vimrc に次の行を追加して、Vim エディターのプラグインを有効にします。

    $ vim ~/.vimrc
    filetype plugin on

    前提条件: taglist プラグインを使用するには、ctags をインストールする必要があります。ただし、taglist プラグインを使用するために ctags コマンドでタグ リストを手動で生成する必要はありません。

    IV. Taglist Vim プラグインの 5 つの強力な機能

    1. :TlistOpen を使用して、Vim でタグ リスト ウィンドウを開きます

    # vim mycprogram.c
    :TlistOpen

    vim エディターから、上に示すように :TlistOpen を実行すると、下図に示すように、現在のファイルのタグを含むタグ リスト ウィンドウが開きます。


    図: Vim – ソース コード タグ/関数リスト ウィンドウ

    2.ソースコード内の関数定義にジャンプ

    左パネルの関数名をクリックすると、下の図に示すように関数の定義に移動できます。


    図: 関数定義に素早くジャンプ

    関数名にすばやくジャンプする以外に、左側のタグ ブラウザから対応する値をクリックすることで、クラス、構造体、変数などにジャンプできます。

    3.別のソースファイルにある関数定義にジャンプ

    ソース ファイル内の関数を調べていて、別のファイル内にある関数定義に移動したい場合、2 つの異なる方法でこれを行うことができます。

    方法 1:

    そのファイルに対して生成された ctags がある場合、カーソルが関数呼び出しにあるときに CTRL + ] を押すと、関数定義に移動します。タグ リスト ウィンドウには、新しく開いたファイルのタグが自動的に表示されます。

    方法 2:

    同じvimセッションで別のファイルを開くと、そのファイルに関する情報でタグリストウィンドウが更新されます。タグ リスト ウィンドウでその関数名を検索し、タグ リスト ウィンドウでその関数名で を押すと、関数定義に移動できます。

    4.関数または変数のプロトタイプ/シグネチャの表示。

    関数名またはタグ リスト ウィンドウの変数名で「スペース」を押すと、以下に示すように、VIM ステータス バーにそのプロトタイプ (関数シグネチャ) が表示されます。以下の例では、タグ ウィンドウから selectDumpableTable 関数をクリックし、スペースバーを押します。これにより、下部の Vim ステータス バーに selectDumptableTable 関数の関数シグネチャが表示されます。


    図: 関数シグネチャを Vim ステータス バーに表示する

    5.ソース コード ファイル内の関数または変数の総数を表示する

    タグリストウィンドウのタグタイプで「スペース」を押すと、その数が表示されます。以下の例では、カーソルが「関数」プレス スペースにある場合、現在のソース コード内の関数の総数が表示されます。


    図: ソースコードで利用可能な関数の総数を表示

    Vim を使用して新しいソース コード ファイルを効果的に作成するには、以前の記事を参照してください:

    • perl-support.vim プラグインを使用して Vim を Perl IDE として作成
    • c.vim プラグインを使用して Vim を C/C++ IDE として作成
    • bash-support プラグインを使用して Vim を Bash-IDE として作成します。

    推奨読書

    Vim 101 ハック、Ramesh Natarajan 著 .私はコマンドライン中毒です。だから当然、私は Vi と Vim エディターの大ファンです。数年前、Linux で多くの C コードを書いていたとき、利用可能な Vim エディターのヒントとコツをすべて読んでいました。私の Vim エディターの経験に基づいて、Vim エディターで高速かつ生産的になるさまざまな高度な Vim 機能に関する 101 の実用的な例を含む Vim 101 Hacks eBook を作成しました。数年間 Vi および Vim エディタを使用しており、この本をまだ読んでいない場合でも、ぜひこの本を読んでください。 Vim エディターの機能に驚かれることでしょう。

    素晴らしい Vim エディターの記事

    以下は、すばらしい Vi / Vim エディタの チュートリアル です。

    • Vim Editor の 12 の強力な検索と置換の例
    • Vi と Vim マクロのチュートリアル:記録と再生の方法
    • Vimperator アドオンを使用した Vim エディター機能を備えたターボチャージ Firefox ブラウザー

    注: The Geek Stuff を購読して、今後の Vi および Vim エディタのヒントとコツをお見逃しなく .


    Linux
    1. LinuxPCのパフォーマンスを向上させるためのオープンソースツールとヒント

    2. Linuxとオープンソースを愛する(あなたがしたい)子供向けの15冊の本

    3. MuditaOS:フィーチャーフォン向けの美しく最小限のオープンソースモバイルオペレーティングシステム

    1. vifm:ハードコアVim愛好家のためのターミナルファイルブラウザ

    2. Linux用の最高のJavaScriptエディター

    3. Linux コマンドのソース コードを入手する

    1. MIXXX –美しく、無料の、オープンソースのDJソフトウェア

    2. C++ で C 関数を呼び出す方法、C で C++ 関数を呼び出す方法 (C と C++ の混合)

    3. vi/vimのCコードで関数の呼び出し元と呼び出し先を見つける方法は?