/ 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キーを押すと、プロジェクトフォルダーにタグファイルが表示されます。
これは、vimの現在のディレクトリがホームディレクトリであるためです。パスを変更するか、nerdtreeプラグインを作成する必要があります。例については、nerdtree_pluginディレクトリを参照してください。私はあなたがこの関数を面白いと思うと思います:
g:NERDTreeFileNode.GetSelected()
関数は大文字で始まることになっています。 createTags
をCreateTags
に変更します。
プロジェクト固有のtags
ファイルを使用するには、そのようなものを.vimrc
に追加する必要があります。
set tags=./tags,tags;
vimが現在のディレクトリでtags
ファイルを最初に検索し、見つかるまで検索します。さらに、私はset autochdir
が好きです:作業ディレクトリは常に現在のファイルを含むディレクトリです。