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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow