2012-11-22 3 views
7

Un plug-in aggiunge alla mappatura degli inserimenti una mappatura per <leader>is. Ho alcune idee su quale può essere. Ma non importa non voglio cambiare nulla nei plugin stranieri. Quindi voglio disabilitare questa mappatura. Ho provato questo:VIM Disabilita mappature degli inserti dei plugin

imap <leader>is <nop> 

Non ho aiutato.

Quali sono i tuoi suggerimenti?

BTW, voglio chiedere come disabilitare in vimrc tutto l'inserimento di mapping dei plugin?

risposta

10

Per rimuovere una mappatura modalità di inserimento, utilizzare il comando :iunmap:

:iunmap <Leader>is 

Non so se sia possibile fare "unmapping rinfusa", ma almeno è possibile elencare tutte le mappature modalità di inserimento attivo con

:imap 

o, meglio ancora, con

:verbose imap 

whic h ti dirà anche dove la mappatura è stata definita in primo luogo.


Edit: Per chiarire, l'unmapping deve essere fatto dopo il plugin è stato caricato. Per fare ciò, creare un file con il seguente contenuto in ~/.vim/after/plugin/ (vedi @ risposta di ZYX):

" myafter.vim: will be executed after plugins have been loaded 
iunmap <Leader>is 
+0

Vim restituisce un errore: Che non c'è tale mappatura. Tuttavia, questa mappatura è ancora nella lista imap. – user14416

+0

@ user14416 Vedi @ ZyX's answer: Mettere ': iunmap ...' nel tuo vimrc non ha alcun effetto! Usa invece ': verbo imap' per identificare il plugin responsabile della mappatura, quindi crea una directory" dopo "per il plugin con il tuo comando di annullamento della mappatura. – glts

+0

Ho creato 'after/plugin/ .vim'. Ancora nessun effetto. – user14416

7

Il comando se inserito nel vimrc viene eseguito prima che il plugin definisca la mappatura intrusiva ed è per questo che non ha alcun effetto. Per renderlo efficace, è necessario eseguirlo dopo quel plug-in che normalmente viene ottenuto inserendolo in ~/.vim/after/plugin/disable_mappings.vim (qualsiasi nome invece di disable_mappings funziona). In secondo luogo sta usando VimEnter evento:

augroup DisableMappings 
    autocmd! VimEnter * :inoremap <leader>ic <Nop> 
augroup END 

. Per disabilitare tutti i mapping vedere :h 'paste' e :h 'pastetoggle', anche :h :imapclear (sebbene quest'ultimo rimuoverà i mapping invece di disabilitarli temporaneamente).


Naturalmente, si può anche utilizzare iunmap proprio dove ho suggerito di usare inoremap … <Nop>. Come sono arrivato a dimenticare questo comando?