Y a-t-il un moyen d'agir sur une ligne lorsque des conditions serveur ne correspondent que.
Pour exmaple, j'ai le texte comme (ps: ce texte est emprunté à une question similaire nother.)
Si la ligne actuelle correspond à Il existe un moyen simple d'y parvenir: p> Cependant, lorsque les conditions augmentent, les booms de regex. En outre, cette solution n'est pas aussi élégante que prévu.
Y a-t-il de toute façon être accompli avec Après quelques réponses données, j'ai trouvé ma question n'est pas assez claire, j'ai ajouté la commande pseudo suivante à montrer ce que je cherche.
Le moyen élégant d'y parvenir est quelque chose comme (mais le code suivant ne fonctionnera pas): p> Le problème est, le premier S'il existe une solution, je peux facilement gérer les actions suivantes:
Imprimez "la ligne et trois lignes suivantes" à condition que "la ligne contienne J'espère que je suis ' Je me suis fait clairement. p> p> ^ Ceci code> et la ligne suivante correspond à rouge code>, puis effectuez la commande normale un texte à ajouter {ESC} code> . P> : gloabl code> la commande p> : g Code> Commande ne passera pas les lignes mais pas bloquer (je ne suis pas sûr si je suis correct), il est donc peu probable de filtrer la condition biaisée ( rouge code>, 1 ligne après). P > ceci code> et 100 lignes plus tard contient rouge code>". P>
3 Réponses :
J'utiliserais alors votre regex correspond à chacun des ci-dessus les options que vous voulez. Il serait préférable de nous montrer la sortie souhaitée, afin que nous puissions mieux comprendre ce que vous voulez en conséquence. P> p> \ v code> ce qui signifie "une recherche très magique" afin que vous puissiez utiliser des groupes regex tels que ceci:
Merci d'avoir répondu, mais ce que vous voulez dire, ce n'est pas ce que je cherche à.
Si je comprends bien, vous souhaitez ajouter du texte à la fin de chaque première ligne correspondante, mais pas avec la commande si vous voulez ajouter à la seconde Ligne, il suffit d'ajouter "j" comme ceci: p> : STI code>. : global code> avec : normal code> vous aidera à y parvenir: p>
Merci d'aide et le problème est réédité pour une explication plus clarifiante, veuillez vous reporter à la déclaration renouvelée.
Enfin, j'ai résolu ce problème en script. Et j'ai poussé le code à Github au cas où d'autres en ont besoin. Veuillez vous reporter à EnhancedG.VIM . Pour les exigences:
[a-z] code>; li>
- 3 lignes après contient
\ d code>; li>
- 2 lignes avant contenant
exemple code>; li>
- Effectuer des
du texte code> sur la ligne avant;
sera une simple ex-commande: li>
OL> :G/to delete/+!/^$/d
"Lorsque les conditions augmentent, les booms de regex" i> qui dépendent de quelles sont les conditions ... qu'est-ce que vous avez à l'esprit? Votre question serait meilleure si vous donnez un exemple où l'utilisation d'une regex aurait été vraiment impraticable
"Est-ce qu'il y a de toute façon être accompli avec: Global Command?" I> Oui.
: G / ^ Ceci. * \ n. * rouge / normal! Le texte ASOME à ajouter code> ajoutera le texte sur les lignes correspondant au regex.Merci à vous tous pour vos commentaires et j'ai ré-éditer le problème, veuillez vous reporter.