我正在使用插件来完成括号(我知道它可用,它更像是一次学习练习)。为了正确实现它,我需要添加到退格映射。但是,由于它是一个重要的关键,我宁愿保留现有的功能,只是添加它而不是重新实现功能。这些步骤基本上是在插入模式下并按退格键,执行原始退格键,然后检查某些条件并删除更多字符。
我尝试了类似imap <backspace> <backspace><call_func_here>
的内容,但这似乎无法奏效。同样,我知道我可以将backspace重新映射到该函数并尝试重新创建退格功能,但我不想这样做。
这在vim中是否可行?
答案 0 :(得分:2)
我认为你要做的是以下几点:
inoremap <silent> <BS> <BS><C-o>:call MyFunction()<CR>
inoremap
允许在插入模式下创建非循环映射(在映射中使用nore
通常是个好主意)。 :h :inoremap
<silent>
确切地说,映射不会在命令行上回显(您不会在命令行中看到:call MyFunction()
):h :map-silent
<BS>
是对要重新映射的 backspace 键的引用。<BS>
在此处以插入模式发出退格<C-o>
仅切换到命令的正常模式。 :h i_CTRL-O
:call MyFunction()
是对您的功能的调用,就像在普通模式下一样。<CR>
对应 Enter 键,用于验证对您的函数的调用。