2015-09-27 43 views
0

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

我试过类似imap <backspace> <backspace><call_func_here>的东西,但这似乎不起作用。同样,我知道我可以将退格重新映射到该函数,并尝试重新创建退格功能,但我宁愿不这样做。

这可能在vim中吗?

+0

Backspace是由您的插件提供的东西吗?或者你的意思是插入一个实际的退格? – FDinoff

+0

使用插件时按下退格键会执行实际的退格(删除一个字符),然后检查是否删除了一个关闭字符,并删除该字符串,如果该字符串之间没有任何内容。我想我能做的就是将它映射到一个函数,然后调用unmap,调用backspace,然后工作,然后设置映射。马上尝试 – user3442536

+0

老实说。我不知道你在做什么。但'exec'正常!\ “'应该在没有映射的情况下执行退格。 – FDinoff

回答

2

我认为你正在尝试做的是以下几点:

inoremap <silent> <BS> <BS><C-o>:call MyFunction()<CR> 
  • inoremap允许创建插入模式非经常性映射(它往往是在你的映射,以使用nore一个好主意) 。 :h :inoremap
  • <silent>准确的映射不会在命令行上(你不会看到在命令行:call MyFunction():h :map-silent
  • <BS>是提到要重新映射退格键呼应。
  • 第二个<BS>在这里是在插入模式下发出退格
  • <C-o>只有一个命令切换到正常模式。 :h i_CTRL-O
  • :call MyFunction()是对你的功能的调用方式,你会在正常模式下进行。
  • <CR>对应于输入键验证对您的功能的调用。