Kim Schulz asked on November 12, 2006 12:30 PM
>
> Hi,
>
> I am currently looking into different tricks for formatting
> text, code, etc. in Vim. I guess most users know the format-
> paragraph command gqq or the reindent entire code 1G=G But are
> there any other neat tricks - which ones are your favorites?
Here's what I have in my vimrc (some long lines might get wrapped
by the email system);
"Some mappings related to use of Text::Autoformat:
"Using embedded perl:
"-------------------
if(has('perl'))
command! -range=% Format :
\ perl {
\ use Text::Autoformat;
\ my $n_line1 = VIM::Eval('<line1>');
\ my $n_line2 = VIM::Eval('<line2>');
\ my $foo= join "\n", $curbuf->Get($n_line1 ..
$n_line2);
\ my $tw=VIM::Eval('&textwidth');
\ $tw or $tw = 72;
\ my $ft=VIM::Eval('&filetype');
\ $ft = ($ft eq 'mail') ? 1 : 0;
\ my $formatted = autoformat($foo, {right=>$tw,
all=>1, mail=>$ft});
\ my @formatted_lines = split '\n', $formatted;
\ $curbuf->Delete($n_line1, $n_line2);
\ $curbuf->Append($n_line1-1, @formatted_lines,
'');
\ }
"Shortcut for formatting the paragraph around the cursor:
nnoremap =p {}:'`,Format<cr>
"Format the stuff over the _previous_ motion:
nnoremap <F4> :'`,Format<cr>y<esc>
"Format the visual selection:
vnoremap <F4> :Format<cr>
endif
"Using external (rather than embedded) perl:
"------------------------------------------
"Via the ={motion} command:
nnoremap = :execute 'setlocal equalprg=perl\
\-MText::Autoformat\ -e\
\\"{autoformat{all=>1'.
\',\ right=>'
\.(&tw?&tw:72).
\',\ mail=>'.
\(&ft=='mail'?1:0).
\'};}\"'
\<cr>=
"Shortcut for formatting the range .,$:
nnoremap <F3> :execute '.,$!perl -MText::Autoformat -e
\ "{autoformat{all=>1, right=>' .
\ (&tw ? &tw : 72) .
\ ', mail=>'.
\ (&ft=='mail'?1:0).
\ '};}"'<cr>