¿Cuál es la diferencia de usar `au BufNewFile, BufRead * .py` y` au Filetype python` en .vimrc?

Pregunta:

Mientras configuro .vimrc, encontré que estos dos bloques de código tienen la misma funcionalidad.

au Filetype python set
     \ tabstop=4
     \ softtabstop=4
     \ shiftwidth=4
     \ textwidth=79

y

au BufNewFile,BufRead *.py
    \ set tabstop=4
    \ set softtabstop=4
    \ set shiftwidth=4
    \ set textwidth=79

Creo que hay una diferencia muy sutil entre ellos, pero no puedo entenderlo. Por ejemplo, vim interpreta el tipo de archivo al abrir el archivo, etc.

Respuesta:

Tu intuición es correcta: los dos comandos automáticos son muy similares.

El segundo comando automático se ejecuta cuando lee o comienza a editar un nuevo archivo con un nombre que termina en la extensión .py . La primera se ejecuta cuando el tipo de archivo está configurado en Python, lo que Vim generalmente hará automáticamente para los archivos .py .

Sin embargo, intente ejecutar los siguientes comandos con cada uno de los dos comandos automáticos en su lugar:

:new
:w new.py

Verá que se ejecuta el Filetype automático Filetype , pero el otro no. Por esta razón, probablemente debería usar la primera versión si desea usar un autocomando para esto.

Sin embargo, en mi opinión, existe una solución aún mejor. Crea un archivo en la ubicación:

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

E ingrese el contenido:

set tabstop=4
set softtabstop=4
set shiftwidth=4
set textwidth=79

Si aún no tiene los complementos de tipo de archivo habilitados, deberá hacerlo agregando el plugin al comando de tipo de filetype en su archivo vimrc:

filetype plugin on

Esto tendrá el mismo efecto, ¡no se requieren comandos automáticos!

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım