Comment insérer du texte dans Vim?
-
05-07-2019 - |
Question
Parlons de mesures relatives. Mon Vim ressemble à:
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc
etc
je voudrais qu'il soit plus petit:
aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc
Comment puis-je l'obtenir? Et comment puis-je gérer le paramétrage de la longueur d'un tel bloc?
La solution
Vous pouvez réellement faire deux choses:
- Laissez vim formater (i.e.change) votre texte pour qu'il comporte des lignes plus courtes, en insérant des sauts de ligne
- Laissez les lignes telles qu'elles sont, mais affichez-les enveloppées
Lequel voulez-vous?
L'option 1 serait réalisée en définissant textwidth
(par exemple, : set textwidth = 30
(d'après la réponse de Swaarop)). Ensuite, vous pouvez reformater votre texte en le mettant en surbrillance (en mode visuel) et en tapant gq
. ( textwidth
peut être abrégé en tw
, ainsi : set tw = 30
.)
L'option 2 peut être basculée en exécutant : set wrap
/ : set nowrap
. Cela encapsulera les lignes trop longues pour la fenêtre.
Les deux sont indépendants.
Autres conseils
Une fois que vous avez défini "largeur de texte", vous pouvez sélectionner du texte en mode visuel et appuyer sur gq pour le bien emballer (vous pouvez également utiliser Q sur des configurations plus anciennes / anciennes).
Quelques conseils utiles:
gqq (wrap the current line)
gq} (wrap this 'paragraph', i.e. until the next blank line)
:h gq
Utiliser fold (1) est une possibilité:
:%!fold -w5
Résultat:
aaaaa
aaaaa
aaa
bbbbb
bbbbb
bbb
ccccc
ccccc
ccc
:set textwidth=30
Si vous souhaitez séparer le texte sans espaces d'une certaine longueur, il n'est pas nécessaire d'utiliser un fold
externe ni d'écrire votre propre formatexpr
.
:% s / \ (. \ {80 \} \) / \ 1 \ r / g
coupera toutes les lignes à 80 caractères.