En este nuevo apunte vamos a estar revisando cómo podemos utilizar el editor de textos Neovim para poder escribir novelas y ensayos. Y todo usando la mínima cantidad de plugins.
Ya en la ocasión anterior estuvimos haciendo algo similar con el programa VSCode y VSCodium
El objetivo esta vez es básicamente el mismo: vamos a tomar un programa que se utilizá más bien para escribir código de computadora, y vamos a configurarlo para utilizarlo con la idea de escribir textos largos en prosa.
Y si, no solamente estoy perdiendo el tiempo con esto. También estoy escribiendo más, y voy probando nuevas herramientas. La realidad es que, aunque me gusta LibreOffice Writer, es difícil utilizarlo para organizar proyectos grandes con múltiples archivos.
Por el contrario, Markdown en combinación con un procesador de texto similar a VSCode, Vim o Emacs resulta mucho más eficiente.
Sin dar muchas más vueltas, pasemos directamente a la acción.
Algunos detalles antes de empezar
Iba a escribir un par de secciones sobre cómo instalar Neovim y asuntos similares, pero supongo que si estás leyendo esto ya conocés el programa desde antes.
Y si no conocés el programa, cualquier introducción que pueda hacer en esta entrada va a resultar muy superficial.
Por otra parte si necesitás algo de información para empezar con el programa, te recomiendo este otro apunte: Guía para empezar con el editor Neovim en Linux.
Es importante recordar que soy un principiante en todo esto. Al final de la entrada voy a compartir otros recursos mucho mejor planeados que esta sencilla entrada.
Escribir novelas y ensayos en Neovim sin plugins extra
Primero me interesa revisar cómo podemos hacer para escribir textos largos en Neovim sin acceder a extensiones por fuera del programa.
¿Por qué hacer esto? Bueno, creo que se puede conseguir mucho de este programa haciendo solo algunos pequeños cambios de configuración.
Este programa nos alienta que hagamos todo por medio del teclado, sin utilizar el ratón. Nos permite una navegación rápida, y sus múltiples opciones nos permiten tener una pantalla completamente dedicada al texto.
Todas esas son ventajas para dedicarnos a escribir proyectos largos.
Agregar un contador de palabras
Lo primero que vamos a necesitar es conocer el número de las palabras de nuestro proyecto.
Después de todo esa es una de las obsesiones de cualquiera que escribe un texto largo ¿cuánto escribí y cuánto me falta para terminar?
Una forma rápida de averiguar esto es utilizando este comando:
:echo wordcount().words
También es posible conocer este dato instalando un plugin… pero este comando resuelve el asunto fácil.
Para hacerlo persistente, podemos crear y modificar el archivo en el directorio:
~/.config/nvim/lua/statusline.lua
Agregando este código:
vim.o.statusline = '%F %{wordcount().words} palabras' vim.o.laststatus = 2
Y modificamos nuestra configuración en “init.lua” incluyendo esta linea:
require(‘statusline’)
Con eso vamos a encontrar el contador de palabras directamente en la barra de status, más el nombre del archivo en el que estamos trabajando. Y podemos hacerlo sin necesidad de plugin externo.
Crear un límite en la pantalla
Al escribir en Neovim vamos a notar que al llegar al final visible de la pantalla las palabras simplemente continuan contra ese borde.
O también puede pasar que la oración se corte y pase al siguiente renglón en el medio de una palabra. Esto crea párrafos dificiles de leer.
Lo que necesitamos es que, al llegar al final de la oración, la última palabra empiece completa en el nuevo renglón.
Una posible solución es esta configuración, tomada de este sitio, donde se propone crear un límite en la pantalla que corte el texto al llegar a los 80 caracteres. Es una buena solución, pero no es la que estoy utilizando.
Mi alternativa es utilizar estas opciones desde la configuración en lua:
vim.opt_local.wrap = true vim.opt_local.linebreak = true vim.opt_local.breakindent = true
Voy a profundizar más en estas opciones al hablar de Markdown en la próxima sección.
Por ahora creo que lo más importante es:
vim.opt_local.wrap = true:
Con esto conseguimos activar el ajuste de líneas. De esta forma las oraciones no se extienden “por fuera” del borde visible de la pantalla.
vim.opt_local.linebreak = true:
Esto activa el salto de línea. Ahora las oraciones largas se interrumpen en una palabra vompleta, en lugar de en medio de la palabra.
vim.opt_local.breakindent
Preserva la indentación de la linea anterior.
Utilizar Markdown en Neovim
Bueno, por suerte la sintaxis de Markdown aparece resaltada desde el vamos, siempre que estemos utilizando un archivo con la extensión correcta.
Esto se puede mejorar de todas manera… aunque todavía no me puse a revisarlo. Por ahora lo uso sin cambios.
En lo que respecta a la configuración particular para mis archivos escritos en Markdown, tengo una configuración “markd_opciones.lua” en este directorio:
~/.config/nvim/lua/markd_opciones.lua
Y estas son las opciones:
local function set_markdown_settings() vim.api.nvim_create_autocmd("BufEnter", { pattern = {"*.mkd", "*.md", "*.markdown"}, callback = function() -- opciones locales para markdown vim.opt_local.wrap = true vim.opt_local.linebreak = true vim.opt_local.breakindent = true vim.opt_local.shiftround = true vim.opt_local.autoindent = true vim.opt_local.copyindent = true vim.opt_local.shiftwidth = 4 vim.opt_local.conceallevel = 2 end }) end return { set_markdown_settings = set_markdown_settings, }
Y luego hago un llamado a este archivo desde “init.lua” de esta forma:
require('markd_opciones').set_markdown_settings()
Y con esto consigo darle formato a los archivos de Markdown para que en mi opinión resulte más sencillo escribir textos largos de esta forma.
Agregar un corrector ortográfico a Neovim
Para esto también es posible agregar un plugin.
Sin embargo una vez más voy a utilizar el corrector ortográfico integrado en el procesador de texto para simplificar las cosas.
Primero creo un archivo .lua, por ejemplo llamado “dict.lua” y le agrego lo siguiente:
vim.api.nvim_exec([[ autocmd BufRead,BufNewFile *.md,*.mkd setlocal spell! ]], false) -- revisa inglés y español vim.opt.spelllang = {'es', 'en'}
Y acto seguido lo referencio en mi archivo “init.lua”:
require(‘dict’)
Luego al abrir un nuevo Neovim, el programa va a preguntarme si quiero descargar los diccionarios necesarios. En este caso se van a descargar uno en español.
Además de esta forma el corrector solamente va a funcionar en los archivos con extensión “.md” o”.mkd”. Podemos agregar otro tipo de archivos cuándo lo necesitemos.
Pero si quiero también puedo utilizar mis propios diccionarios.
Convertir documentos con Pandoc
De momento estoy haciendo la conversión de archivos con la herramienta Pandoc.
Se puede instalar y utilizar este programa directamente desde la terminal en Linux.
Es posible agregar un plugin para esto, pero no es algo realmente necesario si queremos mantener nuestro propósito de escribir en Neovim utilizando una configuración mínima.
Cómo mejorar la experiencia de escribir textos largos utilizando plugins en Neovim
Previsualizar Markdown en Neovim
Entre las opciones existentes podemos usar el plugin markdown-preview.nvim
Utilizando esta extensión conseguimos que nuestro documento en markdown se vea renderizado en una pestaña del navegador.
Cómo escribir guiones cinematográficos desde Neovim
Escribir guiones cinematográficos en Neovim es posible, pero vamos a necesitar saber algunas cosas antes.
Escribir el guion usando Fountain
Para empezar necesitamos darle formato al texto, los guiones tienen una cierta estructura estándar que necesita respetarse. Y para eso nuestra mejor herramienta en este caso es el lenguaje Fountain.
Fountain es similar a Markdown, para escribirlo no necesitamos ningún programa en especial. Solamente [necesitamos conocer la sintaxis.](https:// fountain.io/syntax/)
A diferencia de Markdown, Neovim no trae desde un primer momento la opción de expandir la sintaxis de Fountian. Vamos a necesitar agregar un complemento extra.
Personalmente utilizo el plugin vim-fountain. Se trata de una herramienta que engloba en un mismo paquete el fountain-vim original con alguna otras funcionalidades.
Entonces ya tenemos Vim-Fountain. Esto nos permite ver diferentes estilos en cada parte del texto (personajes, cabecera). Y si revisamos vamos a notar que también podemos establecer un atajo para convertir en mayúscula una palabra y pasar a la linea de abajo, ideal para escribir dialogo.
Lo siguiente que vamos a necesitar es…
Cómo exportar nuestros documentos .fountain a PDF
Ok, esto no es exactamente Neovim pero quiero mencionarlo. Hay dos herramientas que podemos usar para convertir nuestro archivo fountain a PDF.
Recordemos que lo valioso de fountain es que nos permite escribir sin necesidad de pensar en los detalles. Al exportarlo el texto adquiere el formato necesario, respetando la tipografía y los espacios.
Entonces los dos programas son:
Se puede utilizar cualquiera de esos dos programas, ambos funcionan en la terminal de Linux.
Personalmente uso Screenplain para revisar el guion de tanto en tanto por fuera de Neovim, pero no lo utilizo para la copia final porque nunca pude conseguir que muestre el número de cada escena. Con Wrap consigo la copia final.
Cómo agregar Courier Prime a Linux
Los guiones cinematográficos son escritos generalmente en la tipografía Courier.
Wrap revisa qué tipografía posible puede usar para convertir el guión, y si no encuentra alguna Courier utiliza GNU FreeFont FreeMono en su lugar.
En lo personal noté que el problema de usar esa última tipografía es que Wrap no traslada ninguna de las tildes ortográficas del texto de Fountain al PDF.
Para resolver esto podemos descargar Courier Prime, una alternativa a Courier.
Tengo que agregar ese archivo en este directorio para un uso global:
/usr/share/fonts
Y luego actualizo las tipografías para poder utilizarla directamente:
sudo fc-cache -f -v
Conclusión
Con esto cierro el texto sobre cómo escribir novelas y ensayos utilizando Neovim.
Por supuesto voy a seguir actualizando esta entrada según voy modificando mi forma de utilizar este procesador de texto.
El principal problema es el siguiente: al ser tan personalizable el programa, es muy sencillo pasar mucho tiempo buscando configurar hasta el último detalle. Y al pasar mucho tiempo en eso, pasamos poco tiempo usando el programa para escribir.
Sin embargo me gustaría leer tus comentarios y opiniones de este material. Si utilizás Neovim, también me gustaría conocer un poco sobre los plugins que utilizás.
La seguimos en el próximo apunte.