2013-06-15 2 views
2

Vim에 autoclose.vim을 설치하려고했습니다. 내가 ~/.vim/plugin 폴더를 가지고 있지 않다는 것을 알아 차 렸습니다. 그래서 실수로 ~/.vim/plugins 폴더를 만들었습니다 (플러그인에 여분의 플러그인이 있음을 알았습니다). 그런 다음 au FileType python set rtp += ~/.vim/plugins을 내 .vimrc에 추가했습니다. 읽은 내용에서 해당 폴더의 스크립트를 자동으로 소스 할 수 있기 때문입니다.Vim 플러그인이 항상로드되지는 않습니까?

내 실수를 깨닫고 '플러그인'에서 여분을 꺼낼 때까지 플러그인이로드되지 않았습니다. 이 새로운 경로가 내 런타임 경로에 정의되어 있지 않기 때문에 혼란 스럽습니다. 나는 기본적으로 왜 플러그인이 내가 ~/.vim/plugin에 있었을 때로드되었지만 ~/.vim/plugins에 없는지 궁금해하고있다.

+1

'~/.vim/plugin'은 미리 정의 된 반면'~/.vim/plugins'은 미리 정의되어 있기 때문에 간단하다고 확신합니다. – Rubens

+0

그래, 내 추측 이었어. 그러나 내 플러그인을 저장할 사용자 정의 디렉토리를 갖고 싶다면 어떻게해야합니까? – Fumbster

답변

4

:help load-plugins에는 플러그인로드 방법이 나와 있습니다.

rtp에만 폴더를 추가하는 것으로 충분하지 않습니다. 서브 디렉토리가 plugin이어야합니다. 예를 들어, :set rtp+=/tmp/foo을 지정하면 /tmp/foo/plugin/bar.vim 파일이 감지되고로드되지만 /tmp/foo/plugins/bar.vim이나 /tmp/foo/bar.vim은 표시되지 않습니다.

+0

완벽한, 감사합니다. 어떻게 든 나는 그것을 놓쳤을 것임에 틀림 없었다. – Fumbster

2

당신은 올바른 경로에 set rtp+=...으로 있습니다. 그러나 눈을 만나는 것보다 rtp이 더 많습니다 (비회환, 도움이되는 색인 생성, 많은 경우). 당신 자신. 생산성이 한 달 동안 떨어질 준비가되어 있지 않으면.

모든 플러그인을 특별한 디렉토리에 저장하려면 적절한 runtimepath/플러그인 관리 솔루션을 사용해야합니다. Pathogen (rtp -manager) 또는 Vundle (플러그인 관리자)을 제안하지만 다른 것들도 많이 있습니다. rtp (runtimepath) 옵션

0

모든 폴더와 같은 폴더 구조를 가질 필요가 당신의 $VIMRUNTIME ($VIMRUNTIME 보통 /usr/share/vim/vim{version}입니다). 따라서 하위 디렉토리 이름이 동일해야합니다. autoload, doc, plugin (어느 것이 든 필요하지만 이름이 같은 것이 중요합니다). 플러그인은 해당 하위 디렉토리에 있어야합니다.

의 당신이 (당신의 경우는 ~/.vim있어) /path/to/dir/ftplugin

  • 모양의 파일 형식 플러그인에 대한 /path/to/dir/plugin
  • 보기 글로벌 플러그인에 대한 rtp, vim 것이다

    • 모습에 /path/to/dir 있다고 가정 해 봅시다 구문 파일의 경우 /path/to/dir/syntax
    • /path/to/dir/doc
    • 의 도움말 파일을 찾으십시오.

    등등 ...

    vim 만 인식 하위 디렉토리 & 단검의 커플을 찾습니다; in /path/to/dir. 거기에 인식 할 수없는 하위 디렉토리 이름 (예 : /path/to/dir/plugins)이있는 경우 vim은 표시되지 않습니다.

    & dagger; "인식 됨"은 /usr/share/vim/vim{version} 또는 vim이있는 곳에서 같은 이름의 하위 디렉토리를 찾을 수 있음을 의미합니다[email protected] Kouevda 응답에 추가

  • +1

    고마워요. 그 덕분에 런타임 경로를 훨씬 더 명확하게 이해할 수있었습니다. 당신이 올바른지; 필자는 Vim 인식 폴더가 아닌'plugin '대신'plugins'을 사용했습니다. – Fumbster

    2

    : 정력이 수정 된 runtimepath에서 모든 플러그인을로드하는 FileType 이벤트에 rtp을 수정하는 것은 너무 늦게 될 수있다 :이 이벤트가 새로 추가에서의 vimrc가 공급 된 후이 보장되지 않으므로 플러그인을 출시 한 경우 것입니다 적재된다. 이 이벤트가 VimEnter 이벤트 이후에 시작된 경우 새로 추가 된 플러그인은 이 아니며이 자동으로 소스가됩니다. 당신이 파이썬 파일을 편집 할 때

    당신이 원하는 경우 소스에 자동 종료는 당신이 :au FileType python :source ~/.vim/macros/autoclose.vim (: macros 또는 모든 runtimepath에서 찾을 수 없습니다 plugin$VIMRUNTIME에있는 디렉토리 또는 디렉토리를 제외한 다른 하위 디렉토리 참고)를 사용합니다.

    autoclose를 사용하려면 파이썬 파일을 편집 할 때만 플러그인 소스와 문서를 확인해야합니다. 플러그인이 작동하려면 플러그인 측에서 지원되어야합니다.

    // 자동 종료가이 기능을 지원하지 않는 경우 또는 단락 위에서 :au FileType 명령을 사용하지만, 정력 상태 (명령, 매핑 및 autocommands)를 기록 뭔가, source 후 같은 추가 상태에서 차이점을 찾을 수와 source 앞에 추가 filetype이 파이썬이 아닌 경우 각각 :au BufEnter의 차이점을 삭제하고 다른 경우 복원하십시오. hacky 및 이상한 버그가 발생할 수 있습니다. 상태 기록 및 차등 결정 코드의 예는 here입니다.

    +1

    언어 별 플러그인을 로딩하는 간단한 방법은'.vim/ftplugin' 폴더에 던져 넣는 것입니다. 따라서 autoclose 만 사용하려면 ftplugin/python에 넣으십시오. 필자는 그것을 테스트했고 파이썬 파일 형식에서만 작동했습니다. 또한 .vimrc에'filetype plugin on'을 설정해야합니다. 어떤 글로벌 플러그인 이건, 그것들을'.vim/plugin' 폴더에 넣습니다. – Fumbster

    +0

    @Fumbster 이것은': au FileType'과 똑같은 해결책입니다. 파이썬 파일을 편집 할 때 * 소스 * 플러그인을 사용하지만 소스 코드를 작성한 후에는 글로벌 플러그인이되므로 편집하는 모든 후속 파일에 사용할 수 있습니다. 필자는 시맨틱 스 위반 (semantics violation) 때문에'ftplugin/python'을 사용하지 말 것을 강력히 제안합니다 : 전역 매핑을 정의하는 플러그인은 ** 파일 타입 플러그인이 아니며 일단 활성화되면 이후에로드되는 파일들에 대해 의미 론적으로 속합니다 디렉토리를'matchit.vim' (자동로드되지 않은 글로벌 플러그인)으로 설정하십시오. – ZyX

    +0

    @Fumbster * 물론, 나는 같은 vim 세션 *에서 편집 한 모든 후속 파일을 의미합니다. – ZyX

    관련 문제