Tip #584: Awesome text formatter
tip karma |
Rating 88/33, Viewed by 9117
|
Read and edit this tip on the
Vim tip wiki.
The wiki may have a more recent version of this tip.
created: |
|
October 10, 2003 14:16 |
|
complexity: |
|
basic |
author: |
|
[email protected] |
|
as of Vim: |
|
5.7 |
The berkeley program 'par' can format/justify
text/c-comments (examples below) better (and much more) than
the default unix formatters.
Download from: http://www.cs.berkeley.edu/~amc/Par/ ;
Usage:
Select region and press <A-q> to format.
In ~/_vimrc put (-j is for justify lines)
:set formatprg=par\ -w60
: map <A-q> {v}!par -jw60<CR>
:vmap <A-q> !par -jw60<CR>
Examples from par.man
Before:
/* We the people of the United States, */
/* in order to form a more perfect union, */
/* establish justice, */
/* insure domestic tranquility, */
/* provide for the common defense, */
/* promote the general welfare, */
/* and secure the blessing of liberty */
/* to ourselves and our posterity, */
/* do ordain and establish the Constitution */
/* of the United States of America. */
After "par -59":
/* We the people of the United States, in */
/* order to form a more perfect union, establish */
/* justice, insure domestic tranquility, provide */
/* for the common defense, promote the general */
/* welfare, and secure the blessing of liberty */
/* to ourselves and our posterity, do ordain */
/* and establish the Constitution of the United */
/* States of America. */
Or after "par -59f":
/* We the people of the United States, */
/* in order to form a more perfect union, */
/* establish justice, insure domestic */
/* tranquility, provide for the common */
/* defense, promote the general welfare, */
/* and secure the blessing of liberty to */
/* ourselves and our posterity, do ordain */
/* and establish the Constitution of the */
/* United States of America. */
Or after "par -59l":
/* We the people of the United States, in */
/* order to form a more perfect union, establish */
/* justice, insure domestic tranquility, */
/* provide for the common defense, promote */
/* the general welfare, and secure the */
/* blessing of liberty to ourselves and our */
/* posterity, do ordain and establish the */
/* Constitution of the United States of America. */
Or after "par -59lf":
/* We the people of the United States, */
/* in order to form a more perfect union, */
/* establish justice, insure domestic */
/* tranquility, provide for the common */
/* defense, promote the general welfare, */
/* and secure the blessing of liberty */
/* to ourselves and our posterity, do */
/* ordain and establish the Constitution */
/* of the United States of America. */
Or after "par -59lft0":
/* We the people of the United States, */
/* in order to form a more perfect union, */
/* establish justice, insure domestic */
/* tranquility, provide for the common */
/* defense, promote the general welfare, */
/* and secure the blessing of liberty */
/* to ourselves and our posterity, do */
/* ordain and establish the Constitution */
/* of the United States of America. */
Or after "par -59j":
/* We the people of the United States, in */
/* order to form a more perfect union, establish */
/* justice, insure domestic tranquility, provide */
/* for the common defense, promote the general */
/* welfare, and secure the blessing of liberty */
/* to ourselves and our posterity, do ordain and */
/* establish the Constitution of the United */
/* States of America. */
Or after "par -59jl":
/* We the people of the United States, */
/* in order to form a more perfect */
/* union, establish justice, insure domestic */
/* tranquility, provide for the common defense, */
/* promote the general welfare, and secure */
/* the blessing of liberty to ourselves and */
/* our posterity, do ordain and establish the */
/* Constitution of the United States of America. */
Before:
Preamble We the people of the United States,
to the US in order to form
Constitution a more perfect union,
establish justice,
insure domestic tranquility,
provide for the common defense,
promote the general welfare,
and secure the blessing of liberty
to ourselves and our posterity,
do ordain and establish
the Constitution
of the United States of America.
After "par -52h3":
Preamble We the people of the United
to the US States, in order to form a
Constitution more perfect union, establish
justice, insure domestic
tranquility, provide for the
common defense, promote the
general welfare, and secure
the blessing of liberty to
ourselves and our posterity,
do ordain and establish the
Constitution of the United
States of America.
Before:
1 We the people of the United States,
2 in order to form a more perfect union,
3 establish justice,
4 insure domestic tranquility,
5 provide for the common defense,
6 promote the general welfare,
7 and secure the blessing of liberty
8 to ourselves and our posterity,
9 do ordain and establish the Constitution
10 of the United States of America.
After "par -59p12l":
1 We the people of the United States, in order to
2 form a more perfect union, establish justice,
3 insure domestic tranquility, provide for the
4 common defense, promote the general welfare,
5 and secure the blessing of liberty to ourselves
6 and our posterity, do ordain and establish the
7 Constitution of the United States of America.
Before:
> > We the people
> > of the United States,
> > in order to form a more perfect union,
> > establish justice,
> > ensure domestic tranquility,
> > provide for the common defense,
>
> Promote the general welfare,
> and secure the blessing of liberty
> to ourselves and our posterity,
> do ordain and establish
> the Constitution of the United States of America.
After "par -52":
> > We the people of the United States, in
> > order to form a more perfect union,
> > establish justice, ensure domestic
> > tranquility, provide for the common
> > defense,
>
> Promote the general welfare, and secure
> the blessing of liberty to ourselves and
> our posterity, do ordain and establish
> the Constitution of the United States of
> America.
Before:
> We the people
> of the United States,
> in order to form a more perfect union,
> establish justice,
> ensure domestic tranquility,
> provide for the common defense,
> Promote the general welfare,
> and secure the blessing of liberty
> to ourselves and our posterity,
> do ordain and establish
> the Constitution of the United States of America.
After "par -52d":
> We the people of the United States,
> in order to form a more perfect union,
> establish justice, ensure domestic
> tranquility, provide for the common
> defense,
> Promote the general welfare, and secure
> the blessing of liberty to ourselves and
> our posterity, do ordain and establish
> the Constitution of the United States of
> America.
Before:
# 1. We the people of the United States.
# 2. In order to form a more perfect union.
# 3. Establish justice, ensure domestic
# tranquility.
# 4. Provide for the common defense
# 5. Promote the general welfare.
# 6. And secure the blessing of liberty
# to ourselves and our posterity.
# 7. Do ordain and establish the Constitution.
# 8. Of the United States of America.
After "par -37p13dh":
# 1. We the people of the
# United States.
# 2. In order to form a more
# perfect union.
# 3. Establish justice,
# ensure domestic
# tranquility.
# 4. Provide for the common
# defense
# 5. Promote the general
# welfare.
# 6. And secure the blessing
# of liberty to ourselves
# and our posterity.
# 7. Do ordain and establish
# the Constitution.
# 8. Of the United States of
# America.
Before:
/*****************************************/
/* We the people of the United States, */
/* in order to form a more perfect union, */
/* establish justice, insure domestic */
/* tranquility, */
/* */
/* */
/* [ provide for the common defense, ] */
/* [ promote the general welfare, ] */
/* [ and secure the blessing of liberty ] */
/* [ to ourselves and our posterity, ] */
/* [ ] */
/* */
/* do ordain and establish the Constitution */
/* of the United States of America. */
/******************************************/
After "par -42r":
/********************************/
/* We the people of the */
/* United States, in order to */
/* form a more perfect union, */
/* establish justice, insure */
/* domestic tranquility, */
/* */
/* */
/* [ provide for the common ] */
/* [ defense, promote the ] */
/* [ general welfare, and ] */
/* [ secure the blessing of ] */
/* [ liberty to ourselves ] */
/* [ and our posterity, ] */
/* [ ] */
/* */
/* do ordain and establish the */
/* Constitution of the United */
/* States of America. */
/********************************/
Or after "par -42re":
/********************************/
/* We the people of the */
/* United States, in order to */
/* form a more perfect union, */
/* establish justice, insure */
/* domestic tranquility, */
/* */
/* [ provide for the common ] */
/* [ defense, promote the ] */
/* [ general welfare, and ] */
/* [ secure the blessing of ] */
/* [ liberty to ourselves ] */
/* [ and our posterity, ] */
/* */
/* do ordain and establish the */
/* Constitution of the United */
/* States of America. */
/********************************/
Before:
Joe Public writes:
> Jane Doe writes:
> >
> >
> > I can't find the source for uncompress.
> Oh no, not again!!!
>
>
> Isn't there a FAQ for this?
>
>
That wasn't very helpful, Joe. Jane,
just make a link from uncompress to compress.
After "par -40q":
Joe Public writes:
> Jane Doe writes:
>
>
> > I can't find the source for
> > uncompress.
>
> Oh no, not again!!!
>
>
> Isn't there a FAQ for this?
>
That wasn't very helpful, Joe.
Jane, just make a link from
uncompress to compress.
Or after "par 40qe":
Joe Public writes:
> Jane Doe writes:
>
> > I can't find the source for
> > uncompress.
>
> Oh no, not again!!!
>
> Isn't there a FAQ for this?
That wasn't very helpful, Joe.
Jane, just make a link from
uncompress to compress.
Or after "par -40qi":
Joe Public writes:
> Jane Doe writes:
> >
> >
> > I can't find the source for
> > uncompress.
> Oh no, not again!!!
>
>
> Isn't there a FAQ for this?
>
>
That wasn't very helpful, Joe.
Jane, just make a link from
uncompress to compress.
Or after "par -40qie":
Joe Public writes:
> Jane Doe writes:
> > I can't find the source for
> > uncompress.
> Oh no, not again!!!
>
> Isn't there a FAQ for this?
That wasn't very helpful, Joe.
Jane, just make a link from
uncompress to compress.
Before:
I sure hope there's still room
in Dr. Jones' section of archaeology.
I've heard he's the bestest. [sic]
After "par -50g":
I sure hope there's still room in
Dr. Jones' section of archaeology. I've
heard he's the bestest. [sic]
Or after "par -50gc":
I sure hope there's still room in
Dr. Jones' section of archaeology. I've
heard he's the bestest. [sic]
Before:
John writes:
: Mary writes:
: + Anastasia writes:
: + > Hi all!
: + Hi Ana!
: Hi Ana & Mary!
Please unsubscribe me from alt.hello.
After "par Q+:+ q":
John writes:
: Mary writes:
:
: + Anastasia writes:
: +
: + > Hi all!
: +
: + Hi Ana!
:
: Hi Ana & Mary!
Please unsubscribe me from alt.hello.
Before:
amc> The b option was added primarily to deal with
amc> this new style of quotation
amc> which became popular after Par 1.41 was released.
amc>
amc> Par still pays attention to body characters.
amc> Par should not mistake "Par" for part of the prefix.
amc> Par should not mistake "." for a suffix.
After "par B=._A_a 50bg":
amc> The b option was added primarily to
amc> deal with this new style of quotation
amc> which became popular after Par 1.41
amc> was released.
amc>
amc> Par still pays attention to body
amc> characters. Par should not mistake
amc> "Par" for part of the prefix. Par
amc> should not mistake "." for a suffix.
<< Vim as XML Editor |
Keymap for normal mode >>
Additional Notes
[email protected],
October 12, 2003 3:00
|
http://www.nicemice.net/par/
|
[email protected],
October 16, 2003 12:18
|
set equalprg=par
visually select an area and hit '='
|
[email protected],
October 24, 2003 16:19
|
I'm using par -w78 option right now and loves it.
Anybody know the option for par to leave double spaces after each sentences?
|
Anonymous,
November 26, 2003 10:16
|
Most of what I can see here can be done with built-in commands as well. See "=", "gq" for instance...
|
Anonymous,
December 5, 2003 5:20
|
see also fmt(1) on a BSD System
|
Anonymous,
January 9, 2005 1:47
|
i just think that bush created all this mess
|
Anonymous,
July 29, 2006 15:13
|
par doesn't handle UTF-8.
A workaround is:
cat <file> | iconv -f utf-8 -t <encoding> | par <options> | iconv -f <encoding> -t utf-8
replace <file> with filename, <encoding> with the single byte encoding that can represent the document. If the document is written in greek it is iso-8859-7 if it is east europe iso-8859-2 etc... Replace <options> with the par options you wish to use.
HTH
Preben
|
Anonymous,
November 19, 2006 1:35
|
A patch that adds multibyte characters support to "par" is available:
http://sysmic.org/dotclear/index.php?2006/06/22/55-add-multibyte-characters-support-in-par
|
|