2010-11-19 10 views
29

He estado leyendo algunos comienzan con un punto (.vimrc .gvimrc) para aprender algunos trucos aseado, y me he encontrado con this one:¿Por qué algunas personas usan 'if has ("gui_running")' en un .gvimrc?

if has("gui_running") 
    set fuoptions=maxvert,maxhorz 
    au GUIEnter * set fullscreen 
endif 

Si esto ya es un .gvimrc (sólo cargado si se carga gVim) ¿por qué tiene la condición if has("gui_running")? ¿No es esto redundante? ¿Hay algún problema/razón especial para eso?

Sé que if has("gui_running") es interesante de usar en scripts y tal, estoy pidiendo específicamente que se use en .gvimrc, porque solo se obtiene cuando uso gvim, por lo tanto, en teoría, no es necesario.

Respuesta

46

El archivo gvimrc que el PO vinculada a que era mío, así que es mejor que te rindas y admitas que fue hecho sin una buena razón.

He copiado ese fragmento de Hacking without distractions, que recomienda ponerlo en su vimrc. Luego, en algún momento me di cuenta de que sería mejor moverlo al archivo gvimrc, pero no lo pensé bien y dejé el cheque if has('gui_running') en su lugar. Tiene razón al señalar que no es necesario, por lo que ahora lo eliminé.

Por el bien de la posteridad, aquí está mi gvimrc before y after el cambio.

+0

Empecé a poner todo lo relacionado con gvimrc GUI también, no lo entendí ('gui_running'). Gracias por pasar, y por cierto, gracias por los excelentes recursos de Vimcasts. Como sabes mucho sobre vim, ni siquiera podía pensar que ('gui_running') fuera inútil, pensé para mí mismo, "tiene que ser una razón para eso". :) –

4

De vim-documentación, que básicamente le permite hacer varios ajustes en función de la interfaz gráfica de usuario que ejecuta.

- To check in a Vim script if the GUI is being used, you can use something 
    like this: 

    if has("gui_running") 
     echo "yes, we have a GUI" 
    else 
     echo "Boring old console" 
    endif 

          *setting-guifont* 
- When you use the same vimrc file on various systems, you can use something 
    like this to set options specifically for each type of GUI: 

    if has("gui_running") 
     if has("gui_gtk2") 
     :set guifont=Luxi\ Mono\ 12 
     elseif has("x11") 
     " Also for GTK 1 
     :set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-* 
     elseif has("gui_win32") 
     :set guifont=Luxi_Mono:h12:cANSI 
     endif 
    endif 

ACTUALIZACIÓN:

  *gui-init* *gvimrc* *.gvimrc* *_gvimrc* *$MYGVIMRC* 
The gvimrc file is where GUI-specific startup commands should be placed. It 
is always sourced after the |vimrc| file. If you have one then the $MYGVIMRC 
environment variable has its name. 
+0

Entiendo los usos de 'if has (' gui_gtk2 ')'. Pero al estar en .gvimrc, ¿por qué no simplemente llamar a 'si tiene (' gui_gtk2 ')' en lugar de 'si tiene (' gui_running ') si tiene (' gui_gtk2 ')'? Me interesa saber por qué las personas llaman 'si tiene (' gui_running ')' en un archivo que solo se llama cuando ya estoy en una GUI. (.gvimrc es sólo proceden si estoy usando gvim, no vim) –

+3

la otra respuesta viable podría ser que las personas no son conscientes de la orden de inicialización,: ayuda de inicialización y que algunas personas están acostumbradas a mantener todos sus ajustes en .vimrc (con el gui_running) y al moverlos hacia .gvimrc mantener el gui_running por copiar y pegar ... –

1

Podría ser el caso .gvimrc se lee si se llama a iniciar el programa mediante el uso de gvim vez de vim? La única diferencia que puedo ver es que si llamas a gvim en un entorno donde no puede iniciarse (por ejemplo, estás en sesión ssh sin X). En ese vim se ejecutará, pero el archivo aún puede ser fuente.

(que no se sabe muy bien si este es el caso, en mi sistema que he compilado vim sin X, así que no puedo probarlo)

+0

se seens estúpido para tratar de ejecutar gvim en una sesión ssh, pero su argumento es válido, no he pensado en eso. –

+2

@Somebody: No necesariamente.Algunas personas usan gvim sobre ssh con X reenvío, en cuyo caso gvim aparecería en el servidor X local. Esta prueba podría ser un retroceso para el caso en que el reenvío de X no esté en su lugar por el motivo que sea y vim se inicia en su lugar. –

+0

@RandyMorris tienes razón. ¡Mi error! –

12

Mantener un archivo de configuración en lugar de dos es más fácil (especialmente si trabaja en varias máquinas y necesita mantener sus configuraciones sincronizadas). Así que en lugar de crear .gvimrcy.vimrc, habrá quien prefiera ponerlo todo en .vimrc de archivos y el uso de guardias.

Y luego alguien comparte este archivo en Internet, y la gente copia las secciones relacionadas con la GUI en .gvimrc. Así es como termina allí.

Cuestiones relacionadas