2012-11-26 2 views
1

난에서 이전에 대답 질문을 게시 keymapping 있습니다VIM - Multipline 라인 bash는 명령 시퀀스

VIM - Sourcing tags from multiple locations in project

은이 매핑 여러 줄 매핑 할 수있는 경우 내가 궁금 내 .vimrc 파일에서 더 정돈되도록 함수 세트.

" Create a mapping to delete the old tags, re-generate them, and use them 
map <F10> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . \| rm -f $SDK_SRC_PLUS_HEADERS/tags \| ctags -R -f $SDK_SRC_PLUS_HEADERS/tags $SDK_SRC_PLUS_HEADERS/tags \| rm -f $THIRD_PARTY_SDK/tags \| ctags -R -f $THIRD_PARTY_SDK/tags $THIRD_PARTY_SDK/tags \| echo "Done re-generating tags."<CR> 

은 VIM이 너무 좋아, 그래서 정렬 더 읽기 블록 무언가에 매핑을 깰 수있는 이스케이프 시퀀스의 어떤 종류를 지원합니까 :

" Create a mapping to delete the old tags, re-generate them, and use them 
map <F10> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . 
      \| rm -f $SDK_SRC_PLUS_HEADERS/tags 
      \| ctags -R -f $SDK_SRC_PLUS_HEADERS/tags $SDK_SRC_PLUS_HEADERS/tags 
      \| rm -f $THIRD_PARTY_SDK/tags 
      \| ctags -R -f $THIRD_PARTY_SDK/tags $THIRD_PARTY_SDK/tags 
      \| echo "Done re-generating tags."<CR> 

내가 명령은 현재 하나의 거대한 한 줄입니다 수많은 이스케이프 시퀀스를 시도했지만 행운은 없습니다.

감사합니다.

답변

1

그냥 쉘 스크립트로 만들고 한 줄로 간단히 참조하는 것이 어떨까요?

그런 식으로 vim 밖에서 쉽게 테스트 할 수 있으며 다른 도구에서도이 방법을 사용할 수 있습니다.

환경 변수가 vim과 동일한 세션에서 (그리고 vim 이전에) 내 보낸 경우 나중에 환경 변수를 변경하더라도 하위 프로세스와 동일하게 유지됩니다.

+0

트릭은 SDK 파일의 다른 분기/개정판을 사용해야하는 경우에 대비하여 동기화 할 때 환경 변수가 필요하다는 것입니다. VIM이 실행되는 동안 스크립트가 변경되면 스크립트는 시작할 때 VIM에 채워지는 스크립트보다 새로운 환경 변수를 사용할 수 있습니다. 그래도 감사합니다. – DevNull

+2

vim에서 생성 된 것이라면 괜찮습니다. 환경 변수를 변경하면 변경된 하위 프로세스에만 영향을 미칩니다 (쉘 스크립트가 내 프로필을 다시 읽지 않는다고 가정합니다) –

+0

좋은 지적입니다. 감사! – DevNull