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
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ónPlugUpdate
en el caso de que quieras actualizar tu listado de complementosPlugClean
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://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 encuentresza
abre el capítulozR
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í, unh1
pasará a ser unh2
.:HeaderDecrease
se comporta a la inversa de lo indicado en el punto anterior, es decir, pasarás de unh2
a unh1
.: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 utilizarCtrl+w
seguido del movimiento que quieras. Así, para desplazarte a la ventana de la izuiqerdaCtrl+w h
y para desplazarte a la de la derechaCtrl+w l
. También es posible alternar entre ventanas utilizandoCtrl+w Ctrl+w
. Y para cerrar la ventanan con la tabla de contenidos, simplemente te situas en la ventana y utilizasCtrl+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.
Me ha parecido un artículo genial, muchas gracias.
Muchísimas gracias