2011-08-18 18 views
5

Generalmente uso GVim, pero la mayor parte de mi configuración se realiza a través de .vimrc (como keymappings) porque los quiero en vim y gvim. Así que cuando edito mi vimrc y luego lo recibo de gvim, tengo que obtener mi .gvimrc luego de eso para recuperar mi colorcheme (porque es solo gvim). Traté de escribir una función para hacer esto, y me encontré con los problemas descritos en los comentarios a continuación:Función para fuente .vimrc y .gvimrc

function ReloadConfigs() 
    :source ~/.vimrc 
    if has("gui_running") 
     :source ~/.gvimrc 
    endif 
endfunction 
command! Recfg call ReloadConfigs() 
" error: function already exists, add ! to replace it 

function! ReloadConfigs() 
    :source ~/.vimrc 
    if has("gui_running") 
     :source ~/.gvimrc 
    endif 
endfunction 
command! Recfg call ReloadConfigs() 
" error: cannot replace function, it is in use 

¿Es posible hacer algo como esto? O, dado que mi .gvimrc solo tiene algunas líneas, ¿debería simplemente poner su contenido en un bloque if has("gui_running")?

Respuesta

14

Has puesto tu función en algún lugar de tu .vimrc. Esto significa que, mientras se está ejecutando, el :source .vimrc está intentando redefinirlo, lo cual es un problema. Usted podría intentar hacer esto:

if !exists("*ReloadConfigs") 
    function ReloadConfigs() 
     :source ~/.vimrc 
     if has("gui_running") 
      :source ~/.gvimrc 
     endif 
    endfunction 
    command! Recfg call ReloadConfigs() 
endif 

Si la función ya está definido, esto debe saltar redefinirlo, evitando el problema.

3

Yo diría que todo lo que tenga en su .vimrc que esté estropeando las configuraciones de gvim debería estar rodeado por un bloque if !has("gui_running").

Un autocmd parece ser la forma más fácil de manejar lo que estás tratando de hacer:

autocmd BufWritePre .gvimrc,.vimrc source <amatch> 

esta manera se obtiene el archivo de configuración vuelve a cargar automáticamente cuando se guarda sin tener que perder el tiempo con las funciones. Alternativamente, puede usar una asignación para activar :source $MYVIMRC o :source $MYGVIMRC.

+0

No hay nada en mi .vimrc que "arruine" gvim. Simplemente uso diferentes esquemas de colores en vim y gvim. El esquema de colores gvim se especifica en .gvimrc. También tengo la fuente, lines/cols, guioptions y showtabline settings. Parece que la línea 'autocmd' solo fuente el archivo que está escrito. Entonces, si estoy editando .vimrc en gvim y lo escribo, todavía tendré que buscar el gvimrc. – Daniel

+0

¿Por qué necesitas obtener el gvimrc? (Note mi primera oración.) –

+0

Noté su primera oración. Vim y gvim usan diferentes esquemas de colores, como dije en la publicación original. – Daniel

Cuestiones relacionadas