Apuntes mientras aprendo sobre software y computadoras.

Computación

Cómo escribir novelas y ensayos utilizando Neovim (casi sin extensiones)

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.

Si estás escribiendo un ensayo en Neovim utilizando Markdown y necesitás crear notas al pie o una bibliografía, te recomiendo este otro apunte.

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

Tenemos soporte para el lenguaje Fountain utilizando este plugin

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.

Recursos:

– Guía oficial de Neovim

Leave a Reply