2011-02-15 5 views
15

estoy usando exists() para comprobar si los plugins se instalan en Vim (Me asignan ;-:):si existe (": comando") falla en el arranque, el uso de patógenos

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

El mapeo no lo hace funciona a menos que obtenga el archivo .vimrc manualmente. Estoy usando Pathogen para cargar mis complementos al inicio, ¿me imagino que eso tiene algo que ver?

Mi archivo completo .vimrc: https://github.com/ElbertF/dotfiles/blob/master/.vimrc

+3

Debe usar 'nnoremap : NERDTreeToggle ' (no es necesario cambiar aquí dos puntos + probablemente no desee llamar a NERDTreeToggle en modo visual y pendiente de operador), no 'map ...'. – ZyX

Respuesta

22

Su llamada a exists() no funciona porque los plugins sólo se cargan después vim ha terminado de procesar su .vimrc - ver :help startup. Además, el agente patógeno en realidad no carga sus complementos, simplemente agrega sus carpetas que contienen a la opción runtimepath para que se carguen después de su .vimrc.

Se puede crear un VimEnter autocmd para configurar el mapeo después de vim ha terminado de cargar:

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

¡Gracias! Puse toda la sección en una función y la llamo en VimEnter. 'autocmd VimEnter *: call Plugins()' –

+1

Nota: puede usar ': scriptnames' para ver que efectivamente el archivo de configuración vimrc se carga antes de los complementos. – aymericbeaumet

+0

Los detalles para escribir su propia función 'vim' se tratan aquí: http://vim.wikia.com/wiki/Write_your_own_Vim_function – slm

1

En el MacVim puede definir algunas asignaciones en el archivo .gvimrc, que analiza después de la .vimrc. Es útil redefinir los comandos del menú de la GUI como Archivo → Abrir ... o Archivo → Guardar.
Aquí es ejemplo del archivo .gvimrc que redefine Comando +o tecla de acceso directo para abrir NERDTree:

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 

Dónde macm File.Open\.\.\. key=<nop> comando desvincula cualquier tecla de acceso directo en el menú elemento Archivo → Abrir.
Y los comandos ?noremap <D-o> ... enlazan Comando + o para mostrar el NERDTree en los modos normal/insertar/visual.

Cuestiones relacionadas