<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>"