pegar - vim comandos
autocmd check nombre de archivo en vim? (4)
Quiero escribir algunos autocmd que verifiquen si el nombre del archivo es esto o aquello ...
He estado intentando:
autocmd VimEnter * if % is "preamble" | Explore | endif
autocmd VimEnter * if %=="preamble" | Explore | endif
autocmd VimEnter * if &filename == "preamble" | Explore | endif
pero nada de esto funciona?
¿Que debería hacer?
(Este ejemplo es demasiado simplificado, tenga en cuenta que también me gustaría tener una declaración else).
Debería obtener el nombre del archivo actual como @%
. Por ejemplo, echo @%
le dará el nombre del archivo, mientras que echo %
no lo hará. Sin embargo, para acciones en el archivo, use %
, por ejemplo, source %
.
Esto probablemente debería funcionar para lo que quieres hacer:
autocmd VimEnter * if @% == ''preamble'' | echo ''hello'' | else | echo ''world'' | endif
autocmd BufRead,BufNewFile preamble Explore
Información adicional usando ''@%'' con autocmd
Algunos eventos autocmd
no admiten el @%
named register para leer el nombre del archivo actual. En estos casos, es mejor usar <afile> :
expand(''<afile>'')
Hay dos problemas con los ejemplos en la publicación original:
Ni el
%
ni el&filename
devolverán el nombre del archivo como los usaste.
Mire la ayuda para la funciónexpand()
para ver cómo obtener el nombre de archivo:h expand()
Está ignorando la ranura en autocmd donde normalmente se especificaría un patrón de coincidencia de archivos. La tercera ranura en el autocmd (
*
en sus versiones) es en realidad un patrón para unir nombres de archivos. Ver:h autocmd-patterns
. Debería funcionar bien si desea ignorar la ranura del patrón, pero si es así, debe solucionar el problema en el párrafo 1 anterior. P.ej,autocmd BufRead,BufNewFile * if expand(''%'') =~ "preamble" | Explore | endif