Vim Tips Wiki
Register
(reword)
(Undo revision 38888 by 68.229.229.20 (talk))
Tags: rollback sourceedit
(12 intermediate revisions by 11 users not shown)
Line 19: Line 19:
   
 
==Formatting a paragraph==
 
==Formatting a paragraph==
You may edit a paragraph consisting of several lines. When finished editing, some lines may be shorter than required. To fix this, in normal mode, type <tt>gqip</tt> to format the "inner paragraph". In this context, "format" means to reflow the paragraph so that all lines are the optimal length.
+
You may edit a paragraph consisting of several lines. When finished editing, some lines may be shorter than required. To fix this, in normal mode, type <code>gqip</code> to format the "inner paragraph". In this context, "format" means to reflow the paragraph so that all lines are the optimal length.
   
 
Alternatively, format options can be set so that a paragraph is reflowed automatically, after each change. {{help|auto-format}}
 
Alternatively, format options can be set so that a paragraph is reflowed automatically, after each change. {{help|auto-format}}
   
An example setting for <tt>formatoptions</tt> (<tt>fo</tt>) is:
+
An example setting for <code>formatoptions</code> (<code>fo</code>) is:
 
<pre>
 
<pre>
 
:setl fo=aw2tq
 
:setl fo=aw2tq
Line 30: Line 30:
 
==Comments==
 
==Comments==
 
{{todo}}
 
{{todo}}
*Explain what above <tt>fo</tt> does, and how to configure so paragraphs do not have the first line indented, and are separated by a blank line.
+
*Explain what above <code>fo</code> does, and how to configure so paragraphs do not have the first line indented, and are separated by a blank line.
*Discuss <tt>:setl fo+=a</tt> and <tt>:setl fo-=a</tt>.
+
*Discuss <code>:setl fo+=a</code> and <code>:setl fo-=a</code>.
 
*Incorporate following comments.
 
*Incorporate following comments.
 
----
 
----
Line 38: Line 38:
 
*[[VimTip989|989 Word wrap without line breaks]]
 
*[[VimTip989|989 Word wrap without line breaks]]
   
The following sets the current buffer so that long lines are automatically wrapped on the screen, with lines only breaking at a space. The mappings move the cursor up/down by screen lines instead of by file lines. There is a space following the backslash for the <tt>'breakat'</tt> option (the <tt>set</tt> command requires a backslash before each space). Each long line will be displayed on the screen as multiple lines.
+
The following sets the current buffer so that long lines are automatically wrapped on the screen, with lines only breaking at a space. The mappings move the cursor up/down by screen lines instead of by file lines. There is a space following the backslash for the <code>'breakat'</code> option (the <code>set</code> command requires a backslash before each space). Each long line will be displayed on the screen as multiple lines.
 
<pre>
 
<pre>
 
setlocal wrap nolist linebreak breakat=\&nbsp;
 
setlocal wrap nolist linebreak breakat=\&nbsp;
Line 54: Line 54:
   
 
----
 
----
  +
If you make a change to a wrapped paragraph and need to re-format it, you can use <code>gq</code> followed by a movement over the area you want to re-format, e.g. <code>3j</code> or <code>}</code>.
  +
  +
Automatic text wrapping and re-formatting with <code>gq</code> can work on comments lines also, provided the value of the {{help|prefix=no|id='comments'}} option is set correctly.

Revision as of 05:40, 3 February 2016

Tip 440 Printable Monobook Previous Next

created 2003 · complexity basic · author Stanislav Sitar · version 6.0


When editing a plain-text file (not a program) it can be useful to have lines automatically broken when a certain length is reached. For example, the following command sets the current buffer so that lines longer than 60 characters are broken (a newline is automatically inserted):

:setlocal textwidth=60
" Following (using abbreviations) is equivalent.
:setl tw=60

Formatting a paragraph

You may edit a paragraph consisting of several lines. When finished editing, some lines may be shorter than required. To fix this, in normal mode, type gqip to format the "inner paragraph". In this context, "format" means to reflow the paragraph so that all lines are the optimal length.

Alternatively, format options can be set so that a paragraph is reflowed automatically, after each change. :help auto-format

An example setting for formatoptions (fo) is:

:setl fo=aw2tq

Comments

 TO DO 

  • Explain what above fo does, and how to configure so paragraphs do not have the first line indented, and are separated by a blank line.
  • Discuss :setl fo+=a and :setl fo-=a.
  • Incorporate following comments.

Sometimes it is useful to keep each paragraph as one long line (that is, do not break the paragraph into lines). See these related tips:

The following sets the current buffer so that long lines are automatically wrapped on the screen, with lines only breaking at a space. The mappings move the cursor up/down by screen lines instead of by file lines. There is a space following the backslash for the 'breakat' option (the set command requires a backslash before each space). Each long line will be displayed on the screen as multiple lines.

setlocal wrap nolist linebreak breakat=\ 
nnoremap j gj
nnoremap k gk
vnoremap j gj
vnoremap k gk

Automatically inserting line breaks is a disaster when editing programs, but is very good for editing a text file. With the following in your vimrc, the settings will only be applied to *.txt files:

au BufEnter *.txt setl tx ts=4 sw=4 fo+=n2a

If you make a change to a wrapped paragraph and need to re-format it, you can use gq followed by a movement over the area you want to re-format, e.g. 3j or }.

Automatic text wrapping and re-formatting with gq can work on comments lines also, provided the value of the 'comments' option is set correctly.