texto pegar linea insertar editar curso copiar con comandos comando vim if-statement autocmd

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:

  1. Ni el % ni el &filename devolverán el nombre del archivo como los usaste.
    Mire la ayuda para la función expand() para ver cómo obtener el nombre de archivo :h expand()

  2. 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