与大多数vim
用户一样,我有一个方便的<Esc>
快捷方式:
:nnoremap ;j <Esc>
但是现在我有以下情况:
我有一个函数,它在我的文档中插入if statement
:
autocmd FileType c nnoremap <localleader>si :call RemapTabC()<CR>iif ()<CR>{<CR>}<Esc>--f)i
RemapTabC()
看起来像这样:
function RemapTabC()
inoremap <buffer> <Tab> <Esc>:call UnmapTab()<CR>jo
inoremap <buffer> <Esc> <Esc>:call UnmapTab()
endfunction
我认为这个错误应该是显而易见的。
我使用<localleader>si
,然后会出现模板。我的光标在条件子句中。现在我输入我想要的东西,现在我有两个选择:
;j
,因为它将直接映射到<Esc>
,而不是我重新映射的<Esc>
。我可以递归地制作nnoremap ;j <Esc>
,但我真的害怕它会造成严重破坏。我还有其他选择吗?
答案 0 :(得分:1)
您可以尝试改为倾听InsertLeave
事件,而不是使用<esc>
。
您也可以让<tab>
始终处于活动状态并准备跳转到下一个占位符 - 是的,最后,您将定义已经定义了几个“大”插件。