Dans Vim, existe-t-il un moyen de coller du texte dans la ligne de recherche?

105

Je veux le rechercher $maximumTotalAllowedAfterFinishet le remplacer par $minimumTotalAllowedAfterFinish. Au lieu de taper le texte long:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Existe-t-il un moyen de COPIER ces longs noms de variables dans la ligne de recherche, puisque, sur la ligne de commande, je ne peux pas taper " p" pour coller?

Edward Tanguay
la source
2
Je suppose que vous devez également échapper au premier $car ce caractère signifie la fin de la ligne.
Luc M
1
@LucM L'OP pourrait également utiliser \Vn'importe où dans le modèle de recherche pour désactiver les caractères "magiques".
dash-tom-bang

Réponses:

128

Vous pouvez insérer le contenu d'un registre numéroté ou nommé en tapant CTRLR {0-9a-z"%#:-=.}. En tapant, CTRL-R CTRL-Wvous pouvez coller le mot actuel sous le curseur. Voir:

:he cmdline-editing

pour plus d'informations.

WMR
la source
8
merci pour la réponse, la plus courante pour moi est: CTRL+ R +(comme pour le contenu du presse-papiers)
Peter Butkovic
4
Le 0registre contient la dernière chaîne copiée.
Evgeni Sergeev
52

Copiez-le normalement, puis CtrlR"collez-le. Il existe de nombreux autres CtrlRraccourcis (par exemple, une calculatrice, le nom du fichier actuel, le contenu du presse-papiers). Tapez :help c_<C-R>pour voir la liste complète.

Ned
la source
16

Copier:
1) v(ou mettre en évidence avec la souris, en mode visuel)
2) y(yank)

Coller:
1) /(mode de recherche)
2) Ctrl + R + 0(coller à partir du registre copié)

Jason
la source
1
Je cherchais cette réponse lorsque j'ai recherché cette question dans google, je me demande pourquoi cela a des votes négatifs.
santiago arizti
15

Tapez q:pour entrer dans le mode d'édition de l'historique dans un nouveau tampon. Modifiez ensuite la dernière ligne du tampon et appuyez sur Enterpour l'exécuter.

Johannes Hoff
la source
3
C'est donc à cela que servait ce tampon! Merci (je suis toujours
tombé
3
q/est également utile pour accéder à l'historique des recherches et coller de nouvelles recherches.
79E09796
3

Ou créez la commande dans un tampon vim, par exemple tapez-le dans le tampon:

s/foo/bar/gci

Et copiez-le dans un registre nommé, avec "ayy(si le curseur est sur cette ligne!).

Vous pouvez maintenant exécuter le contenu du aregistre " " à partir de la ligne de commande Ex de Vim avec:

:[OPTIONAL_RANGE]@a

Je l'utilise tout le temps.

Zsolt Botykai
la source
votre "ayy" est soit cité (et donc incorrect) soit il ne l'est pas (et donc il y a un "erroné" à la fin)
tzot
2

En règle générale, vous feriez cela avec la souris en sélectionnant (peut CtrlIns- être ou CtrlCaprès la sélection), puis, dans la ligne de commande / recherche, en cliquant avec le bouton central (ou ShiftInsou CtrlV).

Une autre façon, est d'écrire votre ligne de commande / recherche dans le tampon de texte avec toutes les modifications disponibles dans les tampons de texte, en commençant par :et tout, puis, sur la ligne, faites:

"add@a

qui stockera toute la ligne de commande dans le tampon a, puis l'exécutera. Cependant, il ne sera pas stocké dans l'historique des commandes.

Essayez de créer la ligne suivante dans le tampon de texte comme exemple pour les touches ci-dessus:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Enfin, vous pouvez entrer q:pour entrer l'édition de l'historique dans un tampon de texte.

tzot
la source
1

Vous pouvez placer le curseur sur le mot que vous souhaitez ajouter à votre motif, puis appuyer sur /ou :pour accéder au mode de recherche ou de commande, puis appuyer sur CtrlRCtrlWpour copier le mot. La source

régresseur boosté
la source