<C-a> 和 C-x> 绑定在 vim 中未映射时递增或递减数字
Increment or decrement numbers while <C-a> and C-x> bindings are unmapped in vim
我在我的 vimrc 中保留 increment/decrement 绑定 <C-a>
和 <C-x>
未映射,因为我很少需要它们,如果在开发过程中不知不觉地按下它们,它们会引起很多麻烦。
对于我确实需要此功能的极少数情况,有没有一种方法可以调用 increment/decrement 操作而无需再次临时绑定它们?
不确定您是否可以“完全”避免再次临时绑定它们,但是您可以在配置中编写一个函数来本地绑定、递增和本地解除绑定。像
function! g:Increment()
nnoremap <buffer> <C-a> <C-a>
exe "normal \<C-a>"
:nunmap <buffer> <C-a>
endfunction
和递减的模拟。
然后您可以将光标放在您想要递增的值上,然后 运行 :call Increment()
。
已经重新映射或取消映射的绑定仍然可以通过以下 ex 命令形式执行:
:exe "normal! [binding]"
所以为了回答我原来的问题,我可以执行 <C-a>
或 <C-x>
,同时使用以下 ex 命令取消映射:
# Increment
:exe "normal! \<C-A>"
# Decrement
:exe "normal! \<C-X>"
我在我的 vimrc 中保留 increment/decrement 绑定 <C-a>
和 <C-x>
未映射,因为我很少需要它们,如果在开发过程中不知不觉地按下它们,它们会引起很多麻烦。
对于我确实需要此功能的极少数情况,有没有一种方法可以调用 increment/decrement 操作而无需再次临时绑定它们?
不确定您是否可以“完全”避免再次临时绑定它们,但是您可以在配置中编写一个函数来本地绑定、递增和本地解除绑定。像
function! g:Increment()
nnoremap <buffer> <C-a> <C-a>
exe "normal \<C-a>"
:nunmap <buffer> <C-a>
endfunction
和递减的模拟。
然后您可以将光标放在您想要递增的值上,然后 运行 :call Increment()
。
已经重新映射或取消映射的绑定仍然可以通过以下 ex 命令形式执行:
:exe "normal! [binding]"
所以为了回答我原来的问题,我可以执行 <C-a>
或 <C-x>
,同时使用以下 ex 命令取消映射:
# Increment
:exe "normal! \<C-A>"
# Decrement
:exe "normal! \<C-X>"