Comment diviser le texte en plusieurs lignes en fonction d'un motif en utilisant Vim?
Supposons que vous avez ce texte:
name1 = "John"; age1 = 41;
name2 = "Jane"; age2 = 32;
name3 = "Mike"; age3 = 36;
...
et vous souhaitez diviser chaque ligne en deux lignes pour donner un résultat comme ceci:
name1 = "John";
age1 = 41;
name2 = "Jane";
age2 = 32;
name3 = "Mike";
age3 = 36;
...
Comment feriez-vous pour automatiser cette opération?
Quelques remarques:
- J'ai déjà essayé la méthode suivante:
(1) Sélectionnez le texte dans la quasi-vode,
(2) Exécuter:'<,'>:norm ^3f r^M
***,
mais il ne fonctionne pas correctement; il se divise seulement la moitié des lignes, parce que, après chaque ligne est cassée, la prochaine répétition de la commande s'applique pour le reste de la ligne brisée à la place sur la ligne suivante! - Ceci peut être réalisé à l'aide d'une macro, mais je suis à la recherche de solution plus élégante.
*** explication de la séquence:
-norm
pour exécuter les commandes suivantes en mode normal
-^
pour déplacer le curseur au début de la ligne
-3f<space>
pour déplacer le curseur à la 3ème de l'espace dans la ligne
-r^M
pour le remplacement de l'espace avec une nouvelle ligne de
source d'informationauteur Ori Popowski
Vous devez vous connecter pour publier un commentaire.
Pour fonctionner sur l'ensemble du fichier, utilisez ceci:
Pour fonctionner seulement sur le texte sélectionné, utilisez ceci:
Traduction en anglais:
"Remplacer chaque occurrence de point-virgule suivi d'une espace avec point-virgule suivi d'un saut de ligne."
Explication:
C'est aussi simple qu'il obtient pour la substitution dans Vi.
Pour plus d'geekiness:
En fait, j'ai suivantes mappé dans mon
.vimrc
fichier pour des situations de ce genre:Cette commande divise chaque ligne d'un fichier à la première occurrence du dernier modèle de recherche.
Donc, pour votre cas d'utilisation que vous voulez faire cela:
;
(vous pouvez ou ne souhaitez pas inclure un espace... à vous de voir)SS
Chaque ligne de votre fichier sera divisé à la première
;
symbole.Pour clarifier, vous pouvez utiliser les 5 touches:
/ ; ENTRÉE S S
Ce qui est très pratique pour rapidement mise en forme XML, HTML, etc...