Sök…


Lämnar insättningsläge

Kommando Beskrivning
<Esc> Lämnar insättningsläge, utlöser autokommandon och förkortningar
<C-[> Exakt synonym till <Esc>
<Cc> Lämnar insättningsläge, utlöser inte autokommandon

Vissa människor gillar att använda ett relativt ovanligt par tecken som jk som genväg för <Esc> eller <C-[> vilket kan vara svårt att nå på vissa tangentbord:

inoremap jk <Esc>l

Olika sätt att komma in i insättningsläge

Kommando Beskrivning
a Lägg till text efter aktuell markörposition
A Lägg till text i slutet av den aktuella raden
i Sätt in text före den aktuella markörpositionen
I Infoga text före den första icke-tomma karaktären på den aktuella raden
gI Sätt in text i den första kolumnen i markörraden
gi Sätt in text på samma plats som den var kvar senast i Infoga-läge
O Öppna en ny rad ovanför den aktuella raden och lägg till text där (KAPITAL O )
o Öppna en ny rad under den aktuella raden och lägg till text där (små bokstäver o )
s eller cl Radera tecken under markören och växla till insättningsläge
S eller cc Radera hela raden och växla till Insert-läge
C Radera från markörens position till slutet av raden och starta insättningsläge
c{motion} Ta bort {motion} och starta insättningsläge (se Basic Motion )

Sätt in genvägar

Kommando Beskrivning
<Cw> Radera ord före markören
<Ct> Strömlinje för strömförsörjning med en shiftwidth
<Cd> Oavbruten strömlinje med en shiftwidth
<Cf> återlänga linjen, (flytta markören till automatisk intrycksposition)
<Ca> Infoga tidigare inmatad text
<Ce> Sätt in tecknet nedan
<Ch> Ta bort ett tecken bakåt
<Cy> Sätt in karaktären ovan
<Cr>{register} Sätt in innehållet i {register}
<Co>{normal mode command} kör {normal mode command} utan att lämna infogningsläge
<Cn> Nästa autokompletteringsalternativ för det aktuella ordet
<Cp> Tidigare autokompletteringsalternativ för det aktuella ordet
<Cv> Sätt in ett tecken med dess ASCII-värde i decimal
<Cv>x Infoga en karaktär med dess ASCII-värde i hexadecimal
<Cv>u Infoga en karaktär med dess unicode-värde i hexadecimal
<Ck> Ange en digraph

Kör normala kommandon från insättningsläge

Tryck på <Co> att tillfälligt lämna infogningsläge och utföra ett enstaka normalkommando.

Exempel

<Co>2w hoppar till det andra ordet till vänster och återgår till insättningsläge.

Obs: Upprepa med . upprepar bara åtgärderna från att återgå till insert-läge

Detta möjliggör några användbara mappningar, t.ex.

inoremap <C-f> <Right>
inoremap <C-b> <Left>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$

Nu sätter ctrl + a markören till början av raden och ctrl + e - till slutet av raden. Dessa mappningar används som standard i readline , så det kan vara användbart för personer som vill ha konsistens.

Sätt in text i flera rader samtidigt

Tryck på Ctrl + v för att gå in i visuellt blockläge.

Använd / / j / k för att välja flera rader.

Tryck på Shift + i och börja skriva vad du vill.

När du har tryckt på Esc kommer texten att infogas i alla rader du valt.

Kom ihåg att Ctrl + c inte är 100% motsvarande Esc och inte kommer att fungera i den här situationen!

Det finns små variationer av Shift + i som du kan trycka i i visuellt blockläge:

Nyckel Beskrivning
c eller s Ta bort det markerade blocket och gå in i insättningsläge
C Radera valda rader (från markören till slutet) och gå in i insättningsläge
R Radera valda rader och gå in i insättningsläge
EN Lägg till valda linjer med kolumnen i slutet av den första raden

Observera också att du trycker på . efter en visuell blockoperation upprepas den operationen där markören är!

Klistra in text med terminal "klistra in" -kommando

Om du använder klisterkommandot från ditt terminalemulatorprogram, kommer Vim att tolka strömmen med tecken som om de var skrivna. Det kommer att orsaka alla slags oönskade effekter, särskilt dålig indragning.

För att fixa det från kommandoläget:

:set paste

Sedan gå vidare för att infoga läget med i, till exempel. Lägg märke till att läget är nu -- INSERT (paste) -- . Klistra in nu med ditt terminalemulatorkommando eller med musen. När du är klar, gå till kommandoläge, med Esc och kör:

:set nopaste

Det finns ett enklare sätt när man vill klistra in bara en gång. Lägg detta i din .vimrc (eller använd plugin 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 kan man helt enkelt trycka på yo att klistra in kod under markören och sedan <Esc> att gå tillbaka till normalt / nopaste-läge.

Klistra in från ett register i infogningsläge

I infogningsläget kan du använda <Cr> att klistra in från ett register, som anges av nästa tangenttryckning. <Cr>" till exempel klister från det namngivna ( " ) registret.

Se :help registers .

Avancerade insättningskommandon och genvägar

Här är en snabbreferens för avancerad infogning, formatering och filterkommandon / genvägar.

Kommando / Shortcut Resultat
g +? + m Utför kodning av rot13, på rörelse m
n + ctrl + a + n till nummer under markören
n + ctrl + x - n till nummer under markören
g + q + m Formatera rörelselinjer m till fast bredd
: r ce w Mittlinjer i intervallet r till bredd w
: r le i Vänster inriktas linjer i intervallet r med strecksatsen i
: r ri w Högerjustera raderna i intervallet r till bredd w
! mc Filtrera rörelselinjer m genom kommando c
n !! c Filtrera n- rader genom kommando c
: r ! c Filtrera r- rader genom kommando c

Inaktivera automatisk intryck för att klistra in kod

När du klistrar in text via ett terminal kan auto-strecksatsen funktion förstöra indraget i den inklistrade texten.

Till exempel:

function () {
    echo 'foo'
    echo 'bar'
    echo 'baz'
}

kommer att klistras in som:

function () {
    echo 'foo'
        echo 'bar'
            echo 'baz'
            }

I dessa fall kan du använda alternativet paste / nopaste att inaktivera / aktivera funktionen för automatisk indragning:

:set paste
:set nopaste

Tillägg till detta finns det en enklare metod för problemet: Lägg till följande rad i din .vimrc:

set pastetoggle=<F3>

Och om du vill klistra in som från klippbordet. Tryck bara på F3 i insert och klistra in. Tryck på F3 igen för att gå ur paste .



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