I have seen this very interesting article: http://dustycloud.org/blog/vcs-friendly-patchable-document-line-wrapping/ --- basically it is a suggestion for hard-breaking lines of text (for example, in markdown or LaTeX sources) to achieve both easy readability and easy "diff"-ability.
Basically, when I write in LaTeX normally I follow the classical way of "one line per phrase" (hard new line at full stop), and the mandatory blank line for paragraph. This is unfortunately almost unreadable in a diff
of a very long phrase, especially if the change is near the end.
The suggested format is to have a line format (a la gqip
) for every phrase, but keeping the phrases on their own. For example:
This is a short phrase. This, instead, is a very long, probably too long for English, phrase, but in other languages very long phrases are quite common, really --- and so on and so on.
should be formatted as (this has setl tw=60
to be more dramatic)
This is a short phrase.
This, instead, is a very long, probably too long for
English, phrase, but in other languages very long phrases
are quite common, really --- and so on and so on.
I can go from the first to the last by hand:
- go to the first full stop,
- insert a linebreak,
- then go to the next line, issue a
gqt.
command, - repeat until the end of the paragraph.
...but I am sure that there should be a better way. (I can try to write a little script for this, or define a key that do the steps all right, but I'd like to know if there is some magic that can change the gqip
command to automatically do it).
Update I use
nnoremap <leader>. f.a<CR>^[gqt.
(the ^[
is a literal escape) which is handy, but fails if the paragraph has just one phrase...)