36 lines
2.2 KiB
Markdown
36 lines
2.2 KiB
Markdown
+++
|
|
title = "Neovim : les registres"
|
|
slug = "neovim-les-registres"
|
|
date = 2022-09-21
|
|
[taxonomies]
|
|
tags = ["Neovim", "Outil"]
|
|
+++
|
|
|
|
Les registres sont des espaces mémoires internes à Neovim (mais aussi Vim évidemment) où l'on peut copier du texte. Le mécanisme est le même que le presse-papier de l'OS, mis à part que l'on n'est pas limité à une seule copie.
|
|
|
|
## Comment cela fonctionne ?
|
|
|
|
Pour accéder à un registre, il faut utiliser le caractère `".`. Par exemple, pour accéder au registre r, il faut taper la séquence `"r`.
|
|
Maintenant, il ne reste plus qu'à appliquer une opération à ce registre. Si l'on veut copier un texte préalablement sélectionné dans notre registre r : `"ry`. Et pour coller ce dernier : `"rp`.
|
|
La commande `:reg` permet de voir le contenu de tous les registres.
|
|
|
|
## Le registre par défaut
|
|
|
|
Lorsque aucun registre n'est spécifié, sur les commandes de suppression (oui, quand on supprime du texte, il est également copié) ou de copie, le texte est placé dans le registre `""`.
|
|
En fait, une simple copie y est un raccourci de `""y`. Idem pour p.
|
|
|
|
## Les registres numérotés
|
|
|
|
Nous sommes tous tombés dans le piège de copier un texte, d'en supprimer un autre, et en voulant copier le premier, il a disparu. En fait, il n'a disparu que du registre par défaut, mais il est toujours présent dans le registre `"0`.
|
|
`"0` aura toujours le dernier texte copié.
|
|
`"1` à `"9` contiennent les neuf derniers textes supprimés (via la commande d), `"1` état le plus récent.
|
|
|
|
Une autre possibilité pour contrer ce problème est d'utiliser le *Black hole register `"_`*. La séquence `"_d` supprime le texte sans le copier dans un registre.
|
|
|
|
## Les registres en lecture seule
|
|
|
|
`":` est la dernière commande exécutée. À mon sens, ce registre est peu utile.
|
|
`"%` est le chemin du fichier courant, mais relatif au répertoire dans lequel Neovim a été ouvert. Pour avoir le chemin complet du fichier, j'utilise la commande suivante que j'ai mappée : `:lua vim.fn.setreg("+",vim.fn.system("pwd"):gsub("\n$","").."/"..vim.fn.getreg("%")).g('%'))`
|
|
`"#` est le dernier fichier éditer. Avec les plugins permettant une navigation fluide, ce registre n'a que peu d'intérêt
|
|
`".` est le dernier texte inséré (via le mode insertion).
|