2010-12-07 4 views
1

전자 메일 및 일반 텍스트를 쓸 때 vimfootnotes plugin을 사용하고 있습니다. 그러나 LaTeX 문서를 편집 할 때 키 바인딩이 많은 문제를 일으키는 것을 발견했습니다. 내가로드 할 때 컨트롤의 일부 수준을 가질 수 있도록 플러그인을 수정하고 싶습니다.vim 플러그인의 제어로드

나는 여러 가지 시도를 해봤지만, 결국에는 플러그인이 함수에 등록하는 keybinding을 감쌌다. 그런 다음 원하는 파일 유형에 대해 filetype 스크립트 (ftplugin /에서)에서 함수를 호출한다. 각주를 사용하십시오.

Vim에서 이것을 해결하는 것이 특이한 방법인가요? 더 좋은 방법이 있습니까?

답변

2

플러그인의 소스 코드를 본 후, 나는 다음과 같은 제안 할 수 있습니다 :

inoremap <Plug>Dummy1 <Plug>AddVimFootnote 
nnoremap <Plug>Dummy1 <Plug>AddVimFootnote 
inoremap <Plug>Dummy2 <Plug>ReturnFromFootnote 
nnoremap <Plug>Dummy2 <Plug>ReturnFromFootnote 

function s:FootnoteMaps() 
    if &filetype!=#'tex' 
     inoremap <buffer> \f <Plug>AddVimFootnote 
     nnoremap <buffer> \f <Plug>AddVimFootnote 
     inoremap <buffer> \r <Plug>ReturnFromFootnote 
     nnoremap <buffer> \r <Plug>ReturnFromFootnote 
    else 
     inoremap <buffer> #f <Plug>AddVimFootnote 
     nnoremap <buffer> #f <Plug>AddVimFootnote 
     inoremap <buffer> #r <Plug>ReturnFromFootnote 
     nnoremap <buffer> #r <Plug>ReturnFromFootnote 
    endif 
endfunction 
autocmd Filetype * call s:FootnoteMaps() 

먼저 트리거하지되지만 <Plug>AddVimFootnote<Plug>ReturnFromFootnote에 자신의 매핑 설정에서 플러그인을 방지 할 수 더미 매핑을 만듭니다. 둘째 (function + autocommand)는 tex가 아닌 파일 유형에 대해 오래된 매핑을 설정합니다. 플러그인을로드하기 전에 filetype 이벤트가 트리거되었다고 확신하면 첫 번째 섹션은 필요하지 않습니다.

일반적인 해결책 인 척하지 않습니다. 일반적인 해결책은«플러그인의 소스 코드를 검사하고 조금 생각하면됩니다».

2

나는 알고있다. 이 thread을 계산할 수 있습니다. 아마 기본적으로로드되지 않은 경로 (예 : ~/.vim/manually_loaded)에 넣을 수 있으며 필요할 때마다 원본 소스에 사용자 지정 함수를 작성할 수 있습니다. 파일 형식에 대한 자동 명령을 사용하여 소스를 지정할 수도 있습니다. 그러나 실수로 두 유형을 모두 열면 문제가 발생할 수 있습니다.