2011-02-15 5 views
15
exists() 플러그인을 Vim에 설치했는지 확인하기 위해 exists()를 사용하고 있습니다. ( ;:에 매핑했습니다.) :

Pathogen을 사용하여 시작할 때 "exists : if :"명령이 실패하면

if exists(":NERDTree") 
    map <F4> ;NERDTreeToggle<CR> 
endif 

.vimrc 파일을 수동으로 소스하지 않으면 매핑이 작동하지 않습니다. 시작시 내 플러그인을로드하기 위해 Pathogen을 사용하고 있습니다. 그 플러그인과 관련이 있다고 생각합니까?

내 완성 된 .vimrc 파일 : https://github.com/ElbertF/dotfiles/blob/master/.vimrc

+3

당신은'nnoremap 를 사용해야합니다. – ZyX

답변

22

플러그인 만로드되기 때문에 정력이 처리를 완료 exists()에 대한 귀하의 전화가 작동하지 않는 .vimrc-:help startup를 참조하십시오. 또한 병원균은 실제로 플러그인을로드하지 않으며 단지 포함 된 폴더를 runtimepath 옵션에 추가하기 때문에 .vimrc 뒤에로드됩니다. 당신이 .vimrc 후 구문 분석 .gvimrc 파일의 일부 매핑을 정의 할 수 있습니다 MacVim에서

autocmd VimEnter * if exists(":NERDTree") | exe "map <F4> ;NERDTreeToggle\<CR>" | endif 
+2

고마워요! 나는 전체 섹션을 함수에 넣고 VimEnter에서 호출했다. 'autocmd VimEnter * : call Plugins()' –

+1

참고 :': scriptnames'를 사용하면 플러그인 전에 vimrc 설정 파일이 효과적으로로드되는지 확인할 수 있습니다. – aymericbeaumet

+0

자신 만의'vim' 함수를 작성하는 방법에 대한 자세한 내용은 http://vim.wikia.com/wiki/Write_your_own_Vim_function에서 확인할 수 있습니다. – slm

1

: 정력이로드가 완료된 후에는 VimEnter을 만들 수

은 당신의 매핑을 설정 autocmd. 파일 → 열기 ... 또는 파일 → 저장과 같은 GUI 메뉴 명령을 다시 정의하는 것이 유용합니다. 여기
는 NERDTree를 엽니 다 단축키 O를 명령을 + 을 재정의 .gvimrc 파일의 예는 다음과 같습니다

macm File.Open\.\.\. key=<nop> 명령을 열기
→ 메뉴 항목 파일에서 어떤 단축키를 바인드합니다
if has('gui_running') 
    if exists(':NERDTree') 
     " Command+O shows the NERDTree instead of the open dialog 
     macm File.Open\.\.\. key=<nop> 
     nnoremap <D-o> :NERDTree<CR> 
     inoremap <D-o> <Esc>:NERDTree<CR> 
     vnoremap <D-o> <Esc>:NERDTree<CR> 
    endif 
endif 

.
?noremap <D-o> ... 명령은 NERDTree를 일반/삽입/시각 모드로 표시하기 위해 명령 + o을 바인드합니다. 이 아니라`지도 (당신은 아마 시각 및 운영자중인 모드에서 NERDTreeToggle를 호출하지 않으 + 여기에 콜론을 변경할 필요) NERDTreeToggle `...`:

관련 문제