J'écris actuellement beaucoup de texte brut (et LaTeX avec une mise en forme minimale dans les paragraphes), et ce serait bien si je pouvais configurer vim pour conserver chaque phrase (pour plus de simplicité, le texte se termine par un '.', '!' , ou '?'; c'est-à-dire une ponctuation de fin suivie d'un espace pour éviter de casser les nombres décimaux) sur sa propre ligne afin que les différences VCS soient plus utiles.
Au minimum, je voudrais gq
formater le texte de:
He lay flat on the brown, pine-needled floor of the forest, his chin on his
folded arms, and high overhead the wind blew in the tops of the pine trees.
The mountainside sloped gently where he lay; but below it was steep and he
could see the dark of the oiled road winding through the pass. There was a
stream alongside the road and far down the pass he saw a mill beside the
stream and the falling water of the dam, white in the summer sunlight.
À:
He lay flat on the brown, pine-needled floor of the forest, his chin on his folded arms, and high overhead the wind blew in the tops of the pine trees.
The mountainside sloped gently where he lay; but below it was steep and he could see the dark of the oiled road winding through the pass.
There was a stream alongside the road and far down the pass he saw a mill beside the stream and the falling water of the dam, white in the summer sunlight.
Mais ce serait bien si vim effectuait également ce formatage pendant que je tape (comme il le fait avec la refusion de la largeur du texte). Est-ce possible?
Ma solution actuelle consiste à joindre un paragraphe avec J
, puis à exécuter :'<,'>s/\. /.\r/g
ce qui est plutôt bien car il y a peu d'exclamations et de points d'interrogation, mais ce serait beaucoup mieux si je pouvais rendre gq légèrement plus intelligent.
)
et insérer une nouvelle ligne; répétez jusqu'à ce que vous arriviez à la fin de la plage". Il appliquerait alors vraisemblablement toutes les règles d'indentation. Mais mon Vim-fu est trop faible pour ça. :)e.g. blah
, etBlah et al. 2018
ce qui est un peu ennuyeux. Vous pouvez dissocier des modèles comme celui-ci avec quelque chose comme's/\(e\.g\|\<al\)\@<![.!?]\zs /\r/g'
. Ajoutez simplement plus de motifs au premier groupe pour éviter d'autres choses sur lesquelles vous ne voulez pas vous séparer. Sinon, c'est super utile, merci. Je ne l'avais jamais rencontrégq
auparavant etgqip
est super utile pour formater du texte que les éditeurs de texte du co-auteur ont mutilé.Eh bien, vous pouvez configurer certaines cartes et commandes automatiques:
Ensuite, définissez simplement le type de fichier sur customtxt ou appelez la
AddSentenceMaps
fonction manuellement.la source
Je veux ajouter mes réflexions sur cette question. Habituellement, les gens veulent ce type de fonctionnalité parce qu'ils sautent par-dessus les lignes encapsulées lorsqu'ils naviguent dans le code avec les commandes
j
etk
qui est le comportement par défaut de Vim. Pour la navigation à travers les lignes enveloppées, j'utilisegj
- descendre etgk
- monter. Il existe également une possibilité de remappage standardj
et dek
commande sur les homologues à préfixe g, mais à mon humble avis, ce serait exagéré.la source
j
etk
àgj
etgk
quand vous le voulez ;-)Cela ne répond pas à votre question spécifique sur le reformatage, mais 'set wrap' ainsi que 'set linebreak' peuvent rendre l'édition de longues lignes beaucoup plus agréable. Combinez cela avec gj et gk pour naviguer dans les lignes enveloppées. Je mappe les flèches haut et bas respectivement sur gj et gk pour avoir le choix entre monter et descendre des lignes réelles ou des lignes visuelles. Comme pour Home / End à g0 / g $.
la source