Markdown con Vim

Este es uno de los capítulos del tutorial Vim, un editor atemporal. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.

Este es una especie de meta artículo, porque, como sabes, tanto artículos, como guiones del podcast, como los capítulos de este tutorial, y en general de todos, los escribo utilizando Vim por defecto. Sin embargo, como ya indiqué en el capítulo anterior sobre complememtos de Vim, lo cierto es que en este momento, no soy mucho de utilizar complementos. Sin embargo, no quería pasar la oportunidad, sin dedicar tres capítulos adicionales a complementos especializados en el trabajo con determinados archivos. Por supuesto, dado el tiempo que dedico a escribir markdown con Vim, este tenía que ser el primero de los capítulos.

Hace algún tiempo, te hubiera dicho, que para mi tener la visión preliminar del documento como queda era algo imprescindible. Sin embargo, con el paso del tiempo, me he acostumbrado a no necesitarlo. Incluso te diría que con ver el archivo en markdown, prácticamente es como si lo viera terminado, pero, esto me parece exagerar, y exagerar bastante.

Lo que si te puedo asegurar, es que durante todo este tiempo, desde que markdown se ha convertido en mi medio para el proyecto atareao.es, soy mas productivo. Es tremendamente cómodo trabajar con markdown, y además tiene las ventajas de trabajar con un archivo de texto plano, con lo que no dependes de ningún software de edición, y por supuesto, puedes utilizar el control de versiones para trabajar con él.

En este nuevo capítulo del tutorial sobre Vim, combino la potencia de markdown, con el minimalismo de Vim, para de esta forma, mejorar mi productividad. Para ello, en este artículo, verás reunidos, un conjunto de complementos que te facilitarán el trabajo con markdown.

Markdown con  Vim

Markdown con Vim

Plug como gestor de complementos

Para este capítulo del tutorial, así como para los siguientes, utilizaré otro gestor de complementos diferente del que te comenté en el capítulo anterior. La razón de utilizar otro gestor de complementos, es que este que te comentaré a continuación, permite cargar los complementos de forma selectiva. Es decir, en función del tipo de archivo, tendrás unos complementos u otros. Esto aunque te puede resultar un poco desconcertante inicialmente, lo cierto es que tiene todo su sentido, y es la razón que me ha decantado por este gestor.

Instalación

Para instalar Plug, y utilizarlo como tu gestor de complementos, tienes dos opciones. La primera de ellas consiste en ejecutar la siguiente línea de comando,

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

La segunda de las opciones para instalar Plug, como gestor de complementos, es añadir las siguientes líneas en el archivo de configuración ~/.vimrc. La ventaja de este segundo procedimiento es que te despreocupas por completo, y solo tienes que llevar .vimrc a donde sea que vayas.

if empty(glob('~/.vim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
    \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif

Estas líneas las tienes que poner antes de plug#begin() que te comento a continuación.

Configuración

Una vez instalado Plug, el siguiente paso consiste en modificar el archivo de configuración añadiendo las siguientes líneas,

call plug#begin('~/.vim/plugged')
" -------------------------------
" -------------------------------
call plug#end()

De esta manera el listado de complementos quedará entre las dos líneas anteriores. Todos los complementos se instalarán el directorio indicado ~/vim/plugger.

Comandos

A continuación te comento algunos de los comandos que utilizarás con este gestor de complementos.

  • PlugInstall para instalar complementos, una vez guardad la configuración
  • PlugUpdate en el caso de que quieras actualizar tu listado de complementos
  • PlugClean te permite eliminar todos los complementos que no estén listados

A parte de estos comandos básicos también tienes otros que te permiten actualizar Plug PlugUpgrade, comprobar el estado de los complementos PlugStatus, examinar los cambios respecto a actualizaciones previas PlugDiff o generar un script de la actual configuración de complementos PlugSnapshot.

Markdown con Vim

Una vez comentado sobre Plug el gestor de complementos de Vim que utilizaré en este y los próximos capítulos del tutorial de Vim, indicarte los complementos que estoy utilizando para utilizar Markdown con Vim.

Tendrás que añadir las siguientes líneas para que tu configuración sea exactamente a la mía, en lo que a complementos se refiere,

Plug 'tpope/vim-surround'
Plug 'tpope/vim-fugitive'
Plug 'godlygeek/tabular', {'for': 'markdown'}
Plug 'plasticboy/vim-markdown', {'for': 'markdown'}

Las dos últimas de las líneas pone la diferencia respecto de otros gestores de complementos para Vim, y es precisamente lo que te he comentado anteriormente, la posibilidad de cargar complementos en función del tipo de archivo en el que estés trabajando en ese momento, y no cargar todos los complementos que tienes.

Por supuesto, también puedes hacer que un complemento esté disponible para diferentes tipos de archivo, por ejemplo,

Plug 'godlygeek/tabular', {'for': ['markdown', 'yml']}

A continuación te indico los distintos complementos y para que los utilizo con la edición de documentos en markdown.

vim-surround

Sobre este complemento ya te hablé en el capítulo anterior del tutorial. Se trata de un complemento que te permite trabajar con todo aquello que esté rodeados por paréntesis, corchetes, comillas, etiquetas y mucho mas. De esta manera tienes combinaciones de teclas para, de una forma tremendamente sencilla, borrar, modificar y cambiar todo aquello que está rodeado.

Así, por ejemplo para cambiar "Hola mundo" por 'Hola mundo' tan solo tienens que utilizar cs"'. De la misma manera, si en tu archivo html quieres cambiar "Hola mundo" por <strong>Hola mundo</strong>. por supuesto, puedes hacer otro tipo de operaciones como quitar las comillas con tan solo utilizar ds", y todo tipo de operaciones, utilizando por supuesto el [lenguaje de Vim](https://www.atareao.es/tutorial/vim/el-lenguaje-de-vim/].

vim-fugitive

El segundo de los complementos, no es específico de Markdown con Vim, sin embargo, dado que para casi todo lo que hago utilizo Git como control de versiones, he creido interesante tenerlo incluido aquí. Por supuesto, eres libre de considerar o no este complemento, en función de tus necesidades.

Con este complemento, puedes trabajar con Git desde la línea de comandos de Vim. Para esto tan solo tienes que utilizar :Git o :G seguido del comando que quieras ejecutar. Por ejemplo,

  • :Git add markdown.md para añadir markdown al staging
  • :Git commit para hacer un commit

Pero además tiene otros comandos que seguro te serán de gran utilidad, como son,

  • :Gwrite es la alternativa a :Git add <archivo-en-el-que-trabajas>.
  • :Gdiffsplit divide la ventana mostrándote la diferencia del archivos sobre el que estás trabajando y el que tienes guardado
  • :Gread es la alternativa a :Git checkout -- <archivo-en-el-que-trabajas>.

tabular

Es un complemento ideal para trabajar con alineaciones. Es decir, para conseguir alinear texto en tus documentos. Por ejemplo, convertir

uno = 1
tres = 3
cuatro =5

En,

uno    = 1
tres   = 3
cuatro = 4

Es tan sencillo como utilizar el comando :Tabularize /=

Otra opción muy interesante es trabajar con tablas en Markdown con Vim. Así, podemos pasar de algo como esto,

|1|3|4|
|uno|tres|cuatro|

a algo como esto

| 1   | 3    | 4      |
| uno | tres | cuatro |

con tan solo utilizar el comando :Tabularize /|. Sencillamente espectacular.

vim-markdown

Y por fin, la joya de la corona, en cuanto a Markdown con Vim. Este complemento te facilita una serie de herramientas con las que trabajar con mas facilidad en archivos Markdown con Vim.

Pliegues

Si no conoces el concepto de los pliegues, te recomiendo le des un repaso al capítulo de pliegues en Vim. En cualquier caso, indicarte que los pliegues están habilitados por defecto cuando utilizas este complemento. Algunos de los atajos de teclado, que te resultarán de utilidad, son los siguientes,

  • zr recoge el capítulo en el que te encuentres
  • za abre el capítulo
  • zR despliega todos los capítulos
Movimientos

Por otro lado es posible desplazarte fácilmente entre capítulos y subcapítulos utilizando simplemente las siguientes combinaciones de teclas,

  • ]] te mueve al encabezado siguiente
  • ]] vas al encabezado anterior
  • ]c te llevará al encabezado del apartado o capítulo actual
  • ]u con este irás al capítulo superior al que te encuentras
Comandos

Para poder trabajar con los comandos que menciono a continuación, tendrás que tener habilitada la opción :filetype plugin on. Una vez habilitada, puedes utilizar los siguientes comandos,

  • :HeaderIncrease incrementa el nivel de todos los capítulos. Así, un h1 pasará a ser un h2.
  • :HeaderDecrease se comporta a la inversa de lo indicado en el punto anterior, es decir, pasarás de un h2 a un h1.
  • :Toc crea una tabla de contenidos en una ventana a la izquierda de la que estás editando, donde podrás ver todos los capítulos y subcapítulos del documento sobre el que estés trabajando en ese momento. De esta manera te permite desplazarte con facilidad por todo el documento. Recuerda que para moverte entre ventanas tienes que utilizar Ctrl+w seguido del movimiento que quieras. Así, para desplazarte a la ventana de la izuiqerda Ctrl+w h y para desplazarte a la de la derecha Ctrl+w l. También es posible alternar entre ventanas utilizando Ctrl+w Ctrl+w. Y para cerrar la ventanan con la tabla de contenidos, simplemente te situas en la ventana y utilizas Ctrl+w c o :q.

Conclusión

Estas son algunas de las posibilidades que te ofrecen estos complementos que te he comentado para trabajar con documentos Markdown con Vim. Desde luego es para dedicar un capítulo a cada uno de ellos, por la cantidad de características y posibilidades que cada uno de ellos aporta, pero esto es mas cuestión de un nuevo tutorial.

En los siguientes capítulos de este tutorial, trataré sobre la implementación de archivos Bash con Vim y por último Python con Vim.

Imagen de portada de MILKOVÍ en Unsplash

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *