Comment puis-je utiliser vim registres?
Je sais seulement d'une instance à l'aide de registres à l'aide de CtrlR* lequel j'ai coller du texte depuis le presse-papiers.
Quelles sont les autres utilisations des registres? Comment les utiliser?
Tout ce que vous savez à propos de VI registres (concentrons-nous sur vi 7.2) -- partager avec nous.
- J'ai donné une réponse longue there sur l'utilisation de registres
Vous devez vous connecter pour publier un commentaire.
Registres dans Vim vous permettent d'exécuter les actions ou les commandes de texte stocké à l'intérieur d'eux. 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 courante dans le registrek
, vous pouvez taperOu vous pouvez ajouter d'un registre à l'aide d'une lettre majuscule
Vous pouvez ensuite parcourir le document et de le coller ailleurs à l'aide de
Pour coller à partir du presse-papiers du système sur Linux
Pour coller à partir du presse-papiers du système sur Windows (ou de "la souris pour mettre en surbrillance" presse-papiers sur Linux)
Pour accéder à tous actuellement défini registres de type
"+
est un registre spécial qui se réfère à la presse-papiers du système."*
; de sorte que la commande pour copier jusqu'à la fin du fichier devient"*yG
.*
est la "souris pour mettre en surbrillance" presse-papiers, et+
est le Ctrl-XCV presse-papiers.+
)?+
registre (essentiellement) toujours être vide (dans le sens que vous ne pouvez pas copier ou arrière à partir d'une autre application//fenêtre de l'éditeur). Toutefois, il est possible de mettre des choses dans la+
tampon. Même avec la*
tampon. Mais ils sont moins utiles sans le fenêtrage de l'environnement."
de commande, mais vous pouvez l'exécuterlet @+ .= @"
pour ajouter le contenu du registre sans nom dans le presse-papiers vous inscrire. Si vous avez cette carte à, disons,<Leader>+
, alors vous pouvez le faire, par exemple,yy<Leader>+
pour ajouter la ligne courante dans le presse-papiers vous inscrire.J'ai été heureux quand j'ai découvert le
0
registre. Si vous tirez-vous de texte sans l'affecter à un registre particulier, il sera affecté à la0
registre, ainsi que d'être enregistré par défaut dans le"
registre. La différence entre les0
et"
registres est que0
n'est rempli avec arrachement du texte, tandis que le défaut de registre est aussi peuplée de texte supprimés à l'aide ded
/D
/x
/X
/c
/C
/s
/S
commandes.Je trouve cela utile quand je veux copier du texte, de supprimer quelque chose et de le remplacer par le texte copié. Les étapes suivantes illustrent un exemple:
y[motion]
- ce texte est enregistré dans"
et0
registresd[motion]
- ce texte est enregistré dans"
registre"0p
où
"
est la commande à utiliser un registre pour la prochaine commande.Sur la dernière étape, si vous étiez à coller à partir de la valeur par défaut de registre (avec
p
), elle serait d'utiliser le texte que vous aviez supprimé (probablement pas ce que vous avez prévu).Noter que
p
ouP
pâtes à partir de la valeur par défaut de vous inscrire. La main d'un équivalent serait""p
(ou""P
) et"0
détient le dernier yank,"1
retient le dernier de supprimer ou de modifier.Pour plus d'info voir
:aider les registres
.p
ouP
pâtes à partir de la valeur par défaut de vous inscrire. La main d'un équivalent serait""p
(ou""P
)."
et0
registre différent de"0
? Pouvez-vous coller avec0p
et"0p
et"p
?"
est la commande à utiliser un registre pour la prochaine commande. Donc""p
serait d'utiliser la"
inscrire pour la commande coller et"0p
serait d'utiliser la0
registre.0p
signifierait aller au premier caractère de la ligne courante et coller le contenu du registre par défaut ("
)."p
serait une commande incomplète depuis que vous avez besoin de spécifier quelle commande à utiliser le registrep
pour.Une de mes parties préférées de registres est en les utilisant comme des macros!
Disons que vous avez affaire à un délimité par des tabulations fichier de valeur en tant que telle:
Maintenant, vous décidez que vous avez besoin pour ajouter un signe de pourcentage à la fin de l' %Dev champ (à partir de la 2ème ligne). Nous allons faire une macro simple dans l' (choisie arbitrairement)
m
registre comme suit:Presse:
qm
: Pour démarrer l'enregistrement de la macro sousm
registre.EE
: Aller à la fin de la 3e colonne.a
: Mode d'insertion à ajouter à la fin de cette colonne.%
: Tapez le signe " % " nous voulons ajouter.<ESC>
: Revenir en mode commande.j0
: Aller au début de la ligne suivante.q
: Arrêter l'enregistrement de la macroNous pouvons maintenant tout type de
@m
pour exécuter cette macro sur la ligne actuelle. En outre, nous pouvons type@@
de répéter ou de100@m
pour ce faire 100 fois! La vie est assez bonne.À ce stade, vous devriez être en disant: "MAIS ATTENDEZ, CE que LE DIABLE est-CE que AVEZ À FAIRE AVEC les REGISTRES?"
Excellent point. Nous allons étudier ce qui est dans le contenu de la
m
registre en tapant"mp
. Nous obtenons alors le suivant:Au premier abord cela ressemble à vous ouvrir accidentellement un fichier binaire dans le bloc-notes, mais sur le deuxième coup d'œil, c'est la séquence exacte des caractères dans notre macro!
Vous êtes une personne curieuse, donc, nous allons faire quelque chose d'intéressant et de modifier cette ligne de texte à insérer un
!
plutôt ennuyeux%
.Puis nous allons tirer dans la
n
registre en tapantB"nyE
. Alors, juste pour le plaisir, nous allons exécuter len
macro sur une ligne de nos données à l'aide de@n
....OMG, IL A AJOUTÉ UN
!
Essentiellement, l'exécution d'une macro est comme appuyer sur la séquence exacte des touches dans cette macro s'inscrire. Si ce n'est pas un cool registre astuce, je mange mon chapeau.
D'autres registres:
"*
ou"+
- le contenu du presse-papiers du système"/
- dernière commande de recherche":
- dernière commande.Note avec vim macros, vous pouvez les modifier, car ils sont tout simplement une liste de combinaisons de touches utilisées lors de l'enregistrement de la macro. De sorte que vous pouvez écrire dans un fichier texte de la macro (à l'aide de
"ap
à écrire macro un) et les modifier, et de les charger dans un registre avec"ay$
. Belle façon de stocker les macros utiles.vim --version
--clipboard
signifie que vous ne l'avez pas,+clipboard
signifie que vous ne."*
et"+
sont encore plus cool:"+
colle le texte copié avecctrl+c
(tampon de copie), ou ce que jamais raccourci que vous utilisez (ouright-click>copy
)."*
colle le dernier texte mis en surbrillance avec la souris (sélection de la mémoire tampon). Donc, si vous copiez quelque chose avecctrl+c
, et ensuite mettre en évidence quelque chose d'autre avec la souris, vous pouvez choisir coller. Cela ne fonctionne pas dans Windows, où ces deux registres sont synonymes."*
et"+
depuis des années! Je ne pensais qu'à gvim eu accès au système de blocs-notes, mais apparemment ordinaire vim ne trop!-xterm_clipboard
survim --version
. Tout package simple à installer? (debian/apt-get). Merci.vim-full
paquet ou peut-être même ungvim-full
disponible? Essayez d'installer un gvim variante, si existant. Il doit également fournir une version console.La trou noir s'inscrire
_
est le/dev/null
de registres.Je l'utilise dans mon vimrc pour permettre la suppression de caractères simples sans mise à jour du registre par défaut:
et le coller dans le mode visuel sans mise à jour du registre par défaut:
x
est moins pratique pour transposer caractères.x
cartographie, vous ne pouvez plus faire lexp
"commande" pour passer le courant avec le caractère suivant. Très utile pour les corrections de typo. Nous avons égalementXp
pour passer le courant avec le caractère précédent.Si jamais vous voulez coller le contenu du registre d'un ex-mode de commande, frappé
<C-r><registerletter>
.Pourquoi voudriez-vous utiliser? Je voulais faire une recherche et remplacer pour un assez long de la chaîne, j'ai donc sélectionné dans le mode visuel, commencé à taper de la recherche/remplacer l'expression
:%s/[PASTE YANKED PHRASE]//g
et est allé sur ma journée.Si vous ne voulez coller un seul mot en mode ex, pouvez-assurez-vous que le curseur est sur elle avant d'entrer dans le mode ex, puis appuyez
<C-r><C-w>
quand en mode ex de coller le mot.:
ligne de commande est la meilleure chose que j'ai appris aujourd'hui/[write out your regex]<cr>
puis de remplacer justes/<C-R>//replacement/
. De cette façon, vous obtenez l'avantage de vivre des commentaires sur votre regex avant d'exécuter le remplacement.Je pense que le secret gourou registre est l'expression = registre. Il peut être utilisé pour création de mappages.
Vous pouvez l'utiliser en conjonction avec votre système comme ci-dessus ou obtenir des réponses de la coutume VimL fonctions etc.
ou tout simplement ad hoc des trucs comme
Un truc génial est d'utiliser
"1p
pour coller la dernière suppression/modification (et ensuite utiliser.
à plusieurs reprises pour coller le subséquentes supprime. En d'autres termes,"1p...
est essentiellement équivalent à"1p"2p"3p"4p
.Vous pouvez l'utiliser à l'inverse de l'ordre d'une poignée de lignes:
dddddddddd"1p....
De vim page d'aide:
nmap <F2> @q
j'utilise le registre q, car alors d'enregistrer une macro F2 à la lecture, je viens de toucherqq
. speedy macro enregistrer et de relecture.- Je utiliser la valeur par défaut de registre de grep pour le texte dans mon vim fenêtre sans avoir à toucher à la souris.
:!grep "<CTRL-R>0"<CR>
Utiliser les registres de commandes avec
@
. E. g.:Les mettre dans la commande:
Maintenant
"ap
va collerabc
.Une grande source de confusion est la valeur par défaut registre
"
. Il est important de connaître la façon dont il fonctionne. Il est beaucoup mieux si le défaut de registre est évitée, la plupart du temps. L'explication de la documentation de Vim:De sorte que le défaut de registre est en fait un pointeur vers le dernier registre. Lorsque vous supprimez, ou de tirer quelque chose de ce registre va point à d'autres registres. Vous pouvez tester cela en cochant les registres. Il y a toujours un autre registre, c'est exactement le même que le défaut de registre: la copie du registre (
"0
) , le supprimer d'abord vous inscrire("1
) , les petites supprimer registre("-
) ou tout autre registre qui a été utilisé pour supprimer ou copier.La seule exception est le trou noir s'inscrire. Vim doc a dit:
Habituellement, vous êtes beaucoup mieux en utilisant directement:
"0
,"-
et"1-"9
par défaut des registres ou nommé registres.Un négligé registre est le". " dot registre qui contient le dernier texte inséré n'importe comment il a été inséré par exemple ct] (changement jusqu' ]). Puis vous réalisez que vous devez l'insérer ailleurs, mais ne pouvez pas utiliser la dot méthode de répétition.
Mes favoris s'inscrire est le
':'
registre. L'exécution de@:
en mode Normal me permet de répéter la déjà couru commande ex.Mon ami Brian a écrit un article complet sur cette. Je pense que c'est une excellente introduction à la façon d'utiliser des sujets. https://www.brianstorti.com/vim-registers/