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
- Specjalne argumenty Vima
- Tworzenie podstawowej mapy klawiszy
- Lista map klawiszy
- Tworzenie map klawiszy na stałe
- Unikanie rekurencji
- Tworzenie map klawiszy specyficznych dla trybu
- Jak mapować zdarzenia myszy
- Jak mapować za pomocą klucza lidera w Vimie
- Jak zmapować funkcję Vimscriptu
- Jak mapować polecenia zewnętrzne w Vimie
- Jak usunąć mapę klawiszy w Vimie
- Ściągawka dotycząca mapowania kluczy Vima
- Wniosek
Składnia
Aby zmapować klucz w Vimie, używana jest następująca składnia:
W powyższej składni:
|
nmap, imap, vmap, xmap, cmap lub omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
*W powyższej składni sekcja Specjalne argumenty VimaArgumenty 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
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 VimiePrzyjrzyjmy 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, 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 klawiszyAby wyświetlić listę wszystkich kluczowych mapowań trybu normalnego, wizualnego i oczekującego na operatora, użyj polecenia :map. :mapaAby 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.
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łeMapy 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 rekurencjiZanim 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 3jddW 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 3jddPolecę używać mapa noremapy zamiast mapa aby uniknąć przypadkowego utworzenia mapowania rekurencyjnego. Tworzenie map klawiszy specyficznych dla trybuVim 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 normalnegoAby 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 > ggVGyJak 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 > ggVGyUmieść 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 wstawianiaAby 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ć Teraz, kiedy naciskam ctrl+x klawisze, wydrukuje 3ddi polecenie zamiast je wykonać.
Aby to naprawić, wstawię plik 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 wizualnegoTryb 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 Teraz wejdź w tryb poleceń i wykonaj :Mójcmd Komenda. Mapowanie trybu oczekującego operatoraTryb 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 > 3jTeraz, 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 Jak mapować zdarzenia myszyChociaż 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.
Jak mapować za pomocą klucza lidera w VimieMapowanie 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 ggVGdTeraz 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ę VimscriptuEdytor 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 VimiePolecenia 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 VimieAby 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.
Na przykład, aby usunąć
Aby usunąć wszystkie mapy z bieżącego bufora, użyj opcji :mapaczysta Komenda. :mapaczystaPowyż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 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 VimaPoniższy obraz przedstawia listę wszystkich poleceń i ich konkretnych trybów w celach informacyjnych.
WniosekMapowanie 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. |