2015-09-27 65 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>對應於輸入鍵驗證對您的功能的調用。