如何 enable/disable "function" (if ... else)
How to enable/disable "function" (if ... els)
我有以下键盘映射:
nnoremap <silent> <leader>vn :call Number()<CR>
function! Number()
set number relativenumber
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
augroup END
endfunction
nnoremap <silent> <leader>vN :call NoNumber()<CR>
function! NoNumber()
set number! norelativenumber
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave * set norelativenumber
autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
augroup END
endfunction
但我只想使用一个 <leader>vn
快捷方式;即如果 Number 已经被调用,则调用 NoNumber。这样做的正确方法是什么?
好像我可以在 Number 函数中使用 if ... else
,但我不确定如何正确实现它。或者有其他方法吗?
只需检查选项 number
是否已设置:
if &number
set nonumber
else
set number
endif
请参阅 docs 使用 &option
。
您可以将 if
与映射结合使用:
:nnoremap <silent> <leader>vn :if &number | call NoNumber() | else | call Number() | endif<CR>
我有以下键盘映射:
nnoremap <silent> <leader>vn :call Number()<CR>
function! Number()
set number relativenumber
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
augroup END
endfunction
nnoremap <silent> <leader>vN :call NoNumber()<CR>
function! NoNumber()
set number! norelativenumber
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave * set norelativenumber
autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
augroup END
endfunction
但我只想使用一个 <leader>vn
快捷方式;即如果 Number 已经被调用,则调用 NoNumber。这样做的正确方法是什么?
好像我可以在 Number 函数中使用 if ... else
,但我不确定如何正确实现它。或者有其他方法吗?
只需检查选项 number
是否已设置:
if &number
set nonumber
else
set number
endif
请参阅 docs 使用 &option
。
您可以将 if
与映射结合使用:
:nnoremap <silent> <leader>vn :if &number | call NoNumber() | else | call Number() | endif<CR>