Lecture

Pourquoi je suis revenu à Neovim

Je l'avais quitté parce que je passais plus de temps à configurer qu'à coder. J'y suis revenu, et cette fois j'ai arrêté d'y toucher.

  • neovim
  • terminal
  • workflow
Pourquoi je suis revenu à Neovim

J'ai tellement aimé Neovim. Et je l'ai quitté quand même.

La raison n'a rien d'original. À chaque session, l'envie de bidouiller ma config plutôt que d'écrire le code que j'étais censé écrire. Une nouvelle ligne dans keymaps.lua, un plugin de plus, deux heures de perdues. Je n'arrivais plus à rester concentré, alors je suis repassé sur un IDE plus classique, par pure discipline.

J'ai aussi essayé Zed entre temps. Un autre monde, perf incomparable, les vim bindings natifs sont parfaits. Mais ce n'est pas dispo sur Linux, et de toute façon mon workflow est dans le terminal. Ça ne collait pas.

Ce qui a changé

Ces derniers mois, je suis devenu un gros utilisateur du terminal. lazygit, des outils en ligne de commande pour tout, des sessions entières sans jamais quitter le shell. Le terminal a arrêté d'être un endroit où je passe pour devenir l'endroit où je vis. À partir de là, sortir dans une fenêtre séparée pour éditer du texte n'avait plus de sens.

Mais le vrai déclic n'est pas technique. J'ai simplement décidé que ma config était finie. Elle est gérée avec lazy.nvim, les versions sont gelées dans un lazy-lock.json, et je n'y touche plus. La discipline, ce n'était pas d'éviter Neovim. C'était d'arrêter de le traiter comme un projet.

À quoi ça ressemble

Rien d'extravagant. neo-tree en fenêtre flottante quand j'en ai besoin, lualine en bas, bufferline en haut, treesitter et le LSP qui font le gros du travail. Le thème suit l'heure: onedark quand le système passe en sombre, catppuccin latte en clair.

Telescope ouvert en live grep par-dessus ma config Neovim, la liste des résultats au centre et l'aperçu du fichier à droite

Telescope en live grep. Une fois qu'on navigue comme ça, cliquer dans une sidebar redevient lent.

Les configs qui comptent vraiment

Tout part de la barre d'espace comme leader. Le reste, c'est surtout de l'ergonomie pour ne jamais quitter la position des mains.

-- jk / kj pour sortir du mode insertion, partout
map("i", "jk", "<Esc>")
map("i", "kj", "<Esc>")

-- U pour refaire (le U par défaut ne sert à rien)
map("n", "U", "<C-r>")

-- c supprime dans le trou noir, pas dans le presse-papier
map({ "n", "v", "x" }, "c", '"_c')

-- H / L sautent au premier / dernier caractère non vide
-- (utilisables comme mouvements: dH, dL)
map({ "n", "v", "o" }, "H", "^")
map({ "n", "v", "o" }, "L", "g_")

Le menu which-key qui s'affiche après avoir pressé la touche leader, listant les raccourcis disponibles

which-key. Je presse espace, et il me rappelle tout ce qui part de là.

Le thème qui suit le système, c'est trois lignes et ça change la journée:

-- Neovim suit le réglage clair/sombre de GNOME
{
  "f-person/auto-dark-mode.nvim",
  opts = {
    set_dark_mode = function() vim.cmd.colorscheme("onedark") end,
    set_light_mode = function() vim.cmd.colorscheme("catppuccin-latte") end,
  },
}

Et le petit détail dont je suis bêtement fier, parce que je suis en AZERTY: la touche ù, juste sous la rangée de repos, devient le saut entre paires.

-- AZERTY: ù tombe sous les doigts, alors il remplace %
map({ "n", "v" }, "ù", "%")

L'éditeur disparaît

C'est ça que je cherchais sans le formuler. Le meilleur compliment qu'on puisse faire à un éditeur, c'est d'oublier qu'il est là. J'ouvre Neovim et j'ai juste envie de coder, pas de le configurer.

La config est finie. Je n'y retouche plus. Enfin, jusqu'à la prochaine fois.

Tous les articles
À lire ensuite

Continuer