Cómo ejecutar un comando al iniciar vim

11

Acabo de instalar un complemento para python que muestra el árbol de métodos. Por lo tanto, me gustaría abrir el árbol al inicio, por lo que no es necesario presionar los botones cada vez que abro un .pyarchivo. Pero, quiero que este comando se ejecute solo para .pyarchivos. Así es como se ve mi pieza vimrc:

nmap <F8> :TagbarToggle<CR>

¿Hay alguna forma de ejecutar este comando al inicio solo para .pyarchivos?

St.Antario
fuente
Hola San Antario. Es posible que desee tener en cuenta que su respuesta aceptada tiene muchos menos votos positivos que la respuesta alternativa.
pollitos

Respuestas:

8

Agregue en su .vimrc:

au BufEnter *.py :TagbarToggle<CR>

dónde

  • aues decir autocmd, ejecuta el comando automáticamente.

  • BufEnter es cuando ingresas el archivo por primera vez.

  • *.py es para el tipo de archivo python.

  • y el resto es el comando a ejecutar
kapil
fuente
2
Esto agregará un autocomando adicional cada vez que .vimrcse obtenga. Para evitar esto, la línea debe estar rodeada por un augroup que elimina el comando. Ver :help augroup-delete.
Rico
: augroup testgroup: autocmd! : au BufEnter * .py: TagbarToggle <CR> augroup END ¿está bien?
kapil
1
¡Me parece bien!
Rico
10

En mi opinión, el método más limpio para hacer esto es simplemente agregar el comando a un archivo en su .vim/vimfilesdirectorio:

~/.vim/after/ftplugin/python.vim

o para Windows:

$HOME\vimfiles\after\ftplugin\python.vim

Esta técnica está documentada en :help ftplugin-overrule(elemento de la lista 3), aunque el contexto (cambiar la configuración) es ligeramente diferente.

Ofrece los siguientes beneficios sobre la técnica de autocomando descrita por kapil .

  1. Código menos . Simplemente escriba el Vimscript que desea ejecutar. Usted no necesita un código de AutoCommand y lo rodean con augroupy autocommand!órdenes claras.

  2. Menos gastos generales . Vim ya está detectando el tipo de archivo y verificando la existencia del after/ftplugin/filetypearchivo: ¿por qué agregar un comando automático adicional que realiza el mismo propósito?

  3. Limpiador.vimrc . Creo que es mejor tener una funcionalidad específica del tipo de archivo separada de mi .vimrc. (Sin embargo, algunos no están de acuerdo con esto: vea las desventajas a continuación).

También tiene un par de desventajas menores:

  1. Solo funciona si está utilizando la detección de tipo de archivo de Vim. ( :help filetype)

    Sin embargo, esta es generalmente una de las primeras configuraciones que las personas habilitan en su .vimrc, y apostaría a que casi todos los usuarios de Vim ya la tienen activada.

  2. Algunas personas prefieren mantener toda su configuración en su .vimrcarchivo.

Rico
fuente
1
+1 para una ftplugin/<filetype>.vimmejor separación de preocupaciones :)
LEI