Jak mapować klucze w Vimie

Jak Mapowac Klucze W Vimie



W Vimie mapowanie klawiszy to proces przypisywania zestawu klawiszy lub poleceń do określonego klawisza w celu wykonania określonego zadania. Na przykład, aby zaznaczyć wszystkie linie w pliku, którego używasz ggVG polecenie i aby to zrobić, musisz nacisnąć cztery klawisze. A co powiesz na zrobienie tego tylko jednym naciśnięciem klawisza? Tutaj przydaje się mapowanie klawiszy Vima. Mapowanie klawiszy to sposób na automatyzację wielu często wykonywanych zadań w Vimie. I musieliście o tym słyszeć; jeśli robisz coś więcej niż dwa razy, zautomatyzuj to!

W tym obszernym przewodniku wyjaśnię, jak zmapować klawisze w Vimie, aby zautomatyzować operacje. Od stworzenia podstawowej mapy klawiszy po zaawansowane mapowanie klawiszy, wraz z procesami ich utrwalania i usuwania.

Składnia

Aby zmapować klucz w Vimie, używana jest następująca składnia:







mapa



W powyższej składni:



mapa nmap, imap, vmap, xmap, cmap lub omap
* , ,

*W powyższej składni sekcja jest opcjonalna.

Specjalne argumenty Vima

Argumenty specjalne Vima to znaczniki używane w celu zapewnienia dodatkowej funkcjonalności mapom klawiszy. Argumenty te pojawiają się po poleceniu :map i przed {rhs} i {lhs}.



Na przykład, aby ustawić specyficzny bufor mapy, użyj specjalnego argumentu w następujący sposób:

:mapa < bufor > < C-a > ggVG
Aby ukryć powtarzające się wiadomości z mapy klawiszy
Aby ustawić bufor mapy specyficzny (unikalny dla bieżącego bufora)
Aby wskazać, że mapa jest częścią skryptu lub wtyczki
*Służy do definiowania klawiszy specjalnych do mapowania przy użyciu notacji <> (klawisze funkcyjne, klawisze sterujące, shift i inne klawisze niealfabetyczne)
Wskazuje, że lewa strona mapowania jest wyrażeniem i należy je ocenić, aby uzyskać prawą stronę
Aby mapa była wyjątkowa wśród map lokalnych i globalnych
Aby pominąć oczekiwanie na następny znak polecenia na mapie

Specjalne notacje klawiszy Vima są wymienione na poniższym obrazku.

Na przykład, jeśli chcesz użyć klawisza spacji w mapowaniu klawiszy, zostanie użyta notacja .

Tworzenie podstawowej mapy klawiszy w Vimie

Przyjrzyjmy się mapowaniu klawiszy Vima na podstawowym przykładzie. Chcę zmapować polecenie zaznacz wszystkie linie ( ggVG ) Do ctrl+a Klucze. Aby zmapować klawisze ctrl+a, uruchomię następujące polecenie w Vimie.

:mapa < C-a > ggVG

Tutaj, oznacza klawisz kontrolny I A klucze, podczas gdy ggVG to polecenie zaznaczające wszystkie linie w pliku. The :mapa słowo kluczowe domyślnie służy do mapowania w trybie normalnym, jednak :nmapa może być również użyte jawnie dla normalna tryb.

Podobnie, aby zamapować numer linii, przełącz funkcjonalność za pomocą F1 kluczowe zastosowanie:

:mapa < F1 > :Ustaw numer !

Teraz po naciśnięciu klawisza F1 numer linii zostanie włączony, a ponowne naciśnięcie go wyłącza.

Należy pamiętać, że ta metoda mapuje tylko klucze w bieżącym buforze i zostanie usunięta po zamknięciu bufora.

Lista map klawiszy

Aby wyświetlić listę wszystkich kluczowych mapowań trybu normalnego, wizualnego i oczekującego na operatora, użyj polecenia :map.

:mapa

Aby wyświetlić listę mapowań klawiszy wstawić I wiersz poleceń trybach, użyj :map! Komenda.

:mapa !

Aby wyświetlić listę mapowań klawiszy określonego trybu, po prostu wpisz pierwszą literę trybu przed słowem kluczowym map.

:nmapa Aby wyświetlić mapy w trybie normalnym
:imapa Aby wyświetlić mapy trybu wstawiania
:mapa Aby wyświetlić mapy wizualne i wybrać tryb
:mapa Aby wyświetlić mapy wybranego trybu
:xmapa Aby wyświetlić mapy w trybie wizualnym
:cmap Aby wyświetlić mapy w trybie wiersza poleceń
:omapa Aby wyświetlić mapy trybu operatora oczekującego

