Abrir plantilla en el editor vi / vim según la extensión del fichero

En el editor vi podemos tener una serie de plantillas para distintos tipos de ficheros, bien para tener la estructura básica de un fichero ya creada o bien para tener una ayuda como tener la estructura de las funciones más usuales de ese lenguaje.

Así, podemos tener una serie de plantillas para Markdown, HTML, JavaScript, Python, Shell Script, PHP….

$ ls ~/.vim/*_template
html_template  js_template  md_template  php_template  py_template  sh_template

En las que cada cual puede incluir el contenido que más oportuno le parezca o más le vaya a ayudar en su trabajo, por lo que no hablaré de esas plantillas sino de cómo usarlas.

Configuración en ~/.vimrc

Para que abra una plantilla concreta en función de la extensión del fichero cuando el fichero esté vacío, es decir, que no modifique un fichero existente, sino que ayude a crear la estructura de un nuevo fichero, debemos incluir en el fichero ~/.vimrc (configuración de vi) la o las siguientes líneas:

au bufnewfile *.html 0r html_template  
au bufnewfile *.js 0r js_template  
au bufnewfile *.md 0r md_template 
au bufnewfile *.php 0r php_template 
au bufnewfile *.py 0r py_template  
au bufnewfile *.sh 0r sh_template

Donde:

  • au -> indica que ejecute un autocomando (autocmd)
  • bufnewfile -> indica que se ejecute cuando haya un buffer de un nuevo fichero (para no afectar a los ficheros existentes)
  • *.extensión -> cuando se abra un fichero con ese patrón. También es útil crear plantillas según un patrón más elaborado, como, además de una extensión, añadir un prefijo (module_, class_, import_) que no necesariamente tiene que ser el nombre definitivo del fichero, ya que luego podemos guardar el fichero con el nombre que queramos (:w nuevo_nombre)
  • 0r -> para que añada la plantilla al comienzo del fichero (línea 0)
  • fichero_plantilla -> el fichero a incluir cuando se abra un nuevo fichero con ese patrón en el nombre

Posibles errores

El patrón y el fichero puede cambiar, para asociar distintas plantillas a distintos patrones, no así el resto de instrucciones, ya que olvidar el 0r daría un error:

Se ha detectado un error al procesar BufNewFile Auto-órdenes para "*.sh":
E488: Caracteres en exceso al final de la línea

E intentar colocarlo en otra línea distinta a la cero también dará error:

Se ha detectado un error al procesar BufNewFile Auto-órdenes para "*.sh":
E16: El rango no es válido: 10r ~/.vim/sh_template

Obviamente, el fichero a incluir debe existir, si no, también vi mostrará un mensaje de error:

Se ha detectado un error al procesar BufNewFile Auto-órdenes para "*.sh":
E484: No se pudo abrir el archivo "/home/fernando/.vim/sh_template0r"

 


 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.