Comment trouver la 3ème occurrence d'un motif sur une ligne
Aujourd'hui, j'ai dû aligner une table à seulement le premier de plusieurs espaces sur une ligne.
p.e.
<ScrollWheelDown> move window three lines down
<S-ScrollWheelDown> move window one page down
<ScrollWheelUp> move window three lines up
<S-ScrollWheelUp> move window one page up
- Je utiliser de Tableaux plugin pour aligner les tables, mais je ne pouvais pas trouver un moyen de trouver seule la première occurrence de plusieurs espaces et aligner seulement.
Je ne sais pas qu'elle soit dans VIM:
Quelles seront les regex si je veux seulement trouver la 3ème occurrence d'un motif sur une ligne?
Est la regex de même que l'utilisation de Tableaux?
source d'informationauteur Reman
Vous devez vous connecter pour publier un commentaire.
La regex serait:
Donc, si, par exemple, vous voulez changer la 3ème 'foo' à 'bar' sur la ligne suivante:
exécuter:
pour obtenir:
Je ne sais pas si cela correspond à vos besoins, mais vous pouvez effectuer une recherche de cette façon :
pattern
RetourIl placer le curseur sur la 3ème occurrence du côté correspondant de la ligne (en mettant en évidence tous les événements)
Vous pouvez également macro :
q+3nq
puis @ pour passer à la ligne suivante 3ème occurence
Pour les utilisateurs de Google (comme moi) qui recherche juste pour: "regex n-ième occurrence". Ce sera le retour de position du dernier caractère de la troisième 'foo' (vous avez besoin de changer
{3}
à votren
etfoo
de votre texte):Ce:
(?:.*?foo)
recherches pour quoi que ce soit suivie par "foo", puis il est répété 3 fois(?:.*?foo){3}
puis de la chaîne du début à (y compris) 3ème répétition est capturé, puis le reste de la chaîne est compensée par.*$
puis l'ensemble de la chaîne est remplacé par capturé chose, et la longueur de celui-ci est la position du dernier caractère de la 3e 'foo'.Essayez ceci:
Oui, Tabularize utilise Vim de la regex, afin que l'exemple sur Eelvex la réponse devrait fonctionner.