Ponadto, aby wyświetlić listę wszystkich map, w tym map wtyczek ze ścieżkami, użyj :pełna mapa Komenda.

:pełna mapa

W przypadku konkretnego klawisza po prostu wspomnij o nim w poleceniu ( :pełna mapa ).

Tworzenie map klawiszy na stałe

Mapy klawiszy wspomniane w powyższej sekcji będą mapować klawisze tylko w bieżącym buforze. Aby mapowania klawiszy Vima były trwałe, mapy muszą zostać umieszczone w pliku vimrc.

Pamiętaj, że podczas umieszczania mapy klawiszy w pliku vimrc pliku, nie dodawaj dwukropka (:) przed mapa Komenda.

Po umieszczeniu mapy klawiszy w pliku vimrc plik, zapisz go i zamknij za pomocą polecenia :wq lub klawiszy Shift+zz. Mapy klawiszy umieszczone w vimrc plik będzie globalny i będzie można go używać we wszystkich sesjach Vima. Jednakże niektóre mapy klawiszy mogą zostać tymczasowo wyłączone, jeśli wpływają na pracę w bieżącej sesji, zobacz sekcję Jak usunąć mapę klawiszy w Vimie poniżej.

The vimrc to plik ustawień Vima, który zawiera różne polecenia i ustawienia. Występuje w /usr/share/vim/ katalog na macOS i /etc/vim na Linuksie. Warto zauważyć, że vimrc pliki we wspomnianych katalogach są plikami specyficznymi dla systemu. Możesz edytować te pliki również w celu mapowania klawiszy, ale zalecam utworzenie pliku specyficznego dla użytkownika vimrc plik w katalogu domowym.

Unikanie rekurencji

Zanim przejdziemy dalej, ważne jest, aby dowiedzieć się o rekurencji w mapowaniu klawiszy Vima. Wady i sposoby zapobiegania. Można to zrozumieć na przykładzie.

:mapa dd 3jdd

W powyższym przykładzie zmapowałem plik dd klawisze, aby przejść o 3 linie w dół i usunąć linię pod kursorem. Teraz, kiedy naciskam dd , spróbuje wykonać mapę 3jdd . Vim zinterpretuje dd polecenie jako mapę i wielokrotnie uruchamiaj mapę, jak pokazano na poniższym obrazku.

Notatka : Rekursja może zawiesić edytor Vima. Aby go odmrozić, naciśnij ctrl+c Klucze.

Aby uniknąć rekurencji, zamień mapa słowo kluczowe z mapa noremapy , Gdzie ' nie ' oznacza nierekurencyjne . Zastąpię mapa słowo kluczowe z mapa noremapy aby naprawić rekurencję w powyższej mapie klawiszy.

:noremapa dd 3jdd

Polecę używać mapa noremapy zamiast mapa aby uniknąć przypadkowego utworzenia mapowania rekurencyjnego.

Tworzenie map klawiszy specyficznych dla trybu

Vim uczynił mapowanie klawiszy tak wszechstronnym, że nawet mapę klawiszy określonego trybu można łatwo utworzyć. Na przykład, jeśli utworzyłeś mapę klawiszy dla trybu wstawiania za pomocą F1 key, możesz zmapować to samo F1 w innym trybie, aby wykonać zupełnie nową operację.

W poniższym przykładzie zmapowałem plik F1 klawisz, aby usunąć 3 linie w pliku normalna mode i przeciągnij 3 linie w wstawić tryb.

:nmapa < F1 > 3dd
:imapa < F1 > < C-t >

Pierwsza mapa usuwa trzy linie w trybie normalnym po naciśnięciu klawisza F1, natomiast druga mapa dodaje jedno wcięcie w bieżącej linii w trybie wstawiania przy użyciu tego samego klawisza. Teraz przyjrzyjmy się mapowaniu w każdym trybie.

Mapowanie trybu normalnego

Aby zastosować mapę w trybie normalnym, użyj tylko mapa słowo kluczowe. Na przykład, aby skopiować wszystkie linie w pliku za pomocą ctrl+c klucze, użyję następującego polecenia.

:nmapa < C-c > ggVGy

Jak wspomniano wcześniej, najlepszą praktyką jest użycie metody nierekurencyjnej do mapowania klucza, dlatego zastąpię metodę mapa z nnoremapa słowo kluczowe.

:nnoremapa < C-c > ggVGy

Umieść go bez dwukropka (:) w vimrc plik, aby uczynić go trwałą mapą klawiszy.

Użyję mapa noremapy zamiast tego mapa w poniższym przykładzie.

Mapowanie trybu wstawiania

Aby przypisać klawisze do trybu wstawiania, po prostu użyj I zamiast N . Na przykład w trybie wstawiania ctrl+p I ctrl+n Klawisze służą do automatycznego uzupełniania słowa w oparciu odpowiednio o dopasowanie do tyłu i do przodu. Aby zmapować ctrl+p klawiszy klawiszem Tab, użyję następującego polecenia.

:inoremap < Patka > < C-str >

Co ważniejsze, jeśli chcesz mapować tryb oczekiwania na operatora polecenia w tryb wstawiania , następnie musisz wstawić po prawej stronie, aby wyjść z trybu wstawiania i wykonać te polecenia. Na przykład w poniższej mapie klawiszy chcę usunąć 3 linie za pomocą ctrl+x klawiszy i ponownie wejdź w tryb wstawiania.

:inoremap < C-x > 3ddi

Teraz, kiedy naciskam ctrl+x klawisze, wydrukuje 3ddi polecenie zamiast je wykonać.

Aby to naprawić, wstawię plik przed 3ddi Komenda.

:inoremap < C-x > < wyjście > 3ddi

Teraz polecenie wykona polecenie trzymania mnie w trybie wstawiania.

W wielu mini laptopach brakuje tej funkcji wyjście klawisz, który jest ważny, aby wyjść z bieżącego trybu. Aby więc zmapować wyjście aby wyjść z trybu wstawiania, można zastosować mapowanie klawiszy. W poniższym przykładzie używam były klawisze, aby wyjść do normalnego trybu.

:inoremap np < wyjście >

Kiedy szybko naciśniesz były klawiszy tryb wstawiania zostanie opuszczony, a tym samym nastąpi przejście do trybu normalnego.

Mapowanie trybu wizualnego

Tryb wizualny jest bardzo istotnym trybem zaznaczania tekstu w edytorze Vima. Oprócz podstawowego wyboru, tryb wizualny ma inne różne tryby, takie jak tryby linii wizualnych i tryby bloków wizualnych.

W trybie wizualnym tylda (~) służy do przełączania wielkości liter. Aby użyć tyldy (~), należy nacisnąć oba klawisze (przesunięcie+~) . W poniższym przykładzie mapuję klawisz c tryb wizualny aby zaznaczyć słowo pod kursorem i zmienić jego wielkość liter.

:vnoremap c iw~

Teraz naciśnij v, aby przejść do trybu wizualnego i naciśnij klawisz c, aby przełączyć słowo pod kursorem, jak pokazano na poniższym GIF-ie.

Mapowanie trybu wiersza poleceń

Wiele podstawowych poleceń Vima działa tylko w trybie wiersza poleceń. Na przykład, aby zapisać plik :w polecenie służy podobnie do zapisywania i kończenia pracy :wq polecenie jest używane. Wszystkie karty i operacje podziału są również wykonywane w trybie wiersza poleceń. Na przykład, aby utworzyć nową kartę, plik : podwładny polecenie jest używane. Cóż, aby szybko utworzyć zakładkę, ctrl+t klucze wystarczą.

:cnoremap < C-t > temat < CR >

Teraz naciśnij dwukropek (:), aby przejść do trybu wiersza poleceń, a następnie ctrl+t aby otworzyć nową kartę; jest to znacznie szybsze niż wpisanie całości temat polecenie i Powrót klucz.

Tworzenie niestandardowych poleceń Vima
Wejście do trybu poleceń w celu wykonania mapy wydaje się mniej przydatne. Ale możesz tworzyć własne niestandardowe polecenia w Vimie za pomocą :Komenda opcja. Ta funkcja bardzo przypomina mapowanie klawiszy Vima. Na przykład, aby utworzyć szybkie polecenie ustawiające numer linii i szerokość tekstu na 80, użyj następującego polecenia.

:polecenie Mycmd :ustaw numer szerokość tekstu = 80

Teraz wejdź w tryb poleceń i wykonaj :Mójcmd Komenda.

Mapowanie trybu oczekującego operatora

