Options et keymaps
Le contenu de lua/config/ : les deux fichiers qui décrivent l’éditeur
indépendamment de tout plugin.
Les options
Quatre d’entre elles méritent un mot, parce que leur absence se remarque plus que leur présence.
signcolumn = 'yes' réserve la colonne en permanence. Sans ça, elle apparaît et
disparaît au rythme des blocs gitsigns et des diagnostics, et tout le buffer se
décale latéralement — un effet visuel agaçant dès qu’on édite un fichier suivi par
git.
scrolloff = 8 garde huit lignes de contexte sous et sur le curseur. C’est ce
qui évite le zz réflexe après chaque déplacement vertical.
inccommand = 'split' affiche l’effet d’un :%s pendant qu’on le tape, et ouvre
un aperçu de toutes les lignes touchées. C’est la meilleure protection contre une
substitution trop large.
smartindent est délibérément absent. treesitter fournit l’indentation, et les
deux se battent : smartindent applique ses propres règles par-dessus l’arbre
syntaxique et produit des décalages incohérents dans les langages à accolades.
Les touches fournies par Neovim 0.12
Cette liste a été vérifiée avec nvim --clean. Aucune n’est redéfinie par la
configuration, et c’est le principal moyen de garder keymaps.lua à soixante lignes.
| Touche | Action |
|---|---|
K | documentation du symbole |
grn | renommer |
gra | actions de code |
grr | références |
gri | implémentations |
grt | définition de type |
gO | symboles du document |
Ctrl + s | aide de signature (mode insertion) |
]d / [d | diagnostic suivant / précédent |
]D / [D | premier / dernier diagnostic du buffer |
Ctrl + w d | diagnostic sous le curseur, en flottant |
]q / [q | entrée quickfix suivante / précédente |
]b / [b | buffer suivant / précédent |
gcc / gc | commenter une ligne / un mouvement ou une sélection |
Le réflexe à prendre avant d’ajouter un mapping
Lancer nvim --clean, essayer la touche. La moitié des lignes qu’on s’apprête à
écrire existent déjà — et écraser un natif par inadvertance fait perdre un
comportement qu’on n’avait pas remarqué.
Les touches ajoutées
<leader> est espace, en global comme en local.
Navigation
| Touche | Mode | Action |
|---|---|---|
gd | n | aller à la définition — le seul mapping LSP absent du natif |
s | n, x, o | saut flash étiqueté, n’importe où à l’écran |
Ctrl + h Ctrl + j Ctrl + k Ctrl + l | n | changer de fenêtre, sans le préfixe Ctrl + w |
]f / [f | n, x, o | fonction suivante / précédente |
]c / [c | n, x, o | classe suivante / précédente |
]h / [h | n | bloc git suivant / précédent |
Objets texte
| Touche | Mode | Portée |
|---|---|---|
af / if | x, o | la fonction / son corps |
ac / ic | x, o | la classe / son corps |
aa / ia | x, o | l’argument, avec / sans sa virgule |
Ils suivent la convention native a / i, donc ils se combinent avec n’importe
quel opérateur : daf supprime la fonction, yic copie le corps de la classe,
cia change l’argument.
Édition
| Touche | Mode | Action |
|---|---|---|
<leader>w | n | enregistrer |
<leader>f | n, x | formater à la demande |
J / K | x | déplacer la sélection vers le bas / le haut, en réindentant |
< / > | x | réindenter en conservant la sélection |
<Esc> | n | couper le surlignage de recherche |
<Esc><Esc> | t | quitter le mode insertion du terminal |
<leader>th | n | basculer les inlay hints |
Recherche et fichiers
| Touche | Mode | Action |
|---|---|---|
<leader>p | n | rechercher un fichier |
<leader><space> | n | rechercher parmi les buffers ouverts |
<leader>/ | n | grep dans le projet |
<leader>sd | n | diagnostics de l’espace de travail |
<leader>ss | n | symboles du document |
<leader>hp | n | aperçu du bloc git |
Ctrl + f | n | explorateur, en barre latérale |
Ctrl + t | n | explorateur, en flottant |
Ce qui a été sacrifié
Tout mapping ajouté sur une touche existante en supprime une. Assumer la liste vaut mieux que la découvrir un jour où on en avait besoin.
| Touche | Comportement perdu | Remplacement |
|---|---|---|
s | substitute — supprimer un caractère et passer en insertion | cl |
Ctrl + f | page suivante | Ctrl + d deux fois |
Ctrl + t | dépiler la pile de tags | Ctrl + o |
]c / [c | déplacements de diff | do / dp restent |
J (visuel) | joindre les lignes sélectionnées | J en mode normal, avec un compteur |
Ctrl + h Ctrl + j Ctrl + k Ctrl + l | rien d’utile en normal | — |
J en mode visuel est le seul cas qui demande un peu d’attention : joindre trois
lignes se fait avec 3J depuis le mode normal, la sélection visuelle n’étant plus
disponible pour ça.
Les automatismes
Deux autocommandes, dans keymaps.lua :
TextYankPost surligne brièvement ce qui vient d’être copié. Ce n’est pas
cosmétique — c’est le seul retour visuel qui confirme l’étendue réelle d’un y, et
ça évite de découvrir au collage qu’on avait copié une ligne de trop.
TermOpen retire les numéros de ligne et la colonne de signes des buffers de
terminal, où ils n’apportent rien et cassent le copier-coller depuis l’extérieur.