2012-03-31 9 views
9

mamvimrc wymiany średnik i dwukropek, ale pozostawić bez zmian w okrężnicy inne <map> s

noremap ; : 
noremap : ; 

Ustaw jako celu uczynienia mnie użyć krótszego naciśnięcie klawisza, aby uzyskać dwukropek. Jednak powoduje to, że moje pozostałe mapowania nie działają, ponieważ teraz zamiast dwukropka umieszcza się średnik.

map ,c :cd ~/code<CR> na przykład staje się map ,c ;cd ~/code<CR>, więc nie działa. Jak mogę to naprawić? Dzięki!

+0

Czy chcesz remapować jelita grubego? Po prostu używam 'nnoremap; : 'i to wszystko. – alberge

+0

@alberge: Używając tylko pierwszego z tych mapowań, przesuwasz w cień polecenie ';' Normal mode. Po dodaniu drugiego odwzorowania zamienione zostają znaczenia ';' i ':'. –

+3

Wow, jak ja nigdy nie myślałem o używaniu tego mapowania? Zamierzam teraz dodać to do mojego .vimrc. – weronika

Odpowiedz

8

Polecenia rodziny :map pozwalają na użycie odwzorowań definicji nowego odwzorowania (w tym samego siebie). Dzięki niemu możliwe jest mapowanie rekurencyjne i odwzorowanie zagnieżdżone. To dlatego mapowanie okrężnicy zostanie zastosowana do innych przekształceń mających charakter jelita grubego, jak

:map ,c :cd ~/code<cr> 

Aby uniknąć tego problemu, należy do rodziny poleceń, które wykonują nie interpretować żadnych odwzorowań w prawej :noremap o definicji mapowania (patrz :help :no)

:noremap ,c :cd ~/code<cr> 

W większości przypadków zakłóceń od innych przekształceń jest niepożądane działania efektu. Z reguły zalecam, aby podczas wprowadzania map stosować konwencję zgodną z następującą konwencją: Należy używać funkcji, chyba że istnieje wyraźny powód, dla którego nie należy tego robić.

Powiązane problemy