La seule raison pour laquelle j'ai jamais édité un fichier texte dans Pico ou Nano, et non dans Vim, était sa commande "Justifier" ^J. Il reformaterait un paragraphe de texte en créant des sauts de ligne lors des sauts de mot, de sorte que le texte flotterait bien sur un écran de largeur fixe - formaterait le texte de manière à l'adapter aux 80 colonnes prédéfinies, en créant des sauts de ligne uniquement entre les mots. Même si la fonction était limitée, elle était très utile, que ce soit pour formater de longs blocs de commentaires, des fichiers de documentation, ou simplement pour remplacer une ligne infinie de paramètres par quelque chose de plus lisible.
Puis-je faire quelque chose comme ça dans Vim?
'formatprg'
option.Il existe un excellent VimCast sur ce sujet.
http://vimcasts.org/episodes/formatting-text-with-par/
Fondamentalement, vous devez installer
par
:Et puis, puisque vous voulez que les colonnes soient encapsulées dans 80 colonnes:
Maintenant, vous pouvez utiliser l'
gq
opérateur, comme dans d'autres réponses (par exemplegqip
), et il utilisera Par au lieu du formateur intégré de Vim.Par est assez avancé et formatera bien des commentaires comme celui-ci:
la source
De
:help usr_25
:Donc, tout ce que vous avez à faire est de courir
puis tapez
pour justifier le texte dans tout le fichier.
(Bien sûr, vous pouvez également ajouter
ru macros/justify.vim
à votre fichier .vimrc pour ne pas avoir à le taper à chaque fois.)Remarque : ceci n’ajoute pas de sauts de ligne pour vous. Vous devez les ajouter manuellement avec
gq
. Pour cela, vous devez également définir letextwidth
(la valeur par défaut est 0) sur la valeur souhaitée viaet, si vous le souhaitez, le
t
retour automatique à la ligne en définissant l' option -flag viaSi vous le souhaitez, vous pouvez définir un mappage dans votre fichier .vimrc pour qu'il effectue tout le travail à votre place:
Ceci se place au début du fichier (
gg
), enveloppe toutes les lignes (gq
jusqu'àG
), puis_j
rend le texte plus stable.la source
:set fo+=a
option très utile pour le reformatage automatique de tout le paragraphe. Regardez:help fo-table
pour d'autres options. Il y a aussi un bon tutoriel vidéo ici ._j
mappage ajouté par la macro semble justifier le fichier entier pour moi, ou il peut être limité par une sélection visuelle par lignes.Bien que l'aide de nano appelle la
^J
commande "Justifier", elle ne justifie pas le texte mais reformate le texte en cassant les lignes avant la marge droite de l'écran (ou sur une colonne configurable, je suppose).Vous pouvez faire la même chose dans VIM en définissant la variable
textwidth
, à partir de:help 'textwidth'
:C'est-à-dire: pendant que vous tapez, si une ligne est plus longue que des
textwidth
caractères, VIM va envelopper la ligne au premier espace pour que la longueur de la ligne soit inférieure ou égale àtextwidth
.Pour que cela fonctionne, l'option
formatoptions
doit contenir la lettret
. Voir:help 'formatoptions'
et:help fo-table
pour les options disponibles. Par exemple, l'c
option de rendre la mise en forme avec des commentaires peut vous intéresser .Modifier : vous pouvez effectuer la même opération, sans la nécessité de mettre
t
enformatoptions
utilisant la commandegw{motion}
, il forme le texte entre la position actuelle du curseur et la position du curseur après{motion}
. Lagw
commande est également disponible en mode visuel, elle met en forme le texte sélectionné.la source
Voici deux options faciles:
!fmt
!}fmt
Les deux envoient un bloc de texte à unix
fmt
, voir lesman fmt
options. Vous pouvez passer les arguments d'option de vim. Par exemple, pour formater un bloc de 50 caractères de large, tapez!}fmt -w 50
.la source
:%!fmt
et en annulant avec un seulu
si vous n'aimez pas le résultat.Marquez le texte à l'aide de la commande visuelle puis utilisez:
où 40 est la largeur de la colonne et les
j
moyens justifiés.la source
par
) et sur le fonctionnement de votre solution. Vous voudrez peut-être ajouter plus de détails pour améliorer la qualité de votre réponse et la rendre plus utile pour les futurs lecteurs.