외부 명령을 사용하지 않고 코드 프로젝트 탐색


9

Ctags 또는 다른 외부 도구를 사용 하지 않고 코드베이스를 탐색하기 위해 명령 또는 검색 모드에서 Vim 명령 / 쿼리 도구 상자를 수집하려고 합니다. Ctag는 훌륭하지만 지원은 개발 환경에 따라 다를 수 있습니다. Vim 지식에 의존하고 싶습니다.


4
내 첫 번째 제안은 cscope이므로 "ctags"대신 "external tools"라고 말해야 할 것입니다.
muru

1
내가 사용하는 한 가지는 command gd입니다. 커서를 커서 아래 변수의 로컬 선언으로 가져갑니다.
nitishch

@muru 외부 도구를 사용하고 싶지 않습니다. 내가 배우려고하는 것은 Vim 명령을 사용하여 코드베이스를 효율적으로 탐색하는 기술입니다. 나는 그것이 가능하다는 것을 알고 있지만 분명히 내가 가진 것보다 더 깊은 Vim 지식이 필요합니다. 아마도 개방형이기 때문에 좋은 SE 질문은 아니지만 어딘가에 볼지 모르겠습니다.
user1332148

답변:


11

"검색 포함"은 그러한 도구 중 하나입니다.

[I and ]I      " search current buffer and included files for
               " the word under the cursor, skipping comments
:ilist foo     " same as above but for 'foo'
:ilist /foo    " same as above but for a word containing 'foo'

"검색 포함"과 관련하여 "정의 검색"도 흥미 롭습니다.

[D and ]D      " search current buffer and included files for
               " the definition of the symbol under the cursor
:dlist foo     " same as above but for definition of 'foo'
:dlist /foo    " same as above but for a definition containing 'foo'

:dlist /       " list all definitions from the current buffer
               " and included files

두 도구는 파일 유형 플러그인에 의해 설정되거나 설정되지 않을 수있는 다양한 옵션에 따라 다릅니다.

참조하십시오 :help include-search.


당신은 또한 사용할 수 있습니다 gdgD경량 버전으로 [D]D.

참조하십시오 :help gd.


현재 버퍼에서 아래 명령은 모든 함수 정의와 해당 행 번호를 나열합니다.

:g/func/#

참조하십시오 :help :g.


:grep그리고 :vimgrep그 결과로 탐색 할 수있는 quickfix 목록으로 만 공급되기 때문에 경우에도 유용 :cn, :cp... 그리고 매우 편리 quickfix 창에 표시됩니다.

를 참조하십시오 :help :grep, :help :vimgrep하고 :help quickfix.


quickfix 목록 / 윈도우의 말하기, 내가 쓴 이 함수 의 결과 표시 (다른 사람의 작업을 기반으로)을 [I, ]I, :ilist, [D, ]D:dlistquickfix 목록에 / 창을여십시오. 물론 YMMV.


탐색 도구는 아니지만 미리보기 창은 내가 사용하는 기능의 서명을 보는 데 매우 유용합니다.

참조하십시오 :help preview-window.


그것은 말했다…

Vim은 코딩 스타일 또는 기타에 맞지 않을 수도있는 몇 가지 정규식 패턴을 넘어서는 코드에 대해 아무것도 모릅니다. 이는 ctags, cscope 또는 GNU GLOBAL과 같은 외부 도구를 사용하여 코드 탐색이 더 잘 수행됨을 의미합니다.


5

Vim 및 외부에 포함 된 코드를 탐색하는 방법에는 여러 가지가 있지만 여전히 발견합니다. 내가 일상 업무에서 사용하는 것은 :

  • 프로젝트 파일에서 텍스트를 grepping하고 quickfix 창을 통해 탐색합니다 (greping에 은색 검색기를 사용합니다).
  • 언어 관련 플러그인을 사용하면 프로그램의 모듈간에 이동할 수있는 javascript, ruby, go에 대한 것이 있음을 알고 있습니다 (javascript plugin은 gf-command입니다)
  • Ctrl+O, Ctrl+I- 탐색의 "역사"에서 뒤로 또는 앞으로 이동
  • g; -파일에서 마지막으로 편집 한 위치로 이동
  • 특정 장소에 "책갈피"를 표시하기 위해 마크 사용. '[some_letter]문자가 대문자 인 경우 명령으로 마크를 배치 할 수 있으며 모든 파일 (버퍼)에서 도달 할 수있는 마크를 얻을 수 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.