Est-il décent de Vim regexp OU une commande? Quelle est la meilleure façon de trouver incompatibles si d'autre?
J'ai quelques désadaptation si et fi des instructions dans un script. Je tiens à dépouiller de tout, mais le si de l'autre et de l'if. Juste pour que je puisse voir la structure. Pourquoi suis en train de travailler si DUR avec un éditeur puissant? J'ai besoin d'un BIGFATOR opérateur pour les regexp ou certains l'epiphanie, qui a m'a échappé... je ne m'inquiète pas pour pontification sur les expressions régulières juste quelque chose de pratique de travail dans VIM7.2.
:g/[ ^\t]si [/imprimer
permet d'imprimer les ifs
:g/[ ^\t]fi/imprimer
sera imprimé le fi
Ce que je veux faire est ou les conditions
:g/[ ^\t]fi BIGFATOROPERATOR [ ^\t]fi/imprimer
J'ai eu du succès en procédant de la manière suivante... mais je sens que je suis en train de travailler TROP DUR!
:appel TripMatch('[ ^\t]*si [', 'else', 'fi[ \t$]')
fonction! TripMatch(str1, str2, str3)
laisser var1 = a:str1
laisser var2 = a:str2
laisser var3 = a:str3
laissez max = ligne("$")
si n = 1
for n in range (1, max)
laisser currentline = getline(n)
if currentline =~? var1 echo n "1:" currentline else if currentline =~? var2 echo n "2:" currentline else if currentline =~? var3 echo n "3:" currentline else let foo = "do nothing" endif endif endif
finpour
endfunction
Vous devez vous connecter pour publier un commentaire.
BIGFATOROPERATOR est
\|
. Il est appelé le l'alternance de l'opérateur. En PCRE, c'est la plaine|
. Cela s'est échappé dans Vim/ex parce que|
est utilisé par ailleurs pour les commandes générales (ou quelque chose -- corrigez-moi).Si vous souhaitez supprimer toutes les autres lignes de côté de ceux avec des si, d'autre, ou, fi, vous pouvez utiliser cette
"v" est le contraire de " g " et supprime toutes les lignes qui ne correspondent pas à l'expression régulière.
À ajouter à ce que strager dit, le caractère '|' est échappé dans Vim, j'imagine parce que Vim suppose que vous allez être à la recherche pour les caractères littéraux le plus souvent, vous aurez besoin d'une vaste les expressions régulières.
Vous pouvez faire Vim utiliser moins échappé à les expressions régulières par la définition de la "magie" niveau "très", alors qu'en mode ex:
Voir :il /magie pour plus d'informations
Il n'est pas recommandé que vous définissez la valeur par défaut niveau de magie de 'très' dans votre vimrc si (comme le fichier d'aide de notes).
Si vous avez raté \|, vous avez probablement raté beaucoup d'autres modèle "jetons".