colores - temas vim
En mi.vimrc, ¿cómo puedo verificar la existencia de un esquema de color? (6)
En un .vimrc
, ¿es posible cargar una combinación de colores solo si existe?
Este es el wat que tengo en mi archivo .vimrc
.
if filereadable( expand("$HOME/.vim/colors/sublimemonokai.vim") )
colorscheme sublimemonokai "https://github.com/ErichDonGubler/vim-sublime-monokai
" vim-sublime-monokai only support 256 colours in terminal. If you are using a terminal which support truecolor like iterm2, enable the GUI color
set termguicolors
" Otherwise, use below setting to activate the 256 color in terminal
set t_Co=256
else
echom "The sublimemonokai.vim were not found to be used as colorscheme. elflord will be set for the timebeing..."
colorscheme elflord
endif
Básicamente comprueba si el esquema de color que me gusta existe en la máquina o no. Si lo hace, lo seleccionará y aplicará todos los ajustes necesarios para ello. De lo contrario, elija un esquema de color adecuado que se envíe con vim.
Al buscar otras respuestas, mi respuesta comparte parte de bit con @ user427390 answer y tiene otra condición adicional.
El siguiente enlace me ha ayudado mucho en la creación de scripts de mis propios archivos relacionados con .vimrc
y vim: http://learnvimscriptthehardway.stevelosh.com/
Mi metodo 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 colorscheme
favorito con un colorscheme
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 (lo que sea que esté en su sistema). No se muestran errores si uno o ambos de los esquemas de colores no están disponibles. Pon tu colorscheme
preferido primero.
Además, la catch
sin argumentos atrapa cualquier error. Esto es útil si está tratando con diferentes configuraciones regionales que dan diferentes mensajes de error.
Puede usar la función de filereadable
para verificar si existe una combinación de colores (por ejemplo, schemename
): marque una vez en ~/vimfiles/colors
(Win32, para Unix use ~/.vim/colors/
) y una vez en $VIMRUNTIME/colors/
:
if filereadable("/path/to/schemename.vim")
colo schemename
endif
Una alternativa a la respuesta de @eckes sería intentar cargar el esquema de colores y lidiar con el error si no existe:
try
colorscheme mayormaynotexist
catch /^Vim/%((/a/+)/)/=:E185/
" deal with it
endtry
Usar :colorscheme
en un try-catch como Randy lo ha hecho puede ser suficiente si solo quieres cargarlo si existe y hacer otra cosa en caso contrario. Si no estás interesado en la otra parte, un simple :silent! colorscheme
:silent! colorscheme
es suficiente.
De lo contrario, globpath()
es el camino a seguir. Puede, tehn, comprobar cada ruta devuelta con filereadable()
si realmente lo desea.
" {rtp}/autoload/has.vim
function! has#colorscheme(name)
pat = ''colors/''.a:name.''.vim''
return !empty(globpath(&rtp, pat))
endfunction
" .vimrc
if has#colorscheme(''desert'')
...