2010-07-30 8 views
15

Estoy usando vim y MacVim. Tengo un esquema de colores de 256 colores que me gusta para mi MacVim, pero si lo carga en vim normal, obviamente no funciona (en vez de eso, obtengo las luces intermitentes). Me gustaría poder usar la misma configuración vim en todos mis sistemas, así que:Esquema de colores condicional en .vimrc

¿Hay alguna manera de verificar el tamaño de la paleta en .vimrc y establecer uno de los dos esquemas de colores en consecuencia? Si eso no es factible, entonces buscar MacVim vs. vim también estaría bien.

Respuesta

23

Tiene varias opciones.

Creo que su mejor opción es cargar un colorcheme en .vimrc, y otro en .gvimrc (o en su caso, simplemente no cargue un esquema de colores en .vimrc en absoluto). El esquema de colores .gvimrc solo se cargará cuando esté ejecutando la versión de GUI de MacVim.

Si no desea dividir la configuración a través de múltiples archivos, también se puede utilizar un condicional como ésta en .vimrc:

if has('gui_running') 
    colorscheme mycrazycolors 
endif 

Por último, si realmente quiere saber el número de colores disponible, se puede comprobar la configuración t_Co:

:echo &t_Co 

t_Co está vacío en la versión GUI de MacVim, por lo que probablemente aún desea utilizar una variación de la técnica has(). De hecho, el valor predeterminado .vimrc hace algo similar para determinar cuándo habilitar el resaltado de sintaxis:

if &t_Co > 2 || has("gui_running") 
    syntax on 
endif 

En aras de la exhaustividad, debo mencionar que también se podría ampliar el archivo de esquema de colores para incluir los ajustes razonables para los terminales de color. Sin embargo, esta es una buena cantidad de trabajo, y podría ser más fácil simplemente cambiar a una aplicación de terminal que admita más colores.

ver a estos temas para obtener más información:

:help has() 
:help termcap 
:help termcap-colors 
+0

Gracias por esto, especialmente para '.gvimrc' - No sabía que existía. – Amadan

5

poco hice algo como esto para utilizar el mismo .vimrc en todos nuestros sistemas Linux, pero el uso de la fuente de espacio sencillo Ubuntu si yo estaba corriendo en Ubuntu:

if (match(system("cat /etc/issue"), "Ubuntu") != -1) 
    set guifont=Ubuntu\ Mono\ 13 
else 
    set guifont=Monospace\ 11 
endif 

me parece que se podría hacer algo similar para detectar si se está ejecutando en un Mac o de otra manera:

if (match(system("uname -s"), "Darwin") != -1) 
    colorscheme macscheme 
else 
    colorscheme otherscheme 
endif 

Tenga en cuenta que utilicé http://en.wikipedia.org/wiki/Uname para averiguar lo que dice uname en OS X. No tengo una Mac aquí a mano para probarlo, pero me imagino que es exacto.

+2

FYI: 'uname -s' imprime' Darwin' en mi mac. – sdolan

Cuestiones relacionadas