2011-11-27 24 views
13

私のプロジェクトは/ srv/http/devフォルダにあります。.vimrcのVIMセットctags

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

そして、それがうまく働いている:今、私はctagsのパスを設定

$ ctags -R --languages=php . 

:私は1つのプロジェクトのためのctagsのファイルを生成しました。

私はdev/folderに多くのプロジェクトがあります。 .vimrcファイルにctagsを設定する方法は? set tags=tagsが正しく動作しません。

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

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

しかし、それはホームフォルダ内のタグファイルを作成し、スキャンホームフォルダに関する警告を示し..

EDIT: @Alexandru Plugaruは、私はグラム使うべき助言として: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 

はEDIT 2:

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> 
@Alexandru Plugaruのおかげで、私はこれを得ました

それは動作します! F4キーを押すと、プロジェクトフォルダ内のタグファイルが取得されます。あなたの.vimrc利用の

+1

try:call createTags()は、大文字で関数の名前を付けてみます。 –

答えて

3

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

g:NERDTreeFileNode.GetSelected()

+0

ありがとう、私はそれが私が必要と思うものだと思う。もっと質問してもらえますか?私のEDITを見てください。 –

+0

私は元の投稿で返信しました –

-1

set tags+=tags,/srv/http/dev/proj/tags 

私はカンマ区切りが適切であると信じています。

+0

さて、それは仕事です。しかし、もっと多くのプロジェクトについてはどうでしょうか。新しいプロジェクトを作成したら、この新しいプロジェクトに完全なパスを追加する必要がありますか?そして何度も何度も?それは自動化することができますか? –

+0

'./tags;'を使用すると、.vimrcのパスをハードコーディングする方がはるかに好ましいでしょう。 –

+0

https://github.com/embear/vim-localvimrcを使用して、プロジェクトごとに「ローカルvimrc」を作成して、異なるタグを定義することもできます。 –

28
  1. 関数は大文字で始めることになっています。 createTagsからCreateTagsに変更してください。

  2. あなた.vimrcにそのような何かを追加する必要がありますプロジェクト固有のtagsのファイルを使用するには:vimは最初とアップし、それまでの現在のディレクトリ内のtagsファイルを見えるように

    set tags=./tags,tags; 
    

    をそれを見つける。 Additionnaly、私はset autochdirが好きです:作業ディレクトリは常に現在のファイルを含むものです。

+0

あなたは何を意味しているのか理解していません。)私の.vimrcファイルに 'set tags =。/ tags、tags'と' set autochdir'を追加しました。しかし、vimが/ homeからそれらを見つけ出すために、タグが設立されていません。 –

+0

おそらく作業ディレクトリなので、Vimは家から出発します。 ':pwd'とは何ですか? – romainl

+0

':pwd'は現在編集しているファイルの正しいディレクトリを出力します。 –

関連する問題