vim
Belangrijkste toewijzingen in Vim
Zoeken…
Invoering
Door Vim-toetstoewijzingen bij te werken, kunt u twee soorten problemen oplossen: toetsopdrachten opnieuw toewijzen aan letters die meer onthouden of toegankelijk zijn, en toetsopdrachten maken voor functies die er geen hebben. Hier leert u over de verschillende manieren om toetsopdrachten [opnieuw] toe te wijzen en de context waarop ze van toepassing zijn (dwz vim-modi)
Basic mapping
kaart Overzicht
Een toetsenreeks kan opnieuw toegewezen aan een toetsencombinatie via een van zijn map
varianten.
Als voorbeeld, de volgende typische map
zal Invoegmodus af te sluiten wanneer u op j k in snelle reeks:
:inoremap jk <Esc>
kaart Operator
Er zijn meerdere varianten van :map
voor verschillende modi.
commando's | modes |
---|---|
:map , :noremap , :unmap | Normale, visuele en operator-wachtende modus |
:map! , :noremap! , :unmap! | Invoegen en opdrachtregelmodus |
:nmap :nnoremap :nunmap | Normale modus |
:imap :inoremap :iunmap | Invoegen en vervangen modus |
:vmap :vnoremap :vunmap | Visuele en selecteermodus |
:xmap :xnoremap :xunmap | Visuele modus |
:smap :snoremap :sunmap | Selecteer modus |
:cmap :cnoremap :cunmap | Opdrachtregelmodus |
:omap :onoremap :ounmap | Operator in afwachting van modus |
Meestal moet u de :noremap
varianten gebruiken :noremap
; het maakt de mapping immuun voor remapping en recursie.
map Command
- U kunt alle toewijzingen weergeven met
:map
(of een van de bovenstaande variaties). - Als u de huidige toewijzing voor een specifieke toetsenreeks wilt weergeven, gebruikt u
:map <key>
waarbij<key
> een reeks toetsen is - Specials-toetsen zoals Esc worden toegewezen met behulp van speciale
<>
notatie, zoals<Esc>
. Zie http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodes voor de volledige lijst met sleutelcodes. -
:nmapclear
- Wis alle kaarten van de normale modus -
:nunmap
-:nunmap
een kaart in de normale modus:nunmap
- U kunt de maximale tijd tussen toetsen van een reeks configureren door de
timeout
ttimeout
enttimeout
variabelen te wijzigen
Voorbeelden
-
imap jk <Esc>
: doorjk
in deimap jk <Esc>
typen, keert u terug naar de normale modus -
nnoremap tt :tabnew<CR>
: als utt
in de normale modus typt, wordt een nieuw tabblad geopend -
nnoremap <Cj> <Cw>j
: door<Cj>
typen in de normale modus, springt u naar het onderstaande venster en naar links -
vmap <Cc> \cc
: als u<Cc>
typt in de visuele modus, wordt\cc
(opdracht NERDCommenter om commentaar op de regel te geven). Omdat dit afhankelijk is van een plug-in mapping, kunt u niet gebruiken:vnoremap
hier!
verder lezen hier
Toetscombinatie kaartleider
De leidersleutel kan worden gebruikt als een manier om een afbeelding te maken met een sleutelbinding die door de eindgebruiker kan worden opgeheven.
De leider is standaard de \ -toets. Om het te overschrijven, moet de eindgebruiker het volgende uitvoeren :let g:mapleader='somekey(s)'
voordat de toewijzing wordt gedefinieerd.
In een typisch scenario wordt de mapleader ingesteld in .vimrc
en plug-ins gebruiken <Leader>
in het sleutelbindende deel van hun toewijzingen om ze aan te passen.
In de plug-in zouden we toewijzingen definiëren met:
:nnoremap <Leader>a somecomplexaction
Dit zou de somecomplexactie- actie toewijzen aan de \ + een toetscombinatie.
De a actie zonder de leider verandert niet.
Het is ook mogelijk om <Plug>Mappings
te gebruiken om meer ruimte over te laten om de keybindings van plug-ins aan te passen.
Illustratie van basismapping (handige sneltoetsen).
In de meeste teksteditors is de standaardsnelkoppeling voor het opslaan van het huidige document Ctrl + S (of Cmd + S op macOS).
Vim heeft deze functie niet standaard, maar dit kan worden toegewezen om dingen gemakkelijker te maken. Het toevoegen van de volgende regels in .vimrc
bestand .vimrc
.
nnoremap <c-s> :w<CR>
inoremap <c-s> <c-o>:w<CR>
De opdracht nnoremap
opdracht Ctrl + s toe aan :w
(schrijf de huidige inhoud naar het bestand), terwijl de opdracht inoremap
opdracht Ctrl + S inoremap
aan :w
en terugkeert naar de inoremap
( <co>
gaat naar de normale modus voor één opdracht en keert daarna terug naar de invoegmodus, zonder de cursorpositie te wijzigen die andere oplossingen zoals <esc>:w<cr>a
niet kunnen garanderen).
Evenzo
" 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: Er moet echter worden opgemerkt dat Ctrl + S mogelijk niet werkt zoals verwacht tijdens het gebruik van ssh (of PuTTY). De oplossing hiervoor is niet binnen de reikwijdte van dit document, maar kan worden gevonden Hier .