vim: utilisez la chaîne de recherche dans la commande replace


16

J'utilise souvent la /commande de recherche vim pour vérifier mes expressions régulières (juste pour voir à quoi cela correspond). Après cela, j'utilise généralement la :%scommande replace, où j'utilise cette expression rationnelle de recherche comme chaîne à remplacer, par exemple, je cherche d'abord une telle chaîne:

/TP-\(\d\{5\}\)-DD-\d\{3\}

Cela correspond exactement à ce que je veux, donc je fais mon remplacement:

:%s/TP-\(\d\{5\}\)-DD-\d\{3\}/\1/g

Mais je dois réécrire toute l'expression rationnelle ici. Habituellement, cette expression régulière est beaucoup plus longue, c'est pourquoi je recherche une solution:

Existe-t-il un raccourci ou un script vim pour coller ce modèle de recherche directement dans la commande replace?

J'utilise vim dans le terminal (pas de gvim).

Réponses:


20

En général, une expression régulière vide signifie utiliser l'expression régulière entrée précédemment, :%s//\1/gvous devez donc faire ce que vous voulez.


Woah, c'est aussi simple que ça! Exactement ce dont j'avais besoin, merci.
— kars7e

10
De plus, si vous souhaitez vérifier ou modifier le dernier modèle utilisé, vous pouvez utiliser Control-r puis /insérer le contenu du registre de modèle de recherche ( /) directement dans une ligne de commande partiellement tapée (par exemple juste après :%s/).
— Chris Johnsen

c'est aussi un indice très utile. Merci @Chris! +1
— kars7e

Que se passe-t-il si je veux suivre "\ 1" avec un nombre comme disons 23? Comment puis-je éviter qu'il soit interprété comme "\ 123"?
— Champ

@Champ Comme les références arrières remontent uniquement \9, il n'y a aucune ambiguïté.
— Kusalananda

4

Un autre bon moyen de voir les recherches de regexes passées ainsi que les commandes Ex et d'y apporter des modifications est de modifier ces commandes en mode normal. À partir de ce mode, vous aurez tous vos pouvoirs vim, y compris le copier-coller.

  • Recherche: plutôt que ?ou /pour rechercher, essayez q/ouq?
  • pour les commandes Ex, plutôt que d' :essayerq:
  • pour quitter ce mode, utilisez CtrlC

Pour en savoir plus, voir :help q:.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.