vim
Infoga text
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
.