210 - Gestión de notas con Vim y VimWiki
Existen cientos de aplicaciones para organizar tus notas, tanto en Linux como en otros sistemas operativos, una solución es VimWiki.
No tengo claro que tipo de embrujo ejercen sobre el ser humano las aplicaciones de notas, pero ciertamente algo hay. Puedes encontrar decenas, mas diría yo, cientos de aplicaciones de notas, no solo para el ecosistema de Linux, sino para cualquier ecosistema. Aplicaciones como Joplin, Simplenote, Laverna, RedNoteBook, y así podría seguir durante varias decenas de líneas. Y sin embargo, a mi lo que me funciona es lo mas sencillo, pero hace unos días descubrí el complemento perfecto para realizar la gestión de notas con Vim y VimWiki.
Seguro, que a ti, te ha pasado en mas de una ocasión como me pasaba a mi. Has empezado a utilizar una aplicación de notas, para gestionar todas tus ideas, y al poco tiempo descubres otra aplicación que todavía te parece mejor que la anterior, y abandonas la primera en favor de la segunda. Pero, después de un tiempo te sucede lo mismo con una tercera, y con una cuarta, y así sucesivamente Ad æternum.
La verdad es que no tengo ni idea a que se debe esta obsesión que tenemos por este tipo de aplicaciones, pero si que tengo claro, que esto no es cuestión de hacerlo de un día para otro. Esto no se soluciona con una aplicación. Esto se soluciona con una metodología. Una metodología que tienes que aplicar dia a dia.
En este sentido, en el episodio del podcast de hoy, te voy a contar como lo gestiono yo, y porque VimWiki, ha venido a complementar mi gestión de notas.
Gestión de notas con Vim y VimWiki
En que ando metido
Como todos los jueves quiero contarte en que ando metido, para que sepas lo que puedes encontrar en atareao.es.
Artículos
Respecto al tema de los artículos, la semana pasada publiqué el quinto capítulo del tutorial sobre herramientas para crear diálogos para tus scripts. En este nuevo capítulo me adentré en YAD, que probablemente sea la herramienta mas potente de las que he tratado hasta el momento.
¿Para que puedes utilizar esto de los díalogos? Digamos que has hecho un sencillo script para extraer el audio de un vídeo. Con este tipo de diálogos, no es necesario que recurras al terminal para ejecutarlo. Creas una interfaz que hará que sea más cómodo de utilizar, tanto para ti, como para otras personas. Imagínate las posibilidades que ofrece a aquellos que no están habituados al terminal.
Como ejemplo de esto, escribí otro artículo para poner en práctica lo comentado en el párrafo anterior, es decir, extraer el audio de un vídeo, y que vieras lo sencillo que resulta de hacer.
Aplicaciones
Siguiendo con la hoja de ruta marcada para esta tercera temporada, he comenzado la migración de My-Weather-Indicator a GNOME Shell. Ahora mismo, es mas una cuestión de diseño que de progración, pero al fin y al cabo, todo suma.
Gestión de notas
Antes de contarte que es esto de VimWiki, y porque me ha llamado tanto la atención, quería explicarte como tengo organizado mis notas. No solamente desde el punto de vista del trabajo, que es mucho mas sencillo, sino también desde el punto de vista de atareao.es que tiene una mayor complejidad.
Para que te hagas una idea, actualmente, entre artículos, guiones, libros, etc, he escrito como unos 1100 documentos, que los tengo organizados jerárquicamente como te comentaré mas adelante.
Sintaxis y formato
Como ya he comentado en algún episodio anterior del podcast, esto de las notas, artículos, guiones, libros… en fin, cualquier documento que redacto, lo hago en markdown.
La razón para hacerlo en markdown es sencilla, es texto plano, texto sin ningún formato. Esto me permite gestionarlo mediante control de versiones, básicamente con Git. Pero no solo esto, sino que además lo subo a un repositorio de GitLab, donde lo tengo perfectamente custodiado.
Es probable que te estés preguntando, porque hacerlo en markdown en lugar de escribir directamente en WordPress. Escribir utilizando Vim, o en general cualquier editor, me resulta tremendamente práctico, cómodo, sencillo y sobre todo, me permite concentrarme en lo que estoy haciendo.
Y esto no supone luego tener que convertir a formato html para insertarlo en WordPress, directamente lo copio y lo pego en WordPress en formato Markdown, y WordPress se encarga de convertirlo sin necesidad de ningún complemento adicional, ni ninguna característica extra.
De la misma manera para el tema de los libros. Los libros los escribo también en markdown, y posteriormente los convierto a epub utilizando pandoc
.
La misma herramienta que utilizo cuando alguien me pide un artículo o un documento en otro formato que no sea markdown. Por regla general lo prefiero enviar en formato PDF, pero en caso de que lo quieran en formato de Microsoft Word o de LibreOffice Writer, realizo la misma operación convirtiendo al formato que me pidan utiliznado siempre en cualquier caso pandoc.
Llegados a este punto hacer una mención al tema de los estilos, que están disponibles en cualquiera de las dos herramientas ofimáticas que he comentado anteriormente, y que prácticamente no se utilizan. De ahí la ventaja de utilizar markdown… porque los estilos los utilizas siempre y no te tienes que preocupar de esos detalles.
Copias de seguridad
Por supuesto es que todo esto de las notas tiene sentido si tienes notas. ¿A que me refiero?. Sencillamente, que si las pierdes, se acaba todo esto de las notas, y deja de tener sentido su gestión. De esta manera, es fundamental, mantener las notas bajo custodia.
Así, y tal y como te comenté en el episodio 173 del podcast salvado por Borg, es necesario que realices tus copias de seguridad, ya sea utilizando Borg, tal y como te recomendé en ese episodio del podcast, o de cualquier otra manera.
En este caso, en el caso de todas las notas y artículos, además de utilizar Borg para las copias de seguridad, estas las tengo en GitLab. Todo ello siguiendo lo que comenté en el podcast del 3-2-1.
Organización
Una vez te he contado todo el tema de la logística queda el tema de la organización, como tengo organizadas las notas.
En el trabajo
Las notas en el trabajo las tengo por carpetas, donde cada carpeta se corresponde a un año. Dentro de esa carpeta tengo 12 notas, una por mes. En la nota, cada día es un capítulo, y de esta forma me resulta fácil encontrar cualquier cosa en el mes.
¿Pero que sucede cuando quiero encontrar algo en toda esa conjunto de archivos? Pues un find
en combinación con un grep
tiene la solución. Por ejemplo si quiero saber en que archivos he escrito algo sobre kodi
, solo tengo que ejecutar,
find . -type f -name "*.md" -exec grep -l "kodi" {} \;
Para el proyecto
Para el proyecto atareao.es la cosa es un poco mas complicada, porque lo tengo organizado por actividades. Así, por ejemplo, tengo los siguientes directoriores,
- artículos
- libros
- podcasts
- presentaciones
- tutoriales
- videos
Dentro de cada uno de estos la organización es mas o menos similar a la del trabajo. Por ejemplo, en el caso del podcast, en lugar de estar organizado por años, simplemente está organizado por temporadas. Pero, dentro de cada temporada, para cada uno de los episodios hay un directorio que contiene además de las notas del podcast, el audio, las imágenes, etc.
En el caso de los libros, en este caso, pasa algo similar, pero está organizados por libros, y dentro de cada libro están los capítulos en formato markdown, y después diferentes directorios, para imágenes tipografías, scritps, etc.
Por último, y para no hacerme pesado, dentro de los artículos, está organizado por años, y dentro de cada año están los distintos artículos en sus correspondientes directorios que contienen las imágenes, ejemplos, notas… en fin lo que corresponda en cada caso.
¿Vim y VimWiki?¿Que pintan en todo esto?
Vim es la herramienta que utilizo para escribir artículos, guiones, tutoriales etc. Y VimWiki es una reciente incorporación, por la problemática que te voy a comentar a continuación.
Si te has dado cuenta, en la organización que he comentado hasta el momento, no hay ningún índice. Y esto es un problema. Si está todo muy organizado, pero le faltaba un índice general que me facilitara gestionarlo todo.
Una solución hubiera sido el Org mode, pero tenerlo todo en un único archivo nunca me ha convencido. El otro problema, menor, es que WordPress no detecta de forma nativa este formato, al menos hasta donde yo se.
¿Que me aporta VimWiki?
Una gestión integral de toda la documentación. Con VimWiki trabajas exactamente como si lo hicieras en un Wiki, con lo que moverte y desplazarte en los diferentes archivos es algo relativamente sencillo.
Pero no solo esto. Si tu creas un enlace a un nuevo documento, y este documento, no existiera, VimWiki, se encarga de crearlo, y moverte a ese documento.
¿Y como vuelves al documento padre? Simplemente con la tecla retroceso, backspace. Tan sencillo como eso, pero con una gran ventaja, que al volver al documento padre, VimWiki es el que se encarga de guardarte el archivo en el caso de que tu no lo hayas guardado todavía.
Entonces ¿Que es VimWiki?
Pues VimWiki no es ni mas ni menos que una Wiki personal para Vim. Una herramienta que te va a permitir organizar tus notas e ideas de forma sencilla, estableciendo enlaces entre los diferentes documentos, tal y como lo hace una Wiki.
A partir de aquí, ¿Que puedes hacer con VimWiki? Solo tu imaginación pondrá los límites, desde gestionar notas, crear listas ToDo, escribir un diario, etc. O como es mi caso, organizar todo los documentos, artículos, guiones, tutoriales de forma sencilla y práctica.
Esto me va a permitir navegar entre los distintos documentos con una facilidad increible. Básicamente como si estuviera navegando en la web.
¿Que características tiene VimWiki?
Si con lo que te he contado hasta el momento, no tienes suficiente, agárrate que vienen curvas,
- soporta tres lenguajes de marcado, entre los que se encuentra por supuesto markdown. Sin el cual, todo esto que te estoy contando no tendría ningún sentido.
- facilita la exportación a HTML, aunque esta característica yo no la estoy utilizando actualmente, porque directamente WordPress acepta la sintaxis del markdown.
- Lo importante. Enlace a otras páginas y a archivos externos. Esto es fundamental, y probablemente lo que de la utilidad que tiene este complemento de Vim.
- Búsqueda a través de todas las páginas de la Wiki.
- Facilidad a la hora de gestionar listas númericas
- Gestión de etiquetas que te va a permitir desplazarte con gran facilidad a través de estas etiquetas.
- Autoformateado de tablas.
Para mi es fundamental trabajar con markdown por las razones que he comentado anteriormente, con lo que he modificado la configuración de Vim para esto.
Uso de VimWiki
Mas o menos el uso de de este complemento para Vim, lo he ido comentando a lo largo de este podcast, pero, lo podría resumir con los siguientes atajos de teclado,
<Leader>ww
Te permite abrir el índice de tu Wiki<Enter>
si estás situado sobre un enlace te llevará a él<Retroceso>
vuelve al enlace anterior<tab>
busca el siguiente enlace<Mayusc-tab>
busca el enlace anterior
Como te decía al fin y al cabo te encuentras como navegando en una página web.
Algunos problemillas
Me he encontrado algunos problemas que, mas o menos, he ido resolviendo poco a poco. Respecto a la configuración que tengo ahora mismo, en lo que a VimWiki se refiere, es la que te reflejo a continuación,
let g:vimwiki_list = [{'path': '/datos/Sync/atareao.es/',
\ 'syntax': 'markdown', 'ext': '.md'}]
let g:vimwiki_global_ext = 0
let g:vimwiki_table_mappings = 0
Aún con esta configuración el problema que tengo es con la diferencia de archivo entre vimwiki
y markdown
. Para resolverlo, he añadido la siguiente función y el siguiente atajo de teclado, que me permite cambiar fácilmente entre los dos formatos,
function! ToggleMarkdown()
if &filetype == 'vimwiki'
set ft=markdown
setlocal spell spelllang=es
elseif &filetype == 'markdown'
set ft=vimwiki
endif
endfunction
map <silent> <C-N> :call ToggleMarkdown()<CR>
Conclusión
Sin lugar a dudas, VimWiki
es el pegamento que andaba buscando para unir todas las piezas. Navegar entre toda artículos, podcasts, guiones, etc, se ha convertido en algo muy, pero que muy sencillo.
Aquí cada maestrillo tiene su librillo. Por supuesto que no pretendo que cambies tu forma de organizarte y adoptes la que te acabo de contar. Nada mas lejos de mi intención. Simplemente se trata de darte ideas. Por supuesto, estoy abierto igualmente a sugerencias, para mejorar mi flujo de trabajo.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Imagen de portada de Daria Nepriakhina en Unsplash
Aún no he conseguido pasar de wiki a html o a markdown por un problemilla que me da la conversión. Pero cuando entras en el index del wiki y accedes a uno de los enlaces, como hago para volver a entrar. Me explico, hago un listado y cada elemento de la lista es un enlace a otro punto, una vez estás en ese punto ¿Cómo vuelvo atrás?