Te polecenia w pewien sposób przekształcają jeden zestaw naciśnięć klawiszy na inny, ale jestem nieco rozmyślny, który z nich jest najbardziej odpowiedni w danej sytuacji. Ponadto istnieją również ich !
warianty. W tej chwili ich użycie jest dość przypadkowe, więc czy mogę wiedzieć, jakie są z tym pułapki? Przydatne mogą być w szczególności uwagi na temat różnych wersji trybów, ponieważ nauczyłem się od Petera Rinckera w komentarzu, który cmap
może rozwinąć się praktycznie w dowolnym miejscu linii, i to nie tylko wtedy, gdy używam :
poleceń. Jakie środki ostrożności mogę podjąć przed potencjalnymi pułapkami?
19
Odpowiedzi:
Po pierwsze,
map
inoremap
są podobne w tym, że każde stworzenie mapowania dla normalnego, wizualne, wybierz i operator czeka trybów równocześnie . Vim szczegółowo to w:help map-overview
:Zgodnie z powyższą pomocą, jeśli chcesz ograniczyć mapowanie do określonego trybu, musisz wcześniej:
„n” (dla trybu normalnego), „v” (dla trybu wizualnego i wyboru), „c” (dla polecenia), „x” (dla trybu wizualnego), „s” (dla wyboru), „o” (dla operatora w toku ).
Na przykład,
nmap n nzz
stworzy tryb normalny, mapowanie rekurencyjne
n
.Teraz
noremap
jest tylko nierekurencyjną wersjąmap
.Czym jest mapowanie nierekurencyjne? Vim też ma na to odpowiedź
:help map-recursive
:Przykładem tego jest mapowanie następujących elementów:
:imap j k
:imap k j
Teraz vim zamieni j razy k i k j nieskończoną liczbę razy i dlatego pokaże ci błąd, że stworzyłeś mapowanie rekurencyjne.
Dlatego generalnie zaleca się, aby prawie zawsze (z wyjątkiem
<Plug>
mapowań lub podobnych) używać mapowań nierekurencyjnych. Zapobiega to zawieszaniu się Vima podczas nieumyślnego tworzenia mapowań rekurencyjnych. Mapowanie nierekurencyjne jest zatem bezpieczniejszym sposobem mapowania poleceń w Vimie.Biorąc pod uwagę powyższe informacje, możemy zobaczyć, że
:noreabbrev
jest to nierekurencyjna wersja:abbrev
polecenia.Możesz używać
:abbrev
tylko w trybach wstawiania, zastępowania i poleceń.:abbrev
służy do tworzenia skrótów (skrótów, które Vim może rozwinąć). Krótkie wyjaśnienie polega na użyciu:map
/:noremap
do tworzenia mapowań,:abbrev
/:noreabbrev
do tworzenia skrótów lub za każdym razem, gdy chcesz, aby Vim rozwinął pisanie.źródło
nore
formularzy polecenia map. Innym (i moim zdaniem, ważniejszym) powodem ich użycia jest to, że sprawiają, że twoje mapowania są wiarygodne / przewidywalne. Jeśli użyjesz zwykłego formularza, arhs
zawiera on klucz, który jest mapowany na coś innego, wówczas twoje mapowanie może mieć zupełnie inne zachowanie niż zamierzone.