2012-11-22 2 views
7

Ein Plugin fügt meinen Insert-Mappings ein Mapping für <leader>is hinzu. Ich habe ein paar Ideen, welche es sein kann. Aber es macht nichts, ich will nichts an fremden Plugins ändern. Also ich möchte diese Zuordnung deaktivieren. Ich habe es versucht:VIM Insert-Mappings von Plugins deaktivieren

imap <leader>is <nop> 

Ich habe nicht geholfen.

Was sind Ihre Vorschläge?

BTW, ich möchte fragen, wie in vimrc alle Einfüge-Mapping von Plugins deaktivieren?

Antwort

10

Sie einen Insert-Modus-Mapping, verwenden Sie den Befehl :iunmap zu entfernen:

:iunmap <Leader>is 

Ich weiß nicht, ob es möglich ist, „bulk unmapping“ zu tun, aber zumindest können Sie alle aktiven Einfügemodus Mappings Liste mit

:imap 

oder, noch besser, mit

:verbose imap 

whic h teilt Ihnen auch mit, wo das Mapping ursprünglich definiert wurde.


Edit: Um zu klären, muss der unmapping getan werden nach das Plugin geladen wurde. Dazu erstellen Sie eine Datei mit folgendem Inhalt in ~/.vim/after/plugin/ (siehe @ ZYX Antwort):

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

Vim gibt einen Fehler zurück: Dass es keine solche Abbildung ist. Dieses Mapping befindet sich jedoch immer noch in der Imap-Liste. – user14416

+0

@ user14416 Siehe @ ZyX's Antwort: Putting ': iunmap ...' in Ihrem vimrc hat keine Wirkung! Verwenden Sie stattdessen ': verb imap', um das Plugin zu identifizieren, das für das Mapping verantwortlich ist, und erstellen Sie dann ein" after "-Verzeichnis für das Plugin mit Ihrem Unmapping-Befehl. – glts

+0

Ich erstellte 'nach/plugin/ .vim'. Immer noch keine Wirkung. – user14416

7

Ihr Befehl wird, wenn er in vimrc eingefügt wird, ausgeführt, bevor das Plug-in die intrusive Zuordnung definiert. Aus diesem Grund hat es keine Wirkung. Um es wirksam zu machen, sollten Sie es nach dem Plugin laufen lassen, was normalerweise erreicht wird, indem Sie es in ~/.vim/after/plugin/disable_mappings.vim setzen (irgendein Name anstelle von disable_mappings funktioniert). Zweitens wird mit VimEnter Ereignis:

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

. Um alle Zuordnungen zu deaktivieren, siehe :h 'paste' und :h 'pastetoggle', auch :h :imapclear (obwohl Letzteres Zuordnungen entfernen wird, anstatt sie vorübergehend zu deaktivieren).


Natürlich können Sie auch iunmap verwenden nur, wo ich inoremap … <Nop> verwenden vorgeschlagen. Wie bin ich dazu gekommen, diesen Befehl zu vergessen?