Recherche conditionnée dans VI

Recherche conditionnéeNous allons utiliser quelque chose que j’appelle la recherche conditionnelle dans VI: chercher un texte qui va ou pas suivi par un autre. Dans l’éditeur de texte VI, nous pouvons utiliser des expressions régulières pour rechercher des motifs dans le texte. C’est très utile.

Pendant longtemps les balises pour signaler le début du code php “<?” ils ne sont pas acceptés Ceci est fait pour éviter d’être confondu avec le traitement des déclarations XML:

<?xml version="1.0" encoding="utf-8" ?>

Pour cela vous devez utiliser l’étiquette “<?php” et donc il n’y a pas de problème. Ils continuent à servir les balises <? = Pour insérer des variables directement:

...
<P><?=$variable?></P>
...

Recherche et substitution automatique dans VI

Rechercher et remplacer du texte dans vi est très facile et vous pouvez trouver ici une petite explication.

Pour rechercher et remplacer ces étiquettes automatiquement, vous pouvez utiliser l’instruction suivante:

:%s/<?\(php\|=\)\@!/<?php /g

Qu’est-ce que cela fait est de rechercher le fichier entier (“%”) pour les occurrences du texte “<?” qui ne sont pas suivies (“@!”) de “php” ou “=” et remplacer (les s du début) par “<? php” (ce qui va derrière le second “/” est ce qui va remplacer à ce qui a été trouvé). A la fin (derrière le troisième “/”) vient un “g” pour que la substitution soit faite globalement, au cas où il y a plus d’une occurrence par ligne, vous pouvez aussi mettre un “i” pour indiquer qu’il ne différencie pas les capitales minuscule, ce serait:

:%s/<?\(php\|=\)\@!/<?php /gi

Comme vous pouvez le voir, il existe des barres obliques inverses «\» à certains endroits pour différencier ces caractères spéciaux de ceux que vous devriez considérer comme du texte à rechercher, comme dans les parenthèses qui regroupent les options.

J’ai ajouté l’espace après php dans le cas où il y a une ligne qui a un code après <?php pour qu’il ne reste pas bloqué et donne une erreur (“<?phpecho”, par exemple).

La syntaxe de \@! est un peu déroutant car cela va après le modèle que vous ne devriez pas trouver.

Cela peut être utile pour utiliser l’expression soif ou un programme de recherche de texte dans des fichiers qui supportent des expressions régulières mais je ne sais pas si cela fonctionne de la même manière.

En principe cela ne semble pas compliqué mais pour le rendre automatique, il faut garder à l’esprit qu’il n’est pas nécessaire de remplacer toutes les apparences du tag court mais celles qui répondent à certaines conditions, c’est pourquoi la recherche conditionnée.