Bonjour
J’essaye de me mettre sérieusement à vim et je suis tombé sur une édition que je n’arrive pas à faire correctement.
J’ai copié un bout de XML qui contient une multitude de tags simples (plusieurs milliers de lignes).
<TAGA>Value1</TAGA>
<TAGA>Value2</TAGA>
<TAGA>Value3</TAGA>
...
<TAGB>Value10</TAGB>
<TAGB>Value11</TAGB>
...
Je souhaite transformer ce bout de texte de la manière suivante :
function("Value1")
function("Value2")
function("Value3")
...
function("Value10")
function("Value11")
...
En gros supprimer les balises XML et rajouter du texte avant la valeur du tag (function(") et après (").
Pour faire cela avec vim, j’ai voulu passer par le mode "visuel block" (Ctrl+v). J’ai réussi à faire la moitié du chemin : supprimer la balise ouvrante et insertion du text (function("). Pour cela j’ai fait comme ça :
Ctrl+v " Passage en mode visuel block
G " Sélectionne tout les lignes jusqu'à la fin du fichier
f> " Sélectionne le text jusqu'au chevron > pour sélectionner la balise ouvrante
cfunction("<Esc> " Remplace la balise ouvrante par le texte
Cela marche pour le moment, mais ça pose problème si j’ai des tags dont les noms n’ont pas les même nombres de caractères.
Pour la suppression de la balise fermante là je séché. Vue que les valeurs dans les tags n’ont pas les mêmes nombre de caractères cela pose problème.
En faite pour ce genre de chose avec un éditeur tel que vscode, j’utiliserai le multicurseur, irait à la fin de la ligne pour chaque ligne avec la touche <End> et ferais un Ctrl+Shift+Flèche-gauche pour sélectionner sur chaque lignes exactement la balise fermante du tag (Ctrl+Shift permet de sélectionner en se déplaçant par mot). Cela a l’avantage de fonctionner aussi si les noms des tags n’ont pas le même nombre de caractères.
J’ai l’impression que l’approche mode visuel n’est peut être pas adapté à ce cas de figure. Du coup question aux utilisateurs de vim. Comment auriez-vous fait?
Merci