743 - Cinco Plugins IMPRESCINDIBLES para EXPRIMIR Neovim en 2025

743 - Cinco Plugins IMPRESCINDIBLES para EXPRIMIR Neovim en 2025

5 plugins de Neovim IMPRESCINDIBLES en 2025 para máxima productividad en Linux. Descubre atone, flash, NeoGit y más para optimizar tu código.

1:25
-3:15

De vez en cuando me gusta revisar que se cuece en el mundo Neovim, para incorporar o reemplazar los plugins que estoy utilizando con Neovim, o incluso para actualizar la configuración de alguno de ellos. Y es que esto es un no parar. Todos los días aparece un nuevo plugin, o se actualizan o … Tienes que estar muy al tanto de lo que pasa para estar completamente al día, y yo creo que ni con esas… La cuestión, es que no está mal darse un paseo por dotfile y dar un vistazo a esos plugins y darle una probada a aquellos que te llamen la atención. Y en su caso incorporarlos a tu configuración de Neovim. Así, que en el episodio de hoy te voy a contar algunos de los plugins que he descubierto recientemente y que me han parecido interesantes, o alguno que he recuperado, que aunque lo tenía instalado y configurado, no lo estaba utilizando. Algunos los he incorporado a mi configuración, otros los tengo en la lista de espera para probarlos más adelante.

Cinco Plugins IMPRESCINDIBLES para EXPRIMIR Neovim en 2025

Repasando el pasado

Estaba buscando cuando fue el último episodio que publiqué sobre Neovim, y en particular, un recopilatorio similar a este y, me he encontrado que fue casi hace un año, en concreto en diciembre de 2024. Y lo que más me ha llamado la atención es que de los cinco complementos, 3 los utilizo de forma habitual, uno lo estoy utilizando de forma puntual, mientras que el último lo he dejado de utilizar casi por completo. Un balance realmente positivo.

En concreto se trata del episodio 649 titulado Cinco complementos para ser mas producitovs en Neovim.

Por otro lado, mientras preparaba este episodio, he estado optimizando estos complementos. Así que ha sido una aventura que ha valido totalmente la pena.

atone

Este primero es un interesante descubrimiento y que no podía imaginar siquiera que pudiera existir algo semejante. Se trata de un árbol de deshacer. Sinceramente una auténtica genialidad.

No te ha sucedido alguna vez que has estado editando un archivo y has hecho una serie de cambios, y luego te das cuenta de que necesitas volver a un estado anterior del archivo, pero no quieres deshacer todos los cambios que has hecho desde entonces? Pues bien, este plugin te permite ver un árbol de deshacer, donde puedes navegar por los diferentes estados del archivo y seleccionar el que deseas restaurar. Es como tener un historial visual de tus cambios, lo que facilita enormemente la navegación y recuperación de estados anteriores.

La operación es realmente sencilla. Simplemente tecleas el comando :Atone, y se abre una ventana lateral con el árbol de deshacer. Puedes navegar por los diferentes nodos del árbol utilizando las teclas de dirección, y seleccionar el estado que deseas restaurar presionando Enter. Además, el plugin también permite comparar diferentes estados del archivo, lo que es útil para ver qué cambios se han realizado entre dos puntos en el tiempo.

La instalación con Lazy es tan sencilla como esta,

return {
    "XXiaoA/atone.nvim",
    cmd = "Atone",
    opts = {},
}

flash

Este es un complemento que te permite navegar rápidamente por el texto en Neovim. Es una especie de mejora del comando f o t que ya existe en Neovim, pero con muchas más funcionalidades y opciones. Lo cierto es que pasamos mucho tiempo navegando por nuestro código, con lo que, cualquier herramienta o ayuda que nos facilite esa navegación siempre es bienvenida.

Lo primero y principal es que mejora los movimientos que se realizan con f, F, t, T, permitiendo saltar a cualquier parte del texto de manera más eficiente. Además, permite buscar y saltar a palabras completas, líneas, o incluso patrones específicos utilizando expresiones regulares.

