Previsualización de ficheros Markdown en Vim en la terminal

AdriMcGrady 29/05/2023

En esta entrada vamos a ver como previsualizar tus ficheros markdown con vim. Y sí, en la misma terminal que estás usando para editar tus ficheros con vim, sin necesidad de abrir ningún navegador, ni tan siquiera de tener un entorno de escritorio funcionando. Únicamente usaremos, el plugin de Vim preview-markdown.vim y el renderizador de markdown MarkDown Renderer, también conocido como mdr.

Si buscas plugins de Vim previsualización de archivos Markdown o incluso de otro tipo de archivos en Vim Awesome observarás que hay bastantes plugins para llevar acabo esta tarea. Pero también te darás cuenta que la mayoría de ellos usan un navegador para mostrarte la previsualización de los ficheros. Y esto es algo que no me gusta nada por varios motivos. Para empezar, en mi caso no tengo entorno de escritorio corriendo en mis SBC como la Raspberry Pi o el NanoPi Fire 3, y suelo conectarme por SSH para trabajar y editar ficheros. Pero es que incluso si estuviera trabajando en un entorno gráfico o exportando las X, la previsualización en un navegador me haría quitar el foco de la terminal para previsualizar el fichero.

preview-markdown.vim

Así que por todo lo que os he contado antes, os voy a hablar de preview-markdown.vim. En realidad, es un plugin bastante sencillo de usar y utilizar como podéis comprobar en su Repositorio oficial de GitHub o en su ficha en Vim Awesome. Lo unico importante ha tener en cuenta es que existe un pre-requisito indispensable que es la instalación de un renderizador de Markdown para la terminal de los que nos indican en la documentación como soportados:

  • mdr
  • glow
  • mdcat

En mi caso he optado por el primero de ellos, mdr.

Pre-Requisito: Instalación de mdr

La instalación de mdr es bastante sencilla. Puedes realizar la compilación del código fuente desde El repositorio de mdr en GitHub o descargar un binario precompilado desde la sección de Releases del repositorio. Esta última opción es la que yo he escogido por simplicidad. En mi caso he escogido el binario precompilado de la versión 0.25 de mdr para ARM en Linux. Si tu arquitectura coincide, puedes descargarlo directamente desde aquí. En otro caso, tendrás que descargar el que se corresponda con tu sistema operativo y arquitectura.

Vamos a proceder a realizar la descarga directamente en /usr/local/bin para lo que necesitarás permisos de escritura en esa carpeta. Lo que probablemente te lleve a realizar la descarga con root (como es mi caso) o con sudo. Una vez descargado habrá que darle permisos de ejecución al binario y ya lo tendremos listo para usarlo.

root@nanopifire3:~# cd /usr/local/bin/
root@nanopifire3:/usr/local/bin# wget https://github.com/MichaelMure/mdr/releases/download/v0.2.5/mdr_linux_arm
root@nanopifire3:/usr/local/bin# chmod +x mdr_linux_arm
root@nanopifire3:~# ln -s mdr_linux_arm /usr/local/bin/mdr

Instalación de preview-markdown.vim

Lo único que nos falta tener en cuenta antes de realizar la instalación de preview-markdown.vim es simplemente que tu versión de Vim debe ser mayor o igual que 8.1.1401. Puedes comprobar esto de esta manera tan simple:

vim --version

Así que, ya cumpliendo con los dos pre-requisitos, lo único que falta es proceder a la instalación del plugin. En este artículo, y puesto que es el gestor de plugins para Vim que yo uso, voy a dejarte como lo instalo con el gestor de plugins Plug. Pero si tienes cualquier otro, basta que lo hagas como normalmente. O si no sabes, en la ficha del plugin en Vim Awesome vienen diferentes ejemplos para diferentes gestores de plugins. Sea como fuere, para el caso de Plug se instala así:

  • Añadimos la siguiente línea al fichero ~/.vimrc en la sección de Plug:
" CONFIGURACIÓN GESTOR DE COMPLEMENTOS PLUG
call plug#begin('~/.vim/plugged')
" -------------------------------
" ... Otros plugins de vim por aquí...
Plug 'skanehira/preview-markdown.vim', {'for': 'markdown'}
" -------------------------------
call plug#end()

Si no estás muy familiarizado con el gestor de complementos Plug, te puede resultar extraña la parte {'for': 'markdown'}. Su función es que el plugin solo se cargue cuando estemos editando ficheros markdown.

Una vez editado el fichero de configuración de vim, lo que nos falta es realizar la instalación del complemento. Esto último se hace ejecutando la siguiente orden desde dentro del propio Vim:

:PlugInstall

Previsualizando tus ficheros Markdown directamente en Vim

Ahora que está instalado preview-markdown.vim, solo queda empezar a usarlo para previsualizar tus ficheros markdown dentro de Vim directamente desde la terminal. A este respecto, solo puedo decirte que es tremendamente simple de usar. Basta con ejecutar el siguiente comando dentro de Vim:

:PreviewMarkdown [left|top|right|bottom|tab]

Lo que implica cada opción de la previsualización es bastante fáciles de adivinar:

  • left: Abrirá una nueva ventana de Vim a la izquierda para la previsualización.
  • top: Abrirá una nueva ventana de Vim arriba para la previsualización.
  • right: Abrirá una nueva ventana de Vim a la derecha para la previsualización.
  • bottom: Abrirá una nueva ventana de Vim debajo para la previsualización.
  • tab: En vez de usar una ventana nueva para la previsualización, usará una pestaña.

Plugin preview-markdown.vim en funcionamiento

Opciones adicionales de preview-markdown.vim

preview-markdown.vim dispone de un par de opciones adicionales para usar añadiendo a tu fichero ~/.vimrc.

  • La primera es bastante autodescriptiva: g:preview_markdown_parser. Su función es la de elegir el previsualizador o renderizador que se quiera. Por defecto es mdr.
  • La segunda es muy interesante: g:preview_markdown_auto_update. Sirve para que la previsualización se vaya actualizando tal y como se vaya escribiendo en el buffer (cuando ejecutes :w por ejemplo) sin tener que volver a ejecutar el comando PreviewMarkdown.

Para configurar esta última opción, que es la más interesante, deberás a añadir a tu fichero ~/.vimrc la siguiente configuración:

" CONFIGURACIÓN MARKDOWN PREVIEW
let g:preview_markdown_auto_update = 1

Algunas consideraciones sobre este plugin de Vim

Para finalizar me gustaría aclarar algunas cositas sobre el plugin preview-markdown.vim. La primera de ellas es que desgraciadamente no está en desarrollo activo ya. Pero aún así lo he querido traer el blog porque no he encontrado otro similar con desarrollo activo. Y… ¿quién sabe? Lo mismo alguién que esté leyendo esto se anima a hacer un fork y continuarlo. Porque la segunda cosa que tengo que aclarar es que tiene algunos detalles que pulir como, por ejemplo, que cada vez que recarga la previsualización te lleva al principio del documento. Esto último puede resultar bastante molesto, sobre todo cuando el documento sobre el que estás trabajando es grande.

En cualquier caso, creo que es un plugin de bastante utilidad y que te ayudará a la hora de trabajar con Vim y ficheros Markdown. Y además, a la vez que hemos hablado del plugin te he mostrado un render de Markdown para la terminal que también puede ser muy util para leer archivos Markdown directamente en la terminal.

Enlaces de interés:

Artículo anterior Artículo siguiente

Artículos relacionados: