[vim] VIM에서 대규모 프로젝트를 탐색하는 방법

VIM 만 사용하여 대규모 프로젝트 (수백 개의 파일)를 어떻게 관리합니까?

나는 개인적으로 작은 프로젝트보다 더 큰 문제를 겪기 시작합니다.

  • 가급적 이름 완성으로 ‘파일로 이동’하는 방법이 있습니까?
  • 다른 파일에있을 때 ‘클래스 정의로 이동’과 동일

나는 모든 VIM 기본 사항을 알고 있기 때문에 스크립트를 작성하거나 일부 소스 코드를 빠르게 편집하는 데 문제가 없습니다. 그러나 파일 사이를 탐색해야 할 때 정말 지저분합니다.



답변

VIM은 태그에 대한 탁월한 지원을 제공 합니다 . 프로젝트에 대한 태그 파일을 만든 후에는 동일한 편집 세션 내에서 파일 건너 뛰기를 포함하여 메서드, 클래스 등의 정의 또는 선언으로 이동할 수 있습니다.

시험

:help tags

C / C ++ 용 태그 파일을 생성하려면 쉘 프롬프트로 이동하여 (시스템이 * nix / Cygwin이라고 가정합니다) 다음을 입력하십시오.

info ctags

또는

ctags --help


답변

저는 간단한 솔루션을 좋아합니다. 현재 가장 좋아하는 탐색 방법은 다음과 같습니다.

추가 ~/.vimrc.local

set path=$PWD/**

그런 다음 편집기에 입력하여 현재 작업 디렉토리 (pwd)에서 파일을 찾습니다.

:find user_spec.rb

파일 이름에 탭 완성을 사용하여 여러 선택 항목을 찾을 수도 있으므로이 TextMate 변환이 매우 만족 스럽습니다.


답변

NERDTree (디렉토리 사이드 바), FuzzyFinder Textmate (TextMate의 CMD + T와 같은 파일로 이동) 및 세션 (: h 세션)의 조합을 사용하여 대규모 프로젝트를 처리 할 수 ​​있습니다.

세션 도우미 플러그인을 사용하는 것이 좋습니다. 내가 사용하는 것을 언급하고 싶지만 아직 만족스럽지 않습니다. 그냥 구글 “vim 세션”.

FuzzyFinder Textmate를 작동시킬 때 주목해야 할 점은 FuzzyFinder 플러그인, 특히 v2.16의 이전 버전에 의존한다는 것입니다. 더 높은 값이면 오류가 발생합니다. 그러나 그것은 분명히 문제의 가치가 있습니다. 이름 완성 기능은 없지만 검색이 현명하므로 검색 fro/time/actionsphp하면 파일이 apps/(fro)ntend/modules/(time)_tracking/actions/(actions).class.(php)표시 됩니다 (괄호는 일치하는 항목을 나타냄). 폴더 이름으로 만 고유 한 파일을 매우 쉽게 선택할 수 있습니다.


답변

뿐만 아니라 귀중한 ctags 및 다양한 관련 명령. 또한 프로젝트 플러그인 없이는 살 수 없었기 때문에 관심있는 파일을 별도의 창에 프로젝트와 연결할 수 있습니다. 내 설정이 얼마나 많이 사용자 정의되었는지 기억할 수 없지만 Debug.c라는 소스 파일을 열려면 다음을 누르십시오.

<F12>     " Opens the project pane
/De       " Searches for "De", which is likely to be enough to find Debug.c or possibly Debug.h
<ENTER>   " Opens the selected file and closes the project pane

나는 종종 다음을 수행합니다.

:vsp      " Vertically split the window
<F12>     " Reopen project pane
#         " Search back to find previous entry with the same name (to find
            Debug.h if I was on Debug.c: my headers are in Headers/ and
            my source is in Source/, so the headers come earlier in the list
            than the source).  I use * to go the other way, obviously.
<ENTER>   " Open the header file in the other window and close the project window.

이 비교적 짧은 시퀀스를 사용하여 모든 파일을 열 수 있으며 수직 분할로 헤더입니다. 프로젝트 플러그인 창은 텍스트 파일이기 때문에 Vim의 검색 기능을 사용하여 완성됩니다.


답변

Vim 7.3부터는 :find명령에 파일 이름이 탭으로 완성됩니다.

당신이 당신의 설정이 경우 'path'전체 프로젝트를 포함 할 옵션을 (아마도 사용 **후, 당신은 사용할 수 있습니다, 재귀 적으로 검색 하위 디렉토리를 허용하는 와일드 카드) :find, :sfind, :tabfind프로젝트의 모든 파일에 도착 완공 등의 명령을. 또한 gfinclude 지시문과 같이 파일 이름이 텍스트에있는 경우 및 친구 와 직접 파일로 이동할 수 있습니다.

이 방법을 사용하면 특정 파일을 탐색하는 데 외부 도구 나 플러그인이 필요하지 않습니다. 그러나 그것은 확실히 빠르거나 사용하기 쉽지 않을 수 있으며 정의로 넘어갈 필요성을 해결하지 못합니다. 정의를 위해 다른 답변에서 제안하는 것처럼 ctags를 사용합니다.


답변

다른 포스터에서 권장하는대로 ctag를 사용하고 있다면 taglist 플러그인 을 확인하십시오 .

시간을내어 문서를 읽고 키 바인딩을 배우십시오. 다음은 TList 창에서 시작하는 데 도움이되는 몇 가지 사항입니다.

  • o-새 창에서 파일 열기
  • t-새 탭에서 파일 열기
  • [[또는 백 스페이스-목록의 이전 파일
  • ]] 또는 탭-목록의 다음 파일


답변

무성한 ctags.

Ctrl-]를 사용하여 커서 아래의 태그로 이동합니다.