(Adjust previous/next navigation) |
JohnBeckett (talk | contribs) (Format.) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 13: | Line 13: | ||
}} |
}} |
||
In insert mode, I would like to |
In insert mode, I would like to |
||
− | #Keep typing without auto-wrap (good for editing vimrc and |
+ | #Keep typing without auto-wrap (good for editing vimrc and C). |
− | #Wrap long |
+ | #Wrap long lines at will (good for email and text). |
− | |||
⚫ | |||
⚫ | |||
<pre> |
<pre> |
||
set sr fo=roqm1 tw=64 |
set sr fo=roqm1 tw=64 |
||
− | im |
+ | im <C-B> <C-O>:setl sr! fo<C-R>=strpart("-+",&sr,1)<CR>=tc<CR>_<BS><Right> |
</pre> |
</pre> |
||
− | By default, it goes without auto-wrap. If I want, I can type |
+ | By default, it goes without auto-wrap. If I want, I can type <C-B> to toggle auto-wrap. Another <C-B> toggles back. |
Basically it toggles two settings: |
Basically it toggles two settings: |
||
− | |||
<pre> |
<pre> |
||
− | :set fo+=tc |
+ | :set fo+=tc<CR> |
− | :set fo-=tc |
+ | :set fo-=tc<CR> |
</pre> |
</pre> |
||
− | strpart() is used for toggling; "sr" is choosing for no good reason; "_" can be any char; |
+ | strpart() is used for toggling; "sr" is choosing for no good reason; "_" can be any char; <BS><Right> is needed to toggle this action. |
==Comments== |
==Comments== |
||
+ | A better toggle command, which doesn't just abuse the sr setting for a toggle switch would be: |
||
+ | <pre> |
||
+ | imap <C-B> :call AutoWrapToggle()<CR> |
||
+ | function! AutoWrapToggle() |
||
+ | if &formatoptions =~ 't' |
||
+ | set fo-=t |
||
+ | else |
||
+ | set fo+=t |
||
+ | endif |
||
+ | endfunction |
||
+ | </pre> |
||
+ | |||
+ | ---- |
||
+ | |||
I found on Unix, we don't need the last part of the map. |
I found on Unix, we don't need the last part of the map. |
||
− | im |
+ | im <C-B> <C-O>:setl sr! fo<C-R>=strpart("-+",&sr,1)<CR>=tc<CR> |
---- |
---- |
||
Line 48: | Line 60: | ||
---- |
---- |
||
+ | |||
+ | To easily turn on and off automatic line wrapping, there are "wrap" and "nowrap" options. For example, wrapping can be enabled thus: |
||
+ | |||
+ | set wrap |
||
+ | |||
+ | Or to disable, use: |
||
+ | |||
+ | set nowrap |
||
+ | |||
+ | You may also need to set `textwidth`, which controls the line size (not just the presentation of the line). To turn of the text width, use: |
||
+ | |||
+ | set textwidth=0 |
||
+ | |||
+ | To set a line to 80 characters, use: |
||
+ | |||
+ | set textwidth=80 |
||
+ | |||
+ | For more, `help textwidth` or `help wrap`. |
Revision as of 02:12, 5 November 2014
created March 11, 2003 · complexity basic · author Xiangjiang Ma · version 6.0
In insert mode, I would like to
- Keep typing without auto-wrap (good for editing vimrc and C).
- Wrap long lines at will (good for email and text).
Following is the map I figured out, using <C-B>:
set sr fo=roqm1 tw=64 im <C-B> <C-O>:setl sr! fo<C-R>=strpart("-+",&sr,1)<CR>=tc<CR>_<BS><Right>
By default, it goes without auto-wrap. If I want, I can type <C-B> to toggle auto-wrap. Another <C-B> toggles back.
Basically it toggles two settings:
:set fo+=tc<CR> :set fo-=tc<CR>
strpart() is used for toggling; "sr" is choosing for no good reason; "_" can be any char; <BS><Right> is needed to toggle this action.
Comments
A better toggle command, which doesn't just abuse the sr setting for a toggle switch would be:
imap <C-B> :call AutoWrapToggle()<CR> function! AutoWrapToggle() if &formatoptions =~ 't' set fo-=t else set fo+=t endif endfunction
I found on Unix, we don't need the last part of the map.
im <C-B> <C-O>:setl sr! fo<C-R>=strpart("-+",&sr,1)<CR>=tc<CR>
Just found that it is not related Unix or Windows.
It is a settting of virtualedit. For current vim version (6.1), if we
:set virtualedit=insert
We need the last part in the map, otherwise, we don't need it.
To easily turn on and off automatic line wrapping, there are "wrap" and "nowrap" options. For example, wrapping can be enabled thus:
set wrap
Or to disable, use:
set nowrap
You may also need to set `textwidth`, which controls the line size (not just the presentation of the line). To turn of the text width, use:
set textwidth=0
To set a line to 80 characters, use:
set textwidth=80
For more, `help textwidth` or `help wrap`.