baumichel找到了把戲。我只是添加一個快速片段的幫助:
首先,作爲autopair-mode
就追加autopair-emulation-alist
,評價:
(defadvice viper-change-state-to-insert (after autopair nil activate)
(add-to-ordered-list 'emulation-mode-map-alists 'autopair-emulation-alist 300))
然後,記得vimpulse-normalize-minor-mode-map-alist
刪除所有viper
鍵盤映射在ALIST的前面,所以執行:
(defadvice vimpulse-normalize-minor-mode-map-alist (after order-viper--key-maps nil activate)
(add-to-ordered-list 'emulation-mode-map-alists 'viper--key-maps 500))
這對我很有用!我對這兩個vimpulse
和autopair
嵌入eval-after-load
評估這些片段。
我的想法是Emacs dev應該重新考慮emulation-mode-map-alists
並使用如下屬性列表索引優先級順序:((:name viper--key-maps :after (cua--keymap-alist autopair-emulation-alist)) (:name viper--intercept-key-maps :before (cua--keymap-alist autopair-emulation-alist)))
。像viper
,CUA
等舊套餐應該更好地維護,因爲我們的設置在Emacs多年後變得醜陋。
謝謝jtahlborn,但它不起作用。首先,autopair-emulation-alist不是鍵盤映射,因此會導致錯誤。因此,我試圖破解autopair.el並在autopair keymap中添加(定義鍵映射[remap viper-delete-backward-char]'autopair-backspace)。仍然沒有運氣。 – xyc0562 2011-05-19 01:48:49
@ xyc0562 - 完成之後,是否將綁定到「autopair-backspace」方法的刪除鍵? – jtahlborn 2011-05-19 03:03:03
@ jtahlborn - 它一直被綁定到和「DEL」,如「描述函數」所示。但問題是,既不也不是「DEL」如果vimpulse是在 –
xyc0562
2011-05-19 04:11:43