2015-10-03 1 views
0

J'ai acquis une énorme base de code dans laquelle les développeurs précédents ne suivaient pas 80 caractères. J'essaye de faire de très longues lignes en plusieurs lignes avec continuation. C'est un langage IDL.Vim Format Texte (ligne de rupture) à une longueur fixe intelligemment

Avant

test_function, variable1, variable2, variable3, variable4, variable5, variabl6, variable7, vaiable8, variable9, variable10, ... 

Après

test_function, variable1, variable2, variable3, variable4, $ 
    variable5, variable6, variable7, variable8, variable9, $ 
    variable10 

Je l'ai utilisé formatprg et par pour le formatage d'un paragraphe. Je cherche un moyen pour qu'il casse la ligne (intelligemment) à environ 80 caractères au comma (et éventuellement ajouter le signe continuation ($)). Ce sera un énorme gain de temps, car je n'ai pas besoin de casser ces 1000 lignes de 80 caractères manuellement.

Merci.

Répondre

1

Ceci est la réponse de votre problème: https://stackoverflow.com/a/1272247/5152421

Vim fait très facilement.

gq{motion} % format the line that {motion} moves over 
{Visual}gq % format the visually selected area 
gqq  % format the current line 
... 

Je vous suggère de vérifier :help gq et :help gw. Le réglage de la largeur de texte (tw) vous permet également de couper automatiquement la ligne en cas de dépassement pendant la saisie. Il est également utilisé dans gq, mais s'il est désactivé, gq casse sur la taille de la fenêtre ou 79 selon ce qui vient en premier.

:set tw=80 
0

Je ne sais pas comment le configurer par les options de formatage, mais cette solution pourrait faire le travail

:%s/\%>68c \%<78c/ $\r/ 

Cela signifie remplacer (%s) espace adapté () entre les colonnes 68 (%>68c) et 78 (%<78c) par l'espace et $ et le saut de ligne (\r). 78 en raison de l'ajout de deux caractères à la fin de la ligne.

:h \%c


Il y a aussi des commentaires qui serait bon de garder, donc avant d'exécuter le premier remplacement, exécutez cette commande

:%s/\(^\s\{-};\).*\%>68c\zs \%<78c/\r\1/

Cela signifie remplacer les lignes qui commence par ; (et éventuellement certains espaces avant (\s\{-})), commencez le match (\zs) après la colonne 68 jusqu'à 78, prenez le début de la ligne jusqu'à ; (\(^\s\{-};\)), et passez-le (\1) après un saut de ligne.

:h \s :h \{ :h \zs :h \(