Je ne connais qu'une seule instance utilisant des registres via CtrlR*laquelle je colle du texte à partir d'un presse-papiers.
Quelles sont les autres utilisations des registres? Comment les utiliser?
Tout ce que vous savez sur les registres VI (concentrons-nous sur vi 7.2) - partagez avec nous.
Réponses:
Les registres dans Vim vous permettent d'exécuter des actions ou des commandes sur le texte qu'ils contiennent. Pour accéder à un registre, vous tapez
"a
avant une commande, oùa
est le nom d'un registre. Si vous souhaitez copier la ligne actuelle dans le registrek
, vous pouvez taperOu vous pouvez ajouter à un registre en utilisant une majuscule
Vous pouvez ensuite parcourir le document et le coller ailleurs en utilisant
Pour coller à partir du presse-papiers du système sous Linux
Pour coller depuis le presse-papiers du système sous Windows (ou depuis le presse-papiers "surbrillance de la souris" sous Linux)
Pour accéder à tous les registres actuellement définis, tapez
la source
"+
est un registre spécial qui fait référence au presse-papiers du système."*
; donc la commande de copier jusqu'à la fin du fichier devient"*yG
.*
trouve le presse-papiers "surbrillance de la souris" et+
le presse-papiers Ctrl-XCV.+
)?J'étais content quand j'ai découvert le
0
registre. Si vous tirez du texte sans l'affecter à un registre particulier, il sera affecté au0
registre et enregistré dans le"
registre par défaut . La différence entre les registres0
et"
est qu'ils0
ne sont remplis qu'avec du texte copié, tandis que le registre par défaut est également rempli avec du texte supprimé à l'aide des commandesd
/D
/x
/X
/c
/C
/s
/S
.Je trouve cela utile lorsque je veux copier du texte, supprimer quelque chose et le remplacer par le texte copié. Les étapes suivantes illustrent un exemple:
y[motion]
- ce texte est enregistré"
et0
enregistréd[motion]
- ce texte est enregistré dans le"
registre"0p
où
"
est la commande pour utiliser un registre pour la commande suivante.À la dernière étape, si vous deviez coller à partir du registre par défaut (avec
p
), il utiliserait le texte que vous veniez de supprimer (probablement pas ce que vous vouliez).Notez que
p
ouP
colle du registre par défaut. L'équivalent à long terme serait""p
(ou""P
) et"0
contient le dernier coup sec,"1
contient la dernière suppression ou modification.Pour plus d'informations, voir
:help registers
.la source
p
ou desP
pâtes du registre par défaut. L'équivalent à la main serait""p
(ou""P
)."
est la commande pour utiliser un registre pour la commande suivante. Donc ,""p
utiliserait le"
registre pour la commande coller et"0p
utiliserait le0
registre.0p
signifierait aller au premier caractère de la ligne courante et coller à partir du contenu du registre par défaut ("
)."p
serait une commande incomplète car vous devez spécifier pour quelle commande utiliser le registrep
.Une de mes parties préférées sur les registres est de les utiliser comme macros!
Supposons que vous traitez un fichier de valeurs délimité par des tabulations en tant que tel:
Vous décidez maintenant que vous devez ajouter un signe de pourcentage à la fin du champ% Dev (à partir de la 2e ligne). Nous allons créer une macro simple dans le
m
registre (sélectionné arbitrairement) comme suit:Appuyez sur::
qm
pour démarrer l'enregistrement de la macro sous lem
registre.EE
: Allez à la fin de la 3e colonne.a
: Mode d'insertion à ajouter à la fin de cette colonne.%
: Saisissez le signe de pourcentage que nous voulons ajouter.<ESC>
: Revenez en mode commande.j0
: Aller au début de la ligne suivante.q
: Arrêter l'enregistrement de la macroNous pouvons maintenant simplement taper
@m
pour exécuter cette macro sur la ligne actuelle. De plus, nous pouvons taper@@
pour répéter, ou100@m
pour le faire 100 fois! La vie semble plutôt belle.À ce stade, vous devriez dire: " MAIS ATTENDRE, QU'EST-CE QUE LE HECK DOIT FAIRE AVEC LES REGISTRES ?"
Excellent point. Examinons ce qu'il y a dans le contenu du
m
registre en tapant"mp
. Nous obtenons ensuite les éléments suivants:Au début, cela ressemble à vous avez accidentellement ouvert un fichier binaire dans le bloc-notes, mais au deuxième coup d'œil, c'est la séquence exacte de caractères dans notre macro!
Vous êtes une personne curieuse, alors faisons quelque chose d'intéressant et modifions cette ligne de texte pour insérer un
!
ancien au lieu d'être ennuyeux%
.Ensuite, tirons ceci dans le
n
registre en tapantB"nyE
. Ensuite, juste pour les coups de pied, exécutons lan
macro sur une ligne de nos données en utilisant@n
....OMG, IL A AJOUTÉ UN
!
Essentiellement, exécuter une macro revient à appuyer sur la séquence exacte de touches dans le registre de cette macro. Si ce n'est pas un truc de registre sympa, je vais manger mon chapeau.
la source
+
au lieu dej0
pour passer au premier caractère non vide sur la ligne suivante.Autres registres utiles:
"*
ou"+
- le contenu du presse-papiers du système"/
- dernière commande de recherche":
- dernière commande.Remarque avec les macros vim, vous pouvez les modifier, car elles ne sont qu'une liste des frappes utilisées lors de l'enregistrement de la macro. Vous pouvez donc écrire dans un fichier texte la macro (en utilisant
"ap
pour écrire la macro a ) et les modifier, et les charger dans un registre avec"ay$
. Belle façon de stocker des macros utiles.la source
vim --version
--clipboard
signifie que vous ne l'avez pas,+clipboard
signifie que vous le faites."*
et"+
sont encore plus cool:"+
colle le dernier texte copié avecctrl+c
(tampon de copie), ou quel raccourci que vous utilisez (ouright-click>copy
)."*
colle le dernier texte surligné à la souris (tampon de sélection). Donc, si vous copiez quelque chose avecctrl+c
, puis mettez en surbrillance autre chose avec la souris, vous pouvez choisir lequel coller. Cela ne fonctionne pas sous Windows, où ces deux registres sont synonymes."*
et"+
depuis des années! Je pensais que seul Gvim avait accès aux presse-papiers du système, mais apparemment, Vim le fait aussi!-xterm_clipboard
survim --version
. Un package simple à installer? (debian / apt-get). Merci.Le registre du trou noir
_
est celui/dev/null
des registres.Je l'utilise dans mon vimrc pour permettre la suppression de caractères uniques sans mettre à jour le registre par défaut:
et pour coller en mode visuel sans mettre à jour le registre par défaut:
la source
x
devient moins pratique pour transposer les caractères.x
mappage, vous ne pouvez plus faire laxp
"commande" pour commuter le courant avec le caractère suivant. Très utile pour les corrections de faute de frappe. Nous devons égalementXp
commuter le courant avec le caractère précédent.Si jamais vous souhaitez coller le contenu du registre dans une commande ex-mode, appuyez sur
<C-r><registerletter>
.Pourquoi utiliseriez-vous cela? Je voulais faire une recherche et remplacer une chaîne assez longue, alors je l'ai sélectionnée en mode visuel, j'ai commencé à taper l'expression de recherche / remplacement
:%s/[PASTE YANKED PHRASE]//g
et j'ai continué ma journée.Si vous ne souhaitez coller qu'un seul mot en mode ex, assurez-vous que le curseur est dessus avant de passer en mode ex, puis appuyez
<C-r><C-w>
en mode ex pour coller le mot.la source
:
ligne de commande est la meilleure chose que j'ai apprise aujourd'hui/[write out your regex]<cr>
, puis remplacer justes/<C-R>//replacement/
. De cette façon, vous bénéficiez de commentaires en direct sur votre expression régulière avant d'exécuter le remplacement.Je pense que le registre du gourou secret est l'expression = registre. Il peut être utilisé pour des mappages créatifs.
Vous pouvez l'utiliser en conjonction avec votre système comme ci-dessus ou obtenir des réponses de fonctions VimL personnalisées, etc.
ou juste des trucs ad hoc comme
la source
Une astuce sympa est d'utiliser
"1p
coller la dernière suppression / modification (, puis.
à répéter pour coller les suppressions suivantes. En d'autres termes,"1p...
est fondamentalement équivalent à"1p"2p"3p"4p
.Vous pouvez l'utiliser pour inverser l'ordre d'une poignée de lignes:
dddddddddd"1p....
la source
Depuis la page d'aide de vim:
la source
la source
nmap <F2> @q
J'utilise le registre q, car pour enregistrer une macro pour F2 à lire, je viens de frapperqq
. enregistrement et relecture rapides des macros.J'utilise le registre par défaut pour chercher du texte dans ma fenêtre vim sans avoir à toucher la souris.
:!grep "<CTRL-R>0"<CR>
la source
Utilisez des registres dans les commandes avec
@
. Par exemple:Définissez-les dans la commande:
Maintenant
"ap
va collerabc
.la source
Une grande source de confusion est le registre par défaut
"
. Il est important de savoir comment cela fonctionne. Il est préférable que le registre par défaut soit évité la plupart du temps. L'explication de la documentation Vim:Ainsi, le registre par défaut est en fait un pointeur vers le dernier registre utilisé. Lorsque vous supprimez ou tirez quelque chose, ce registre va pointer vers d'autres registres. Vous pouvez le tester en vérifiant les registres. Il existe toujours un autre registre qui est exactement le même que le registre par défaut: le registre yank (
"0
), le premier registre de suppression ("1
), le petit registre de suppression ("-
) ou tout autre registre qui a été utilisé pour supprimer ou yank.La seule exception est le registre des trous noirs. Vim doc dit:
En général , vous êtes beaucoup mieux en utilisant directement:
"0
,"-
et"1-"9
registres par défaut ou les registres nommés.la source
Un registre négligé est le '.' registre de points qui contient le dernier texte inséré, quelle que soit la façon dont il a été inséré, par exemple ct] (changer jusqu'à]). Ensuite, vous réalisez que vous devez l'insérer ailleurs mais que vous ne pouvez pas utiliser la méthode de répétition de points.
la source
Mon registre préféré est le
':'
registre. L'exécution@:
en mode normal me permet de répéter la commande ex précédemment exécutée.la source
Mon ami Brian a écrit un article complet à ce sujet. Je pense que c'est une excellente introduction à l'utilisation des sujets. https://www.brianstorti.com/vim-registers/
la source