vim
Tekst invoegen
Zoeken…
Invoegmodus verlaten
Commando | Beschrijving |
---|---|
<Esc> | Verlaat de invoegmodus, activeert autocommandes en afkortingen |
<C-[> | Exact synoniem voor <Esc> |
<Cc> | Verlaat de invoegmodus, activeert geen autocommando's |
Sommige mensen gebruiken graag een relatief ongewoon paar tekens zoals jk
als snelkoppeling voor <Esc>
of <C-[>
die op sommige toetsenborden moeilijk te bereiken is:
inoremap jk <Esc>l
Verschillende manieren om in de invoegmodus te komen
Commando | Beschrijving |
---|---|
a | Voeg tekst toe na de huidige cursorpositie |
A | Voeg tekst toe aan het einde van de huidige regel |
i | Tekst invoegen vóór de huidige cursorpositie |
I | Tekst invoegen vóór het eerste niet-lege teken van de huidige regel |
gI | Tekst invoegen in de eerste kolom van de cursorregel |
gi | Voeg tekst in op dezelfde positie waar het de vorige keer was gebleven in de invoegmodus |
O | Open een nieuwe regel boven de huidige regel en voeg daar tekst toe (HOOFDLETTERS O ) |
o | Open een nieuwe regel onder de huidige regel en voeg daar tekst toe (kleine letters o ) |
s of cl | Verwijder het teken onder de cursor en schakel over naar de invoegmodus |
S of cc | Verwijder de hele regel en schakel over naar de invoegmodus |
C | Verwijder vanaf de cursorpositie tot het einde van de regel en start de invoegmodus |
c{motion} | Verwijder {motion} en start de invoegmodus (zie Basic Motion ) |
Invoermodussnelkoppelingen
Commando | Beschrijving |
---|---|
<Cw> | Woord verwijderen vóór cursor |
<Ct> | Inspringende huidige regel met één shiftwidth |
<Cd> | Niet-actieve huidige regel met één shiftwidth |
<Cf> | de regel opnieuw indentiëren (cursor naar positie voor automatisch inspringen verplaatsen) |
<Ca> | Eerder ingevoegde tekst invoegen |
<Ce> | Voer het onderstaande teken in |
<Ch> | Verwijder één teken achteruit |
<Cy> | Voer het bovenstaande teken in |
<Cr>{register} | Plaats de inhoud van {register} |
<Co>{normal mode command} | voer {normal mode command} zonder de invoegmodus te verlaten |
<Cn> | Volgende optie voor automatisch aanvullen voor het huidige woord |
<Cp> | Vorige optie voor automatisch aanvullen voor het huidige woord |
<Cv> | Voeg een teken in met zijn ASCII-waarde in decimalen |
<Cv>x | Voeg een teken in met zijn ASCII-waarde in hexadecimaal |
<Cv>u | Voeg een teken in met zijn unicode-waarde in hexadecimaal |
<Ck> | Voer een digraph in |
Normale opdrachten uitvoeren vanuit de invoegmodus
Druk in de invoegmodus op <Co>
om de invoegmodus tijdelijk te verlaten en een eenmalig normaal commando uit te voeren.
Voorbeeld
<Co>2w
springt naar het tweede woord links en keert terug naar de invoegmodus.
Opmerking: Herhalen met .
herhaalt alleen de acties van terugkeren naar invoegmodus
Dit zorgt voor enkele nuttige toewijzingen, bijv
inoremap <C-f> <Right>
inoremap <C-b> <Left>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$
Nu zal ctrl + a de cursor naar het begin van de regel plaatsen en ctrl + e - naar het einde van de regel. Deze toewijzingen worden standaard gebruikt in readline
, dus dit kan handig zijn voor mensen die consistentie willen.
Voeg tekst in meerdere regels tegelijk in
Druk op Ctrl + v om naar de visuele blokmodus te gaan.
Gebruik ↑ / ↓ / j / k om meerdere lijnen te selecteren.
Druk op Shift + i en begin te typen wat je wilt.
Nadat u op Esc hebt gedrukt, wordt de tekst ingevoegd in alle regels die u hebt geselecteerd.
Vergeet niet dat Ctrl + c niet 100% equivalent is aan Esc en in deze situatie niet zal werken!
Er zijn kleine variaties op Shift + i die je kunt indrukken in de visuele blokmodus:
Sleutel | Beschrijving |
---|---|
c of s | Verwijder het geselecteerde blok en ga naar de invoegmodus |
C | Verwijder geselecteerde lijnen (van cursor tot einde) en ga naar de invoegmodus |
R | Verwijder geselecteerde lijnen en ga naar invoegmodus |
EEN | Toevoegen aan geselecteerde regels, met de kolom aan het einde van de eerste regel |
Merk ook op dat drukken op . na een visuele blokbewerking wordt die bewerking herhaald waar de cursor staat!
Plak tekst met de opdracht "plakken"
Als je de opdracht plakken van je terminalemulatorprogramma gebruikt, interpreteert Vim de stroom tekens alsof ze zijn getypt. Dat zal allerlei ongewenste effecten veroorzaken, met name slechte indendatie.
Om dat te verhelpen, vanuit de opdrachtmodus:
:set paste
Ga vervolgens naar de invoegmodus, bijvoorbeeld met i . Merk op dat de modus nu is -- INSERT (paste) --
. Plak nu met uw terminalemulatoropdracht of met de muis. Wanneer u klaar bent, gaat u naar de opdrachtmodus, met Esc en voert u uit:
:set nopaste
Er is een eenvoudiger manier, wanneer men slechts één keer wil plakken. Plaats dit in uw .vimrc (of gebruik de plug-in unimpaired.vim ):
function! s:setup_paste() abort
set paste
augroup unimpaired_paste
autocmd!
autocmd InsertLeave *
\ set nopaste |
\ autocmd! unimpaired_paste
augroup end
endfunction
nnoremap <silent> yo :call <SID>setup_paste()<CR>o
nnoremap <silent> yO :call <SID>setup_paste()<CR>O
Nu kunt u eenvoudig op yo
drukken om code onder de cursor te plakken en vervolgens op <Esc>
om terug te keren naar de normale / nopaste-modus.
Plakken vanuit een register in de invoegmodus
In de invoegmodus kunt u <Cr>
om vanuit een register te plakken, wat wordt aangegeven door de volgende toetsaanslag. <Cr>"
bijvoorbeeld pasta's uit het register zonder naam ( "
).
Zie :help registers
.
Geavanceerde invoegopdrachten en snelkoppelingen
Hier is een snelle referentie voor geavanceerde invoeg-, opmaak- en filteropdrachten / snelkoppelingen.
Command / Snelkoppeling | Resultaat |
---|---|
g +? + m | Voer rot13-codering uit, bij beweging m |
n + ctrl + a | + n tot nummer onder cursor |
n + ctrl + x | - n tot nummer onder cursor |
g + q + m | Formaat bewegingslijnen m tot vaste breedte |
: r ce w | Middenlijnen in bereik r tot breedte w |
: r le i | Lijn links in bereik r uit met streepje i |
: r ri w | Lijn lijnen in bereik r uit met breedte w |
! mc | Filter bewegingslijnen m door commando c |
n !! c | Filter n regels door commando c |
: r ! c | Filterbereik r lijnen door commando c |
Schakel automatisch inspringen uit om code te plakken
Bij het plakken van tekst door middel van een terminal emulator, kan de auto-streepje-functie de insprong van de geplakte tekst te vernietigen.
Bijvoorbeeld:
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
worden geplakt als:
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
In deze gevallen moet u de paste
/ nopaste
optie inschakelen / uitschakelen van de auto-streepje-functie:
:set paste
:set nopaste
Daar komt nog bij dat het probleem eenvoudiger is: voeg de volgende regel toe aan uw .vimrc:
set pastetoggle=<F3>
En als je wilt plakken zoals het is van het klembord. Druk gewoon op F3
in de insert
en plak. Druk nogmaals op F3
om de paste
verlaten.