Aujourd'hui, je devais aligner une table à seulement les premiers multiples 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
J'utilise un plugin tabulaire pour aligner les tables, mais je n'ai pas pu trouver de manière à trouver uniquement la première occurrence de plusieurs espaces et d'aligner uniquement là-bas.
Je ne le sais pas non plus dans Vim: quelle sera la regex si je veux seulement trouver la 3ème occurrence d'un motif sur une ligne? La regex est-elle la même chose que d'utiliser tabulaire?
La regex serait:
/\(.\{-}\zsPATTERN\)\{3}
Donc, si, par exemple, vous souhaitez modifier le 3ème 'FOO' à 'Bar' sur la ligne suivante:
lorem ifoopsum foo lor foor ipsum foo dolor foo
^1 ^2 ^3 ^4 ^5
cours:
s/\(.\{-}\zsfoo\)\{3}/bar/
obtenir:
lorem ifoopsum foo lor barr ipsum foo dolor foo
^1 ^2 ^3=bar ^4 ^5
Pour les utilisateurs de Google (comme moi) qui recherchent juste pour: "Regex Nth Occurrence". Cela retournera la position du dernier caractère de la troisième "FOO" (vous devez changer {3}
à votre n
et foo
à votre texte):
length(regexp_replace('lorem ifoopsum foo lor foor1 ipsum foo dolor foo', '((?:.*?foo){3}).*$', '\1'))
Cette: (?:.*?foo)
recherche quelque chose suivi de 'foo', alors il est répété 3 fois (?:.*?foo){3}
, puis la chaîne du début (y compris) la 3ème répétition est capturée, puis le reste de la chaîne est apparié par .*$
, puis la chaîne entière est remplacée par une chose capturée et la longueur de celle-ci est la position du dernier caractère de la 3ème 'FOO ".
Je ne sais pas si cela correspond à vos besoins, mais vous pouvez rechercher de cette façon:
pattern
ReturnIl placer le curseur sur la 3ème occurrence de la prochaine ligne correspondante (mettant en évidence toutes les occurrences)
Vous pouvez aussi macro:
qa+3nq
alors @a aller à la ligne suivante 3ème occurrence
Essaye ça:
:Tabularize /^.\{-}\S\s\{2,}
Oui, tabulariser utilise la regex de Vim. L'exemple de la réponse de Eelvex devrait donc fonctionner.