Sök…


Introduktion

Genom att uppdatera Vim-nyckelmappningar kan du lösa två typer av problem: Tilldela nyckelkommandon till bokstäver som är mer minnesvärda eller tillgängliga och skapa nyckelkommandon för funktioner som inte har några. Här lär du dig om de olika sätten att [re] kartlägga nyckelkommandon och det sammanhang som de gäller (dvs. vim-lägen)

Grundläggande kartläggning

kartöversikt

En tangentsekvensen kan vara re-mappad till en annan tangent sekvens genom att använda någon av map varianter.

Som exempel kommer följande typiska map att lämna Infoga-läge när du trycker på j k i snabb sekvens:

:inoremap jk <Esc>

kartoperatör

Det finns flera varianter av :map för olika lägen.

kommandon lägen
:map :noremap :unmap Normalt, visuellt och operatörsvänt läge
:map! , :noremap! , :unmap! Infoga och kommandoradsläge
:nmap :nnoremap :nunmap Normalt läge
:imap :inoremap :iunmap Infoga och ersätt läge
:vmap :vnoremap :vunmap Visuellt och Välj läge
:xmap :xnoremap :xunmap Visuellt läge
:smap :snoremap :sunmap Välj läge
:cmap :cnoremap :cunmap Kommandoradsläge
:omap :onoremap :ounmap Operatörs väntande läge

Vanligtvis bör du använda :noremap varianterna ; det gör kartläggningen immun mot omappning och rekursion.

karta Kommando

  • Du kan visa alla mappningar med :map (eller en av variationerna ovan).
  • För att visa den aktuella kartläggningen för en specifik tangentsekvens, använd :map <key> där <key > är en sekvens av nycklar
  • Specialnycklar som Esc mappas med speciell <> notation, som <Esc> . För fullständig lista över nyckelkoder, se http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodes
  • :nmapclear - Rensa alla normala läge kartor
  • :nunmap - Ta bort en karta över ett normalt läge
  • Du kan konfigurera den maximala tiden mellan tangenterna i en sekvens genom att ändra timeout och ttimeout variablerna

exempel

  • imap jk <Esc> : jk skriver jk i insert-läge kommer du tillbaka till normalt läge
  • nnoremap tt :tabnew<CR> : att skriva tt i normalt läge öppnar en ny flikssida
  • nnoremap <Cj> <Cw>j : att skriva <Cj> i normalt läge får dig att hoppa till fönstret nedan och till vänster
  • vmap <Cc> \cc : att skriva <Cc> i visuellt läge kommer att köra \cc (NERDCommenter-kommando för att kommentera raden). Eftersom detta bygger på en plugin-mappning kan du inte använda :vnoremap här!

vidare läsning här

Kartledare-tangentkombination

Ledarknappen kan användas som ett sätt att skapa en kartläggning med en nyckelbindning som kan åsidosättas av slutanvändaren.

Ledaren är \ nyckeln som standard. För att åsidosätta det, måste slutanvändaren köra :let g:mapleader='somekey(s)' innan han definierar kartläggningen.

I ett typiskt scenario är kartläsaren inställd i .vimrc , och plugins använder <Leader> i nyckelbindningsdelen av deras mappningar för att anpassa dem.

I plugin definierar vi mappningar med:

:nnoremap <Leader>a somecomplexaction

Detta skulle kartlägga somkomplexaktionen till \ + en tangentkombination.

A åtgärd utan ledaren ändras inte.

Det är också möjligt att använda <Plug>Mappings att ge mer utrymme för att anpassa plugins nyckelbindningar.

Illustration av grundläggande kartläggning (praktiska genvägar).

I de flesta textredigerare är standardgenvägen för att spara det aktuella dokumentet Ctrl + S (eller Cmd + S på macOS).

Vim har inte den här funktionen som standard men den kan kartläggas för att göra det lättare. Att lägga till följande rader i .vimrc filen kommer att göra jobbet.

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

Kommandot nnoremap kartlägger Ctrl + s till :w (skriv nuvarande innehåll till fil) inoremap medan kommandot inoremap kartlägger Ctrl + S till :w kommandot och återgår tillbaka till insert-läget ( <co> går till normalt läge för ett kommando och återgår till infogningsläge efteråt, utan att ändra markörens position som andra lösningar som <esc>:w<cr>a inte kan säkerställa).

Liknande,

" 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: Det måste dock noteras att Ctrl + S kanske inte fungerar som förväntat när du använder ssh (eller PuTTY). Lösningen på detta ligger inte inom ramen för detta dokument utan kan hittas här .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow