En mi.vimrc, ¿cómo puedo comprobar la existencia de un esquema de color?
En un .vimrc
, ¿es posible cargar un esquema de color solo si existe?
5 answers
Usar :colorscheme
en un try-catchcomo Randy ha hecho puede ser suficiente si solo quieres cargarlo si existe y hacer algo más de lo contrario. Si no estás interesado en la parte else, un simple :silent! colorscheme
es suficiente.
De lo contrario, globpath()
es el camino a seguir. Puedes, tehn, comprobar cada ruta devuelta con filereadable()
si realmente lo deseas.
" {rtp}/autoload/has.vim
function! has#colorscheme(name)
pat = 'colors/'.a:name.'.vim'
return !empty(globpath(&rtp, pat))
endfunction
" .vimrc
if has#colorscheme('desert')
...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:11
Una alternativa a la respuesta de @eckes sería intentar cargar el colorscheme y lidiar con el error si no existe:
try
colorscheme mayormaynotexist
catch /^Vim\%((\a\+)\)\=:E185/
" deal with it
endtry
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-18 14:25:37
Usted podría utilizar el filereadable
función para comprobar si existe una combinación de colores (por ejemplo, schemename
): compruebe una vez en ~/vimfiles/colors
(Win32, para uso Unix ~/.vim/colors/
) y una vez en $VIMRUNTIME/colors/
:
if filereadable("/path/to/schemename.vim")
colo schemename
endif
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-18 04:54:41
Mi método es similar,
if filereadable( expand("$HOME/.vim/colors/railscast.vim") )
colorscheme railscast
endif
Esto es un poco más robusto que codificar todo el camino.
Normalmente uso un favorito colorscheme
con una reserva si mi favorito no está disponible. Un try
anidado hará que esto funcione:
try
colorscheme solarized
catch
try
colorscheme peachpuff
catch
endtry
endtry
Si ninguno de los dos colorscheme
está disponible, se carga el predeterminado (sea lo que sea que esté en su sistema). No se muestran errores si uno o ambos colores no están disponibles. Ponga primero su colorscheme
preferido.
También, catch
sin argumentos captura cualquier error. Esto es útil si está tratando con diferentes ubicaciones que dan diferentes errores mensaje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-10-04 21:44:00