添加到映射而不是完全重新映射

时间:2015-09-27 21:33:28

标签: vim

我正在使用插件来完成括号(我知道它可用,它更像是一次学习练习)。为了正确实现它,我需要添加到退格映射。但是,由于它是一个重要的关键,我宁愿保留现有的功能,只是添加它而不是重新实现功能。这些步骤基本上是在插入模式下并按退格键,执行原始退格键,然后检查某些条件并删除更多字符。

我尝试了类似imap <backspace> <backspace><call_func_here>的内容,但这似乎无法奏效。同样,我知道我可以将backspace重新映射到该函数并尝试重新创建退格功能,但我不想这样做。

这在vim中是否可行?

1 个答案:

答案 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 键,用于验证对您的函数的调用。