Por otro lado tienes a opción de realizar búsquedas contextuales, lo que significa que puedes buscar y saltar a elementos específicos en función del contexto en el que te encuentres. Por ejemplo, puedes buscar y saltar a la siguiente función, variable, o clase en tu código. O completar operaciones utilizando la información del contexto actual.

Para algunas de estas operaciones se utiliza el Modo Operator-pending. Este modo ocurre justo después de que hayas escrito un operador

Para instalarlo con Lazy, basta con añadir esta configuración,

return {
  "folke/flash.nvim",
  event = "verylazy",
  ---@type flash.config
  opts = {},
  keys = {
    { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "flash" },
    { "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "flash treesitter" },
    { "r", mode = "o", function() require("flash").remote() end, desc = "remote flash" },
    { "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "treesitter search" },
    { "<c-s>", mode = { "c" }, function() require("flash").toggle() end, desc = "toggle flash search" },
  },
}

tiny-inline-diagnostic

Este viene a resolver uno de los problemas que tenía con los diagnósticos en Neovim, me refiero con diagnósticos a los mensajes que se muestran cuando hay algún error o sugerencia en el código o que estamos escribiendo. Hasta incorporar este plugin, los mensajes aparecían en línea, pero cuando eran largos, muy largos, estos se terminaban por cortar, y solo veía una parte de ellos. Sobre todo los de Rust, que es increíblemente verboso a la hora de explicar el error o la sugerencia. La cuestión es que tenía que recurrir a otro plugin para poder ver el texto completo. Ahora gracias a este complemento se ha solucionado el problema, puedo ver fácilmente los mensajes completos en vivo y en directo, sin necesidad de abrir otro complemento, ni cosas parecidas.

En este caso, la configuración que estoy utilizando es la siguiente,

return {
    "rachartier/tiny-inline-diagnostic.nvim",
    event = "VeryLazy",
    priority = 1000,
    opts = {
        add_messages = {
            display_count = true,
        },
        multilines = {
            enabled = true,
            always_show = true,
        },
        show_source = {
            enabled = true,
        }
    },
}

NeoGit

Esto es de los complementos que tenía instalados pero que no estaba utilizando, y la razón es que no lo tengo interiorizado. Así que ahora, para acostumbrame al uso, lo que he hecho es añadir un atajo de teclado, básicamente un <C-g>, que me ayuda con lo git, además lo he puesto en modo de ventana flotante para que sea mas atractivo, dentro de lo que cabe claro. Básicamente es una interfaz de usuario para git dentro de Neovim, que facilita la realización de operaciones comunes de git sin tener que salir del editor. Permite ver el estado del repositorio, hacer commits, gestionar ramas, resolver conflictos de fusión, entre otras cosas.

La configuración que estoy utilizando es la siguiente,

return {
    "NeogitOrg/neogit",
    dependencies = {
        "nvim-lua/plenary.nvim",     -- required
        "sindrets/diffview.nvim",    -- optional - Diff integration
        "nvim-telescope/telescope.nvim", -- optional
    },
    opts = {
        kind = "floating",
    },
    config = true
}

yazi

Y por último, el último de los complementos que me faltaba por resucitar, no es ni mas ni menos que un complemento que me permite utilizar Yazi, dentro de Neovim. Si bien, utilizo Neotree como mi selector de archivos en Neovim, lo cierto es que estoy tan acostumbrado al uso de Yazi, que poder tenerlo integrado en Neovim es una ventaja.

Uno de los usos que hago mas frecuente es el de renombrar los episodios de los podcast. En mis notas de los episodios tengo varias ideas para siguientes episodios. Esas ideas van con un número de episodio y con un posible título. Lo mas normal, es que termine moviendo esos episodios para mas adelante y por supuesto cambiarles el título. Pues bien, con Yazi puedo hacerlo de una manera rápida y sencilla.

La configuración que estoy utilizando es la siguiente,

return {
    "mikavilpas/yazi.nvim",
    version = "*",
    event = "VeryLazy",
    dependencies = {
        { "nvim-lua/plenary.nvim", lazy = true },
    },
    opts = {
        open_for_directories = false,
        keymaps = {
            show_help = "<f1>",
        },
    },
}

Más información,

Deja una respuesta

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