2011-11-27 5 views
13

내 프로젝트는/srv/http/dev 폴더에 있습니다..vimrc의 VIM 세트 ctags

$ ctags -R --languages=php . 

지금 내가 ctags를 경로를 설정 : 나는 하나 개의 프로젝트에 대한 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 사용자 일 뿐이므로 질문이 하나 더 있습니다. 나는 나의의 .vimrc 파일에 추가 한 :

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

그러나 F4를 눌러 I는 다음을 참조하십시오

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에 감사 :

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

EDIT (2)

그리고 작동합니다! F4를 누르면 프로젝트 폴더에 태그 파일이 생깁니다. 당신의 .vimrc의 사용

+1

try : call createTags() 또한 대문자로 함수의 이름을 지정해보십시오. –

답변

3

vim의 현재 디렉토리가 홈 디렉토리이기 때문입니다. 경로를 변경하거나 nerdtree 플러그인을 작성해야합니다. 예제는 nerdtree_plugin 디렉토리를 참조하십시오. 나는이 기능의 흥미를 찾을 수 있다고 생각 :

g:NERDTreeFileNode.GetSelected()

+0

고마워, 내가 필요한 것 같아. 좀 더 질문 하시겠습니까? 내 편집을 참조하십시오. –

+0

원래 게시물에 응답했습니다 –

-1

는 :

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

그 쉼표가 적절한 분리 믿습니다.

+0

좋습니다. 작동합니다. 그러나 하나의 프로젝트가 더 중요합니다. 새 프로젝트를 만든 후에이 새 프로젝트에 전체 경로를 추가해야합니까? 그리고 계속해서 또 다시? 자동화 될 수 있습니까? –

+0

.vimrc의 하드 코딩 경로보다 다른 대답에서 언급 한'./tags; '를 사용하는 것이 좋습니다. –

+0

https://github.com/embear/vim-localvimrc를 사용하여 다른 태그를 정의하는 프로젝트마다 "로컬 vimrc"를 가질 수도 있습니다. –

28
  1. 기능이 대문자로 시작하기로되어있다. createTags에서 CreateTags으로 변경하십시오. 그래서 빔이 때까지 제까지 최대 현재 디렉토리에 tags 파일을 찾습니다 것을

    set tags=./tags,tags; 
    

    을 :

  2. 당신이 당신의 .vimrc에 그런 일을 추가해야합니다 tags 파일을 프로젝트 별 사용 찾는다. Additionnaly, 나는 set autochdir을 좋아한다 : 작업 디렉토리는 항상 현재 파일을 포함하고있다.

+0

무슨 뜻인지는 모르겠지만 어떻게해야하는지 이해할 수 없습니다.) .vimrc 파일에'set tags =./tags, tags' 및'set autochdir'을 추가했습니다. 그러나 vim이/home에서 그것들을 찾기 시작하기 때문에 태그는 발견되지 않습니다. –

+0

Vim은 아마도 작업 디렉토리이기 때문에 집에서 시작합니다. ': pwd'는 무엇을 말합니까? – romainl

+0

': pwd'는 현재 편집중인 파일의 오른쪽 디렉토리를 출력합니다 .. –