2012-11-22 18 views
7

Wtyczka dodaje do moich mapowań insertów mapowanie dla <leader>is. Mam kilka pomysłów, które mogą być. Ale nie ma znaczenia, że ​​nie chcę niczego zmieniać w zagranicznych wtyczkach. Dlatego chcę wyłączyć to mapowanie. Próbowałem tego:VIM Wyłącz wstawianie mapowań wtyczek

imap <leader>is <nop> 

Nie pomogłem.

Jakie są Twoje sugestie?

BTW, chcę zapytać, jak wyłączyć w vimrc wszystkie mapowania wtyczek wtyczek?

Odpowiedz

10

Aby usunąć mapowanie tryb Insert, użyj polecenia :iunmap:

:iunmap <Leader>is 

nie wiem czy jest to możliwe do zrobienia „usuwanie mapowań luzem”, ale przynajmniej można wymienić wszystkie mapowania aktywny tryb wstawiania z

:imap 

lub, jeszcze lepiej, z

:verbose imap 

whic h również powie Ci, gdzie zostało zdefiniowane mapowanie.


Edit: W celu wyjaśnienia, usuwanie mapowań należy zrobić po plugin został załadowany. Aby to zrobić, utwórz plik o następującej treści: ~/.vim/after/plugin/ (patrz odpowiedź @ ZyX):

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

Vim zwraca błąd: Brak takiego mapowania. Jednak to odwzorowanie nadal znajduje się na liście IMAP. – user14416

+0

@ user14416 Zobacz odpowiedź @ ZyX: Umieszczenie ': iunmap ...' w twoim vimrc nie ma żadnego efektu! Zamiast tego użyj ': verb imap', aby zidentyfikować wtyczkę odpowiedzialną za odwzorowanie, a następnie utwórz katalog" po "dla wtyczki za pomocą polecenia unmapping. – glts

+0

Stworzyłem 'after/plugin/ .vim'. Wciąż brak efektu. – user14416

7

Twoje polecenie, jeśli jest wstawione do vimrc, jest wykonywane przed wtyczką, która definiuje mapowanie intruzyjne i dlatego nie ma żadnego efektu. Aby to działało, powinieneś uruchomić go po tej wtyczce, którą normalnie można osiągnąć, umieszczając ją w ~/.vim/after/plugin/disable_mappings.vim (dowolna nazwa zamiast disable_mappings działa). Po drugie używa się VimEnter zdarzenia:

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

. Aby wyłączyć wszystkie mapowania, zobacz :h 'paste' i :h 'pastetoggle', a także :h :imapclear (chociaż ten drugi usunie odwzorowania zamiast tymczasowego ich wyłączenia).


Oczywiście, można również użyć iunmap tylko gdzie ja zalecane, aby użyć inoremap … <Nop>. Jak mogłem zapomnieć tego polecenia?