formatting text from within vi

Bill Campbell freebsd at
Sat Feb 11 12:27:28 PST 2006

On Sat, Feb 11, 2006, David Banning wrote:
>I am familiar with the !}fmt used in vi to reformat a paragraph, but
>I wondered how, or if it is possible to do more complex formatting. 

You can format any line or block of text in vi(m) by passing it through an
arbitrary filter program.

I have this line in my ~/.vimrc file which formats whatever paragraph the
cursor is in by running through a script I wrote that formats its standard
using ``groff -mm''.  The ``{'' positions the cursor at the beginning of
the paragraph and the ``!}'' says filter to the end of the paragraph.

map <F5> {!}gfmt

You can also type a command on a line, and execute it replacing the
contents of the line with the output of the program.  If I want to get
copies of all my signature files containing the text ``democracy'' I could
enter the following line, place the cursor somplace in that line, and press

cat `grep -li democracy ~/.signature.*`

INTERNET:   bill at Celestial.COM  Bill Campbell; Celestial Software LLC
URL:  PO Box 820; 6641 E. Mercer Way
FAX:            (206) 232-9186  Mercer Island, WA 98040-0820; (206) 236-1676

Those who profess to favor freedom, and yet depreciate agitation, are
men who want rain without thunder and lightning.  They want the ocean
without the roar of its many waters.
                -- Frederick Douglass

More information about the freebsd-questions mailing list