web-dev-qa-db-ja.com

VIM .vimrcにctagsを設定

/ srv/http/devフォルダーにプロジェクトがあります。 1つのプロジェクトのctagsファイルを生成しました。

$ ctags -R --languages=php .

今私はctagsパスを設定しました:

:set tags=/srv/http/dev/proj/tags

そして、それはうまく機能しています。

しかし、私はdev /フォルダーに多くのプロジェクトを持っています。どうすれば.vimrcファイルにctagsを設定できますか? set tags=tagsが正しく機能していません。

そして、選択したNERDTreeフォルダーでホットキーを押してタグファイルを生成したいと思います。私は試した:

nmap <silent> <F4>
    \ :!ctags -R
    \ --languages=php .<CR>

しかし、ホームフォルダーにタグファイルを作成し、ホームフォルダーのスキャンに関する警告を表示します。

編集: @Alexandru Plugaruがアドバイスしたように、g:NERDTreeFileNode.GetSelected()関数を使用する必要があります。

私は初心者のvimユーザーなので、もう1つ質問があります。私は.vimrcファイルに追加しました:

function createTags()
    let curNodePath = g:NERDTreeFileNode.GetSelected().path.str
    exec ':!ctags -R --languages=php ' . curNodePath
endfunction
nmap <silent> <F4> :execute createTags()<CR>

しかし、F4を押すと、次のようになります。

E117: Unknown function: createTags
E15: Invalid expression: createTags

編集2: @Alexandru Plugaruのおかげで私はこれを手に入れました:

function CreateTags()
    let curNodePath = g:NERDTreeFileNode.GetSelected().path.str()
    exec ':!ctags -R --languages=php -f ' . curNodePath . '/tags ' . curNodePath
endfunction
nmap <silent> <F4> :call CreateTags()<CR>

そしてそれはうまくいきます! F4キーを押すと、プロジェクトフォルダーにタグファイルが表示されます。

21

これは、vimの現在のディレクトリがホームディレクトリであるためです。パスを変更するか、nerdtreeプラグインを作成する必要があります。例については、nerdtree_pluginディレクトリを参照してください。私はあなたがこの関数を面白いと思うと思います:

g:NERDTreeFileNode.GetSelected()

5
Alex Plugaru
  1. 関数は大文字で始まることになっています。 createTagsCreateTagsに変更します。

  2. プロジェクト固有のtagsファイルを使用するには、そのようなものを.vimrcに追加する必要があります。

    set tags=./tags,tags;
    

    vimが現在のディレクトリでtagsファイルを最初に検索し、見つかるまで検索します。さらに、私はset autochdirが好きです:作業ディレクトリは常に現在のファイルを含むディレクトリです。

36
romainl