Tryb oczekiwania na operatora to tryb, w którym Vim czeka na polecenie ruchu po naciśnięciu klawisza operatora. Typowymi operatorami są y, d i c. Na przykład, aby usunąć bieżącą linię i 3 kolejne linie, użyjesz operatora d 3j ruch (d3j). Nie można nacisnąć tych klawiszy jednocześnie, aby uzyskać żądaną operację.

Ten tryb jest zwykle używany do mapowania ruchów. Zamapujmy ruch, który wybierze bieżącą linię i 3 linie po niej.

:onoremapa < F2 > 3j

Teraz, aby szarpnąć bieżącą linię i 3 linie, po których następuje, użyj theF2 klucze w ten sam sposób D Można również zastosować operator.

Kolejną ważną rzeczą, o której należy pamiętać, jest dodanie liczby do wyżej wspomnianego odwzorowanego ruchu, powiedzmy 2 , mapa przyjmie to jako 23j, a nie 6j. Aby to naprawić, można użyć rejestru wyrażeń „=”. Powyższą mapę można modyfikować m.in @=’3j’ .

:onoremapa < F2 > @ =’3j’ < CR >

Jak mapować zdarzenia myszy

Chociaż Vim jest w pełni konfigurowalnym edytorem tekstu skoncentrowanym na klawiaturze, dostępność funkcji myszy czyni go jeszcze lepszym. Oprócz zwykłych klawiszy klawiatury, wszystkie zdarzenia myszy można również zmapować w Vimie. Na przykład, jeśli chcesz zmapować podwójne kliknięcie prawym i lewym przyciskiem myszy, aby przeskoczyć znaczniki odpowiednio do przodu i do tyłu, użyj poniższego mapowania.

:noremapa < 2 -Prawa myszka > ] `
:noremapa < 2 -Lewa mysz > [ `

Inne zdarzenia myszy, które można zmapować, podano w poniższej tabeli.

<2-Lewa mysz>
<2-Prawa mysz>
<Środkowa Mysz> <Środkowe przeciągnięcie> <3-Lewa mysz>
<3-Prawa mysz>
<4-Lewa mysz>
<4-Prawa mysz>

Jak mapować za pomocą klucza lidera w Vimie

Mapowanie Vima jest niekompletne bez klucza lidera. Klucz lidera to klucz domyślny, którego można używać do mapowania kluczy, nawet jeśli są one mapowane w celu wykonywania innych zadań. Na przykład, jeśli zmapowałeś plik D klawisz, aby usunąć wszystkie linie, możemy zamapować ten sam klawisz, aby usunąć tylko 5 linii za pomocą klawisza lidera.

Dla tych, którzy nie są zaznajomieni z kluczem lidera Vima. Jest to klawisz poprzedzony innym klawiszem lub zestawem kluczy służących do mapowania poleceń lub operacji. Domyślnym kluczem wiodącym Vima jest ukośnik odwrotny (\), ale można go dostosować.

Na przykład dd polecenie służy do usunięcia linii pod kursorem. Jeśli chcesz zmapować dd polecenie usunięcia wszystkich linii w plikach, możesz użyć klawisza wiodącego.

:noremapa < Lider > dd ggVGd

Teraz za każdym razem, gdy naciśniesz \dd klawisz, wszystkie linie w pliku zostaną usunięte. Możesz przypisać klucz lidera Vima jako klawisz kontrolny w Windows lub klawisz poleceń w macOS.

Jak zmapować funkcję Vimscriptu

Edytor Vima nie ogranicza się do poleceń i operacji. Wokół Vima istnieje cały język programowania umożliwiający tworzenie niestandardowych funkcjonalności o nazwie Vimscript. Możesz łatwo utworzyć skrypt lub funkcję i przypisać go do klawisza. Na przykład utwórzmy funkcję, która umożliwi ustawienia takie jak numer linii, funkcjonalność myszy i szerokość tekstu.

funkcjonować Moje ustawienia ( )
ustawić numer
ustawić mysz =a
ustawić szerokość tekstu = 80
funkcja końcowa

Umieść tę funkcję w pliku vimrc.

Zmapujmy tę funkcję za pomocą lidera i klawiszy s. Użyję

:noremapa < Lider > s: zadzwoń do Moich Ustawień ( ) < CR >

Teraz za każdym razem, gdy naciśniesz \S klawiszy, funkcja zostanie wywołana i wykonana zostanie cała funkcjonalność wewnątrz funkcji.

Notatka : Pierwsza litera nazwy funkcji powinna być zawsze pisana wielką literą podczas tworzenia funkcji niestandardowej w Vimie.

Jak mapować polecenia zewnętrzne w Vimie

Polecenia zewnętrzne można również mapować w Vimie. Polecenia zewnętrzne odnoszą się do poleceń systemu Linux lub Unix. Na przykład, jeśli chcesz zmapować plik external sortować polecenie, aby posortować wszystkie linie w bieżącym buforze do F1 klucz, użyj następującego polecenia.

:noremapa < F1 > : %! sortować < CR >

W ten sam sposób, jeśli piszesz plik skryptu i czynisz go wykonywalnym bez opuszczania sesji Vima, możesz użyć chmod polecenie wewnętrznie. Na przykład, aby bieżący plik był wykonywalny, możesz wykonać polecenie :!chmod +x% w Vimie. Jeśli często wykonujesz to zadanie, po prostu przypisz do niego klucz.

:noremapa < F1 > : ! chmod +x %

W Vimie dowolne polecenie zewnętrzne może być użyte z wykrzyknikiem (!).

Jak usunąć mapę klawiszy w Vimie

Aby usunąć mapy klawiszy w Vimie, najpierw określ, gdzie są one zdefiniowane. Jak wspomniano wcześniej, mapy klawiszy mogą być lokalne i trwałe w buforze. Jeśli mapa klawiszy jest trwała i umieszczona w pliku vimrc, zwykłe usunięcie ich z pliku spowoduje usunięcie mapowania klawiszy.

Jeśli mapowanie odbywa się w bieżącym buforze, można je usunąć za pomocą :odmapuj Lub :usuń mapę! polecenia.

  • :odmapuj aby wyczyścić mapy klawiszy trybu normalnego, wizualnego, wyboru lub oczekującego na operatora
  • :usuń mapę! aby wyczyścić mapy klawiszy trybów wstawiania i wiersza poleceń

Na przykład, aby usunąć klawisz, użyj :odmapuj . Co więcej, usunięcie klawiszy może być zależne od trybu. Jeśli chcesz usunąć mapę trybu normalnego, użyj :nunmap . Inne polecenia specyficzne dla trybu służące do usuwania mapy klawiszy są wymienione poniżej:

:mapa zakonnicy Aby usunąć mapy normalna tryb
:iunmap Aby usunąć mapy wstawić tryb
:vunmap Aby usunąć mapy wizualny I wybierać tryb
:mapa słońca Aby usunąć mapy wybierać tryb
:xunmap Aby usunąć mapy wizualny tryb
:cunmapa Aby usunąć mapy wiersz poleceń tryb
:unmap Aby usunąć mapy operator w oczekiwaniu tryb

Aby usunąć wszystkie mapy z bieżącego bufora, użyj opcji :mapaczysta Komenda.

:mapaczysta

Powyższe polecenie wyczyści wszystkie mapy klawiszy w trybie normalnym, wizualnym, wyboru lub oczekującym na operatora.

Aby wyczyścić wszystkie mapy klawiszy trybów wstawiania i wiersza poleceń, użyj:

:mapaczysta !

Zauważ, że domyślne polecenia Vima nie są jasne, jednak można je wyłączyć za pomocą :odmapuj polecenie z . Na przykład, jeśli chcesz wyłączyć funkcję dd, która usuwa linię pod kursorem, użyj :unmap dd .

:odmapuj dd < Nie >

Opcja dd nie będzie już działać w bieżącym buforze. Korzystając z tej metody, można wyłączyć dowolną mapę klawiszy dla bieżącej sesji.

Ściągawka dotycząca mapowania kluczy Vima

Poniższy obraz przedstawia listę wszystkich poleceń i ich konkretnych trybów w celach informacyjnych.

Wniosek

Mapowanie klawiszy Vima to wygodny sposób na automatyzację zadań, często używanych wiązań klawiszy, poleceń i innych operacji. Jest to temat zróżnicowany i w tym przewodniku omówiłem wszystkie główne aspekty związane z mapowaniem klawiszy w Vimie. Od ogólnej składni, przez tworzenie podstawowej mapy klawiszy, aż po mapowanie zaawansowanych funkcji Vimscript i poleceń zewnętrznych. Aby dowiedzieć się więcej o mapowaniu klawiszy Vima, użyj :pomoc w mapowaniu klawiszy polecenie w Vimie.