Je cherche à faire du code plus facile à lire en prenant quelque chose comme ceci: et ajout de nouvelles lignes pour créer des incréments de 8: p> Quelqu'un connaît toute magie Vim qui me permettra de le faire avec des lignes spécifiquement sélectionnées? P> P>
5 Réponses :
Ce n'est pas la plus jolie solution et je suis sûr que cela peut être nettoyé / simplifié certains. Tout d'abord, sélectionnez le texte, puis entrez cette commande:
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ...
On peut également utiliser une gamme de lignes plutôt qu'une sélection visuelle: :, + 5s ... code>. Aussi, pas besoin d'échapper au } code> dans le quantificateur: \ {8} code>.
Je ne peux pas garantir à Vim comme je suis au travail, mais dans VI le {8} doit que les supports se soient échappés.
VI nécessite une échappée les deux bretelles i>? Je n'ai pas de vrai VI code> pour tester. Le modèle ci-dessus, en utilisant \ {8} code> fonctionne dans VIM après SET Compatible code>, mais ce n'est pas une preuve. En outre, : help / \ { code> affirme que {VI ne possède aucune de ces} i>, re: quantifiers i>. Cela ne semble pas juste, mais ça fait quelque temps depuis que j'avais un vrai VI devant moi
Dans Vim, la fermeture } code> ne doit pas être échappée, mais il n'y a pas de mal à y échapper.
Je me suis trompé. VI n'a pas besoin d'échapper à la corse de fermeture. Désolé pour la confusion.
Une façon de tricher serait: p>
SET TEXTWIDTH = 48 CODE> LI>
- Metteur (en mode visuel) Les lignes que vous souhaitez envelopper li>
-
gq code> li>
ol>
Cela fonctionnera juste bien, tant que la TextWidth est à peu près là où vous voulez envelopper. Si tous les éléments de la liste sont de la même largeur, cette méthode doit être sans faille. P>
Un autre moyen légèrement plus robuste, serait de définir une macro. p>
- Déplacez votre curseur au début de la ligne li>
-
qw code> pour commencer à enregistrer une macro dans le registre w (vous pouvez utiliser n'importe quel registre) li>
-
8f, a code> appuyez sur Entrée, laissez le mode insertion et appuyez sur q code> à nouveau li>
-
@W code> Pour rejouer la macro autant de fois que nécessaire. Je suis sûr qu'il y a un moyen intelligent d'automatiser combien de fois pour rejouer la macro, mais je ne sais pas comment. Vous pouvez également appuyer sur @@ code> pour exécuter la plus récente macro exécutée. Li>
ol>
Une expression régulière fonctionne également, comme @ZaneGray Publié. P>
Le nom officiel de Vim pour une macro-clés est "Enregistrement". aide q code>
Vous pouvez le faire avec une commande multi-pièces qui pourrait être plus facile à envelopper votre tête autour de ...
Faire une macro qui ajoute un demi-point après la 8ème virgule. P>
gv :'<,'>s/;/\r/g
Cela ne gagnera aucun concours de golf VIM, mais j'aime penser à des problèmes comme celui-ci en quelques étapes simples.
Pour ce faire, exécutez ce qui suit: P>
:h range :h :j :h :s :h :g :h '[
: s /, /, \ r / g code> substituer tous les espaces après la virgule avec un retour ( \ r code>) li>
-
'['] code> est la plage du texte récemment modifié. LI>
-
g /./ {cmd} code> exécutera une commande, {cmd} code>, sur toutes les lignes correspondant . code> (n'importe quel non vide ligne) li>
-
j 8 code> est court pour joindre 8 code> qui signifie joindre 8 lignes li>
ul> Maintenant un mot d'avertissement: cela rejoindra 8 lignes même après la fin de la fin du texte substitué, '] code>. Cela pourrait être surmonté avec une commande plus complexe comme: : '['] g /./.-+ 6 /, $ / j 8 code>, mais ce n'est pas assez simple pour mes goûts. Si ce problème est une vraie préoccupation, je déplacerais le texte d'origine dans un nouveau tampon (via : nouveau code>) ou au moins le bas du tampon actuel. Après avoir terminé la transformation, déplacez-la en place. P> Pour plus d'informations P>
:s/, /,\r/g
:'[,']g/./j 8
Cette solution est donc basée sur la solution forte> STRAND> Zanegray et une petite peau de peau de ma part:
:s/\(\S\+\s\)/&\r/g