좋은 하루에 여러 위치에서 소싱 태그,VIM - 프로젝트
나는 일반적으로 비교적 작은 (코드 미만 20,000 선), 하나의 디렉토리에 포함 된 모든자가되어 자신의 메이크 파일이 프로젝트에서 작동하고, 함께 일하기가 상당히 쉽습니다.
VIM 내 선호하는 편집기입니다, 내가 프로젝트를 열 때, 나는 일반적으로 F10 키에 매핑을 통해 ctags를 목록을 구축 :
map <F10> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
이 나에게의 정의로 이동 할 수 있습니다 변수/구조체/etc를 입력하고 CTRL + 을 누르거나 OmniCppComplete를 통해 드롭 다운 목록으로 코드 완성을 사용합니다.
그러나 지금은 많은 구조를 사용하는 약간 더 큰 프로젝트를 진행하고 있습니다. 게다가, 많은 구조체는 다른 커스텀 구조체의 배열을 멤버로 가지고 있으므로, 코드 완성은 지금 당장은 매우 유용하고 중요한 도구입니다.
나는 .C
개의 파일과 .h
개의 파일을 포함하는 두 개의 경로를 가지고 있으며이 경로는 컴퓨터마다 다를 수 있습니다.
SDK_SRC_PLUS_HEADERS=/public/sdk
THIRD_PARTY_SDK=/private/sdk
내가 자동으로 VIM이 내가 시도 할 때 이러한 추가 경로의 내용을 참조 할 수 있도록하고 싶습니다 : 각 시스템에서, 그러나, 우리는 지금처럼 가리키는 우리 .bashrc
파일에 환경 변수가 VIM에 내장 된 OmniCppComplete 기능을 통해 코드 완성을하거나 CTRL + 을 VIM에 사용하면이 위치의 파일로 이동하여 구조체, 함수, 변수 등의 정의로 건너 뛸 수 있습니다.
위의 두 경로 모두에 대해 I cd
을 입력하고 e 태그를 통해 ctags -R
. 그런 다음, 정말 같은 추가 태그 경로를 포함하도록 내 ~/.vimrc
파일을 수정 :
tags=./tags
tags+=$SDK_SRC_PLUS_HEADERS/tags
tags+=$THIRD_PARTY_SDK/tags
그때 cd
/home/user1/projects/test
에서 내 프로젝트에, VIM을 시작, 인덱스 그것을 VIM에 F10을했다. 그러나 이것은 전혀 작동하지 않습니다. 사실, 그것은 프로젝트 자체에 대해서만 태그를 사용하는 능력을 상실합니다 (즉, CTRL + )은 아무 것도하지 않습니다.)
누구나 환경 변수를 통해 여러 소스 디렉토리를 사용하여 코드 완성 소스 태그와 점프 - 투 - 정의를 가질 수있는 방법에 대한 제안 사항이 있습니까?
시간과 도움을 미리 보내 주셔서 감사합니다.
음. 항상 저에게 효과적입니다. ': verbose set tags? '를 사용하여 태그의 가치를 확인 했습니까? – sehe
@sehe 긍정. 위의 명령을 통해 결과를 확인한 결과는'tags =./tags, $ SDK_SRC_PLUS_HEADERS/tags, $ SDK_SRC_PLUS_HEADERS/tags'입니다. BASH 환경 변수 (즉, 어쩌면 내가 일종의 VIM 함수를 사용하여 환경 변수를 역 참조하고 절대 경로로 줄여야 할 필요가 있습니다.)과 같은 간단한 구문 일지 궁금합니다. – DevNull
예, 확장되지 않은 경우 베타 만 지원됩니다 ~ – sehe