|
|
| Line 14: |
Line 14: |
| |
|
|
|
| |
<pre> |
|
<pre> |
| − |
map <F2> :set wrap!<CR> |
+ |
map <F2> :set wrap!<CR> |
| |
</pre> |
|
</pre> |
| |
|
|
|
| |
Nicer, more elaborate versions of this idea exist, such as: |
|
Nicer, more elaborate versions of this idea exist, such as: |
| |
<pre> |
|
<pre> |
| − |
nnoremap <F8> :set wrap! wrap?<CR> |
+ |
nnoremap <F8> :set wrap! wrap?<CR> |
| − |
imap <F8> <C-O><F8> |
+ |
imap <F8> <C-O><F8> |
| |
</pre> |
|
</pre> |
| |
|
|
|
| Line 32: |
Line 32: |
| |
" Map key to toggle opt |
|
" Map key to toggle opt |
| |
function MapToggle(key, opt) |
|
function MapToggle(key, opt) |
| − |
let cmd = ':set '.a:opt.'! \| set '.a:opt."?\<CR>" |
+ |
let cmd = ':set '.a:opt.'! \| set '.a:opt."?\<CR>" |
| |
exec 'nnoremap '.a:key.' '.cmd |
|
exec 'nnoremap '.a:key.' '.cmd |
| − |
exec 'inoremap '.a:key." \<C-O>".cmd |
+ |
exec 'inoremap '.a:key." \<C-O>".cmd |
| |
endfunction |
|
endfunction |
| − |
command -nargs=+ MapToggle call MapToggle(<f-args>) |
+ |
command -nargs=+ MapToggle call MapToggle(<f-args>) |
| |
|
|
|
| |
" Display-altering option toggles |
|
" Display-altering option toggles |
| − |
MapToggle <F1> hlsearch |
+ |
MapToggle <F1> hlsearch |
| − |
MapToggle <F2> wrap |
+ |
MapToggle <F2> wrap |
| − |
MapToggle <F3> list |
+ |
MapToggle <F3> list |
| |
|
|
|
| |
" Behavior-altering option toggles |
|
" Behavior-altering option toggles |
| − |
MapToggle <F10> scrollbind |
+ |
MapToggle <F10> scrollbind |
| − |
MapToggle <F11> ignorecase |
+ |
MapToggle <F11> ignorecase |
| − |
MapToggle <F12> paste |
+ |
MapToggle <F12> paste |
| − |
set pastetoggle=<F12> |
+ |
set pastetoggle=<F12> |
| |
</pre> |
|
</pre> |
| |
|
|
|
| Line 54: |
Line 54: |
| |
|
|
|
| |
==Comments== |
|
==Comments== |
| − |
|
|
| − |
---- |
|
Latest revision as of 23:32, September 29, 2008
A fairly well-known mapping to toggle boolean options is:
map <F2> :set wrap!<CR>
Nicer, more elaborate versions of this idea exist, such as:
nnoremap <F8> :set wrap! wrap?<CR>
imap <F8> <C-O><F8>
which displays the current value of the option after toggling it, and works both in normal and insert mode.
However, that definition quickly clutters up your vimrc, and is a pain to edit due to the redundant occurrences of the toggle key and option.
Wrapping the definition in a function solves the problem, and makes the toggle definition a one-line operation again:
" Map key to toggle opt
function MapToggle(key, opt)
let cmd = ':set '.a:opt.'! \| set '.a:opt."?\<CR>"
exec 'nnoremap '.a:key.' '.cmd
exec 'inoremap '.a:key." \<C-O>".cmd
endfunction
command -nargs=+ MapToggle call MapToggle(<f-args>)
" Display-altering option toggles
MapToggle <F1> hlsearch
MapToggle <F2> wrap
MapToggle <F3> list
" Behavior-altering option toggles
MapToggle <F10> scrollbind
MapToggle <F11> ignorecase
MapToggle <F12> paste
set pastetoggle=<F12>