Szukaj…


Wprowadzenie

Aktualizacja mapowania klawiszy Vima pozwala rozwiązać dwa rodzaje problemów: Ponowne przypisywanie poleceń kluczowych do liter, które są bardziej zapadające w pamięć lub dostępne, oraz tworzenie poleceń kluczowych dla funkcji, które nie mają żadnych. Tutaj dowiesz się o różnych sposobach [re] mapowania kluczowych poleceń i kontekście, do którego się odnoszą (tj. Tryby vim)

Podstawowe mapowanie

Przegląd mapy

Sekwencję klawiszy można ponownie map na inną sekwencję klawiszy za pomocą jednego z wariantów map .

Jako przykład, następujący typowy map wyjdzie z trybu Insert po naciśnięciu J K w szybkiej sekwencji:

:inoremap jk <Esc>

operator mapy

Istnieje wiele wariantów :map dla różnych trybów.

Polecenia Tryby
:map :noremap :unmap Tryb normalny, wizualny i tryb oczekiwania operatora
:map! , :noremap! :unmap! Tryb wstawiania i wiersza polecenia
:nmap :nnoremap :nunmap Tryb normalny
:imap :inoremap :iunmap Tryb wstawiania i zastępowania
:vmap :vnoremap :vunmap Tryb wizualny i wybierz
:xmap :xnoremap :xunmap Tryb wizualny
:smap :snoremap :sunmap Wybierz tryb
:cmap :cnoremap :cunmap Tryb wiersza poleceń
:omap :onoremap :ounmap Tryb oczekiwania operatora

Zwykle powinieneś używać :noremap wariantów ; sprawia, że mapowanie jest odporne na ponowne mapowanie i rekurencję.

polecenie map

  • Możesz wyświetlić wszystkie mapowania za pomocą :map (lub jednej z powyższych odmian).
  • Aby wyświetlić bieżące mapowanie dla określonej sekwencji klawiszy, użyj :map <key> gdzie <key > to sekwencja kluczy
  • Klucze specjalne, takie jak Esc, są mapowane przy użyciu specjalnej notacji <> , na przykład <Esc> . Pełna lista kodów kluczy znajduje się na stronie http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodes
  • :nmapclear - Wyczyść wszystkie mapy w trybie normalnym
  • :nunmap - :nunmap mapowanie mapy trybu normalnego
  • Można skonfigurować maksymalny czas pomiędzy klawisze sekwencji poprzez zmianę timeout i ttimeout zmienne

Przykłady

  • imap jk <Esc> : wpisanie jk w trybie wstawiania spowoduje powrót do normalnego trybu
  • nnoremap tt :tabnew<CR> : wpisanie tt w trybie normalnym otworzy stronę nowej karty
  • nnoremap <Cj> <Cw>j : wpisanie <Cj> w trybie normalnym spowoduje przejście do okna poniżej i po lewej stronie
  • vmap <Cc> \cc : wpisanie <Cc> w trybie wizualnym spowoduje wykonanie \cc (polecenie NERDCommenter w celu skomentowania linii). Ponieważ zależy to od mapowania wtyczek, nie możesz użyć :vnoremap tutaj!

dalsze czytanie tutaj

Kombinacja klawiszy lidera mapy

Klucz lidera może być wykorzystany jako sposób na utworzenie mapowania z powiązaniem klawiszy, które może zostać zastąpione przez użytkownika końcowego.

Lider jest domyślnie kluczem \ . Aby go zastąpić, użytkownik końcowy musiałby wykonać :let g:mapleader='somekey(s)' przed zdefiniowaniem mapowania.

W typowym scenariuszu mapleader jest ustawiany w .vimrc , a wtyczki używają <Leader> w kluczowej części swoich mapowań, aby można je było dostosowywać.

We wtyczce zdefiniowalibyśmy mapowania za pomocą:

:nnoremap <Leader>a somecomplexaction

To byłoby odwzorować działanie somecomplexaction do \ + kombinacji klucza.

A działanie bez lidera nie zmienia.

Możliwe jest również użycie <Plug>Mappings aby pozostawić więcej miejsca na dostosowanie skrótów klawiszowych wtyczek.

Ilustracja podstawowego mapowania (przydatne skróty).

W większości edytorów tekstu standardowym skrótem do zapisywania bieżącego dokumentu jest Ctrl + S (lub Cmd + S na macOS).

Vim nie ma domyślnie tej funkcji, ale można ją zmapować, aby ułatwić. Dodanie następujących wierszy w pliku .vimrc wykona zadanie.

nnoremap <c-s> :w<CR>
inoremap <c-s> <c-o>:w<CR>

Polecenie nnoremap odwzorowuje Ctrl + s na :w (zapis bieżącej zawartości do pliku), natomiast polecenie inoremap odwzorowuje polecenie Ctrl + S na :w i wraca do trybu wstawiania ( <co> przechodzi w tryb normalny dla jednego polecenia i powraca później do trybu wstawiania, bez zmiany pozycji kursora, czego inne rozwiązania, takie jak <esc>:w<cr>a nie mogą zapewnić).

Podobnie,

" This is commented, as Ctrl+Z is used in terminal emulators to suspend the ongoing program/process.
" nnoremap <c-z> :u<CR>

" Thus, Ctrl+Z can be used in Insert mode
inoremap <c-z> <c-o>:u<CR>

" Enable Ctrl+C for copying selected text in Visual mode
vnoremap <c-c> <c-o>:y<CR>

PS: Należy jednak zauważyć, że Ctrl + S może nie działać zgodnie z oczekiwaniami podczas korzystania z ssh (lub PuTTY). Rozwiązanie tego problemu nie wchodzi w zakres tego dokumentu, ale można je znaleźć tutaj .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow