조건부로 플러그인을로드하는 방법


14

나는 이것에 대한 답을 찾고 있었지만 아직 아무것도 찾지 못했기 때문에 분명한 것을 놓친 경우 사과드립니다. 빠른 Google 검색이라고 생각했기 때문에 생각보다 복잡 할 수 있습니다.

편집중인 파일 유형에 따라 조건부로 플러그인을로드 할 수 있기를 원합니다. 예를 들어, 파이썬을 편집 할 때 vim-sexp설치 하는 키 바인딩을 원하지 않지만 클로저에서 작업 할 때 해당 플러그인을로드하고 싶습니다.

나는 현재 neovim과 병원체를 사용하고 있지만 나를 위해 다른 플러그인 관리자가 있다면 전환에 개방적입니다. 또한 이것이 존재 :set syntax whatever하면 플러그인을 전환합니까? 그것이 슈퍼이기 때문에 :)

도움 / 지시에 미리 감사드립니다!


1
당신이 질문을하고 있지만 실제로 다른 것을 설명합니다 : 플러그인이 전역 키 바인딩을 설치하는 경우, 플러그인이 전역 키 바인딩을 비활성화하고 (해제 방법에 대한 플러그인 문서를 읽음) 로컬에서 (예 : autocmds를 사용하여) 파일 유형에 대해서만 다시 활성화하십시오 필요. 플러그인이 제대로 작성되면 초기화를 지연 시켜서 많은 것을 얻지 못합니다. 그러나 플러그인에 의해 활성화 된 원하지 않는 글로벌 키 바인딩을 비활성화하지 않으면 플러그인이로드 된 후에도 여전히 영향을 미칩니다 .
VanLaser

답변:


18

Vim-Plug를 사용하여이 작업을 수행 할 수 있습니다. 읽어 보기를 참조하십시오 :

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }

플러그인을 활성화하는 :set filetype whatever대신 사용해야한다고 생각합니다 set syntax whatever.

(일부 다른 플러그인 관리자는 그렇게 할 수 있습니다 . vim 플러그인 관리자의 차이점무엇입니까? )


8

execute pathogen#infect()모든 플러그인을로드하기 위해 호출 하는 대신 모든 플러그인을 호출하십시오 pathogen#interpose.

execute pathogen#interpose('bundle/unicode.vim')
execute pathogen#interpose('bundle/AnsiEsc.vim')

병원체 API는 소스 외부에 문서화되어 있지 않지만 함수 이름이 모호하고 설명 적이 지 않아도 간단합니다. pathogen#surround()절대 경로 에도 사용할 수 있습니다 .

기본적으로 조건부로 플러그인을로드 할 수 있습니다 autocmd.

" Always use this plugin
execute pathogen#interpose('bundle/unicode.vim')

" Only for Python
autocmd FileType python execute pathogen#interpose('bundle/vim-sexp')

이러한 경우가 많으면 다른 경로로 나눌 수도 있습니다.

  • ~/.vim/bundle/always 항상 원하는 플러그인
  • ~/.vim/bundle/<filetype> 특정 파일 형식의 플러그인
  • 그런 다음 다음과 같이로드하십시오.

    " Always use this plugin
    execute pathogen#infect('bundle/always/{}')
    
    " Load filetype plugins if they exist
    autocmd FileType * if isdirectory('/home/martin/.vim/bundle/' . &ft) | execute pathogen#infect('bundle/' . &ft. '/{}') | endif
    

이렇게하면 autocmd모든 파일 유형 / 플러그인에 대해 전체 묶음을 추가 할 필요가 없습니다 .

이것이 존재 :set syntax whatever하면 플러그인을 전환합니까? 그것이 슈퍼이기 때문에 :)

  • 플러그인이로드되면로드됩니다. A "플러그인은"단순히의 모음입니다 function, command그리고 mapdefinitons. 나는 이것을 "언로드"하는 간단한 방법을 모른다.

  • 그것은 수행 사용 IFF 파일 타입의로드 플러그인을 :set filetype; 일반적으로, 당신은 항상 사용할 :set filetype하지 :set syntax , 같은 syntax단지 들여 쓰기 및 기타 설정 (예 : 구문 강조를 설정하고,하지 않을 것이다 iskeyword, formatexpr등).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.