No edit summary |
Tags: Visual edit apiedit |
||
(18 intermediate revisions by 12 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{TipImported |
||
− | {{review}} |
||
− | {{Tip |
||
|id=850 |
|id=850 |
||
+ | |previous=848 |
||
− | |title=automatic word wrapping |
||
+ | |next=851 |
||
− | |created= |
+ | |created=2005 |
|complexity=basic |
|complexity=basic |
||
|author=mmj |
|author=mmj |
||
− | |version= |
+ | |version=6.0 |
|rating=42/27 |
|rating=42/27 |
||
+ | |category1=Options |
||
− | |text= |
||
+ | |category2=Usage |
||
− | To automatically wrap word in vim |
||
⚫ | |||
+ | You can set the text width using <code>:set textwidth=n</code> (or <code>:set tw=n</code>) where n is a positive integer, for example: |
||
+ | <pre> |
||
⚫ | |||
+ | </pre> |
||
+ | Also make sure that you have the "t" formatoption set! |
||
+ | <pre> |
||
+ | :set formatoptions+=t |
||
+ | </pre> |
||
+ | That will automatically wrap text as close to 79 characters as white space allows without exceeding the 79 character limit. This option wraps at word boundaries. |
||
⚫ | |||
+ | The textwidth option can be unset using: |
||
− | which sets a wrap margin of 2 characters at the end of each |
||
+ | <pre> |
||
+ | :set tw=0 |
||
+ | </pre> |
||
+ | If you want to apply this to specific areas; bring the cursor at the beginning of the text you want to format and type <code>gq</code>. Now specify the range, say <code>$</code> to format a large line. |
||
− | line, and does automatic word-wrapping as u type in text. |
||
+ | <pre> |
||
+ | :set wm=2 |
||
+ | </pre> |
||
+ | sets a wrap margin of 2 characters from the right window border. A [[File format|system-dependent EOL character]] is inserted and the line wraps as you type. This option may be useful in some situations, but probably is not what you are looking for. |
||
+ | Use |
||
+ | <pre> |
||
+ | gq |
||
+ | </pre> |
||
+ | on a line or paragraph that is too long, and vim will wrap it automatically at your assigned textwidth. |
||
− | To set textwidth as of your screen with do |
||
+ | The above methods will do a "hard" wrap of your text, by inserting newline characters. An alternative method is a "soft" wrap which does not change the text but simply displays it on multiple lines. This can be achieved with: |
||
− | :set textwidth=0 (If u want to set it yourself do :set textwidth=78.) |
||
+ | <pre> |
||
+ | :set wrap linebreak nolist |
||
+ | </pre> |
||
+ | Note that this may lead to a bunch of screen lines being taken up by only a single "real" line, so commands like j and k which move on real lines will skip over a lot of screen lines. You can use gj and gk to move by screen lines. |
||
+ | ==References== |
||
− | If you want to apply this to specific areas; bring the cursor at |
||
+ | *{{help|'textwidth'}} |
||
+ | *{{help|'wrapmargin'}} |
||
+ | *{{help|'linebreak'}} |
||
⚫ | |||
− | the beginning of the text u want to format and type gq. Now specify the range, |
||
+ | This doesn't work in vim7.3. I get no text wrapping with these options: |
||
+ | :set |
||
− | say $ to format a large line. |
||
+ | --- Options --- |
||
− | |||
+ | autoindent hidden scroll=42 tabstop=4 |
||
− | |||
+ | background=dark history=50 shiftwidth=4 textwidth=78 |
||
− | |||
+ | comments=:# hlsearch showcmd ttyfast |
||
− | For more help |
||
+ | commentstring=#%s ignorecase showmatch ttymouse=xterm2 |
||
− | |||
+ | define=[^A-Za-z_] incsearch smartcase viminfo='20,"50 |
||
− | [http://vimplugin.sf.net/cgi-bin/help?tag={{urlencode:wm}} :help wm] |
||
+ | expandtab modified smartindent visualbell |
||
− | |||
+ | filetype=perl pastetoggle=<F11> softtabstop=4 t_Sb=^[[4%dm |
||
− | [http://vimplugin.sf.net/cgi-bin/help?tag={{urlencode:gq}} :help gq] |
||
+ | helplang=en ruler syntax=perl t_Sf=^[[3%dm |
||
− | |||
+ | backspace=indent,eol,start |
||
− | |||
+ | errorformat=%f:%l:%m |
||
− | |||
+ | fileencoding=utf-8 |
||
− | Hope this helps. |
||
+ | fileencodings=ucs-bom,utf-8,latin1 |
||
− | |||
+ | formatoptions=bctloq |
||
− | mmj |
||
+ | guicursor=n-v-c:block,o:hor50,i-ci:hor15,r-cr:hor30,sm:block,a:blinkon0 |
||
⚫ | |||
+ | include=\<\(use\|require\)\> |
||
− | |||
+ | includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','') |
||
⚫ | |||
+ | indentexpr=GetPerlIndent() |
||
− | That should be [http://vimplugin.sf.net/cgi-bin/help?tag={{urlencode:wm}} :help wm] (wrapmargin). |
||
+ | indentkeys=0{,0},:,0#,!^F,o,O,e,0=,0),0],0=or,0=and |
||
− | |||
+ | isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,=,: |
||
− | john AT beever.nl |
||
+ | keywordprg=perldoc -f |
||
− | , January 11, 2005 3:37 |
||
---- |
---- |
||
+ | This feature has worked for many years in every version of Vim since it was introduced. What were you expecting to happen? What happened instead? With the settings above, you should see the text automatically reflow whenever you type text that goes beyond the 78th column. But just setting these options won't automatically wrap anything until you type. And when it does wrap, it will do so by inserting newlines. --[[User:Fritzophrenic|Fritzophrenic]] ([[User talk:Fritzophrenic|talk]]) 18:11, July 10, 2015 (UTC) |
||
− | set textwidth=72 is more useful. |
||
− | |||
− | [http://vimplugin.sf.net/cgi-bin/help?tag={{urlencode:'textwidth'}} :help 'textwidth'] |
||
− | [http://vimplugin.sf.net/cgi-bin/help?tag={{urlencode:'wrapmargin'}} :help 'wrapmargin'] |
||
− | |||
− | to check out the differences. |
||
− | |||
− | '''Anonymous''' |
||
− | , February 16, 2005 13:59 |
||
---- |
---- |
||
+ | The problem turned out to be that I had to remove the 'l' (lowercase L) from formatoptions before word-wrapping would work. -- 14:51, July 13, 2015 (UTC) |
||
− | <!-- parsed by vimtips.py in 0.536962 seconds--> |
Revision as of 14:53, 13 July 2015
You can set the text width using :set textwidth=n
(or :set tw=n
) where n is a positive integer, for example:
:set tw=79
Also make sure that you have the "t" formatoption set!
:set formatoptions+=t
That will automatically wrap text as close to 79 characters as white space allows without exceeding the 79 character limit. This option wraps at word boundaries.
The textwidth option can be unset using:
:set tw=0
If you want to apply this to specific areas; bring the cursor at the beginning of the text you want to format and type gq
. Now specify the range, say $
to format a large line.
:set wm=2
sets a wrap margin of 2 characters from the right window border. A system-dependent EOL character is inserted and the line wraps as you type. This option may be useful in some situations, but probably is not what you are looking for.
Use
gq
on a line or paragraph that is too long, and vim will wrap it automatically at your assigned textwidth.
The above methods will do a "hard" wrap of your text, by inserting newline characters. An alternative method is a "soft" wrap which does not change the text but simply displays it on multiple lines. This can be achieved with:
:set wrap linebreak nolist
Note that this may lead to a bunch of screen lines being taken up by only a single "real" line, so commands like j and k which move on real lines will skip over a lot of screen lines. You can use gj and gk to move by screen lines.
References
Comments
This doesn't work in vim7.3. I get no text wrapping with these options:
- set
--- Options ---
autoindent hidden scroll=42 tabstop=4 background=dark history=50 shiftwidth=4 textwidth=78 comments=:# hlsearch showcmd ttyfast commentstring=#%s ignorecase showmatch ttymouse=xterm2 define=[^A-Za-z_] incsearch smartcase viminfo='20,"50 expandtab modified smartindent visualbell filetype=perl pastetoggle=<F11> softtabstop=4 t_Sb=^[[4%dm helplang=en ruler syntax=perl t_Sf=^[[3%dm backspace=indent,eol,start errorformat=%f:%l:%m fileencoding=utf-8 fileencodings=ucs-bom,utf-8,latin1 formatoptions=bctloq guicursor=n-v-c:block,o:hor50,i-ci:hor15,r-cr:hor30,sm:block,a:blinkon0 include=\<\(use\|require\)\> includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm',) indentexpr=GetPerlIndent() indentkeys=0{,0},:,0#,!^F,o,O,e,0=,0),0],0=or,0=and isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,=,: keywordprg=perldoc -f
This feature has worked for many years in every version of Vim since it was introduced. What were you expecting to happen? What happened instead? With the settings above, you should see the text automatically reflow whenever you type text that goes beyond the 78th column. But just setting these options won't automatically wrap anything until you type. And when it does wrap, it will do so by inserting newlines. --Fritzophrenic (talk) 18:11, July 10, 2015 (UTC)
The problem turned out to be that I had to remove the 'l' (lowercase L) from formatoptions before word-wrapping would work. -- 14:51, July 13, 2015 (UTC)