Sök…


Introduktion - Snabbanmälan om normalt läge

I Normalläge kan kommandon anges med direkta tangentkombinationer (att skriva u för att ångra den senaste ändringen, till exempel). Dessa kommandon har ofta medel i 'ex' -läge, nås genom att skriva ett kolon: som faller dig i en enda linje buffert vid botten av Vim fönstret.

I "ex" -läge skriver du ett kommandonamn eller dess förkortning följt av Enter efter att du har skrivit kolon. Så : undo Enter gör samma sak som att du direkt skriver u i Normalläge.

Du kan se att de direkta kommandona ofta kommer att vara snabbare (en gång lärt) än 'ex' -kommandona för enkel redigering, men för fullständighet, när så är möjligt i dokumentationen som följer, om båda är tillgängliga för användning kommer båda att visas.

De flesta av dessa kommandon kan också föregås av en räkning genom att prefixera eller byta ett nummer - att skriva 3dd i Normal Mode, till exempel raderar du tre rader (börjar från den aktuella markörpositionen).

Grundläggande Ångra och göra om

Ångra

Kommando : Beskrivning
u u , undo Ångra den senaste ändringen
5u Ångra de fem senaste ändringarna (använd valfritt nummer)

Observera att i Vim varierar den "senaste ändringen" beroende på det läge du är i. Om du går in i Insert Mode ( i ) och skriver ut ett helt stycke innan du släpper tillbaka till Normal Mode ( Esc ), är hela stycket betraktade den senaste förändringen.

Göra om

Kommando : Beskrivning
Ctrl-R red , gör redo Gör om den senaste ångrade ändringen
2Ctrl-R Gör om de två senaste ångrade ändringarna (använd valfritt nummer)

Det finns ett annat sätt att ångra och göra om förändringar i Vim som hanteras lite annorlunda. När du ångrar en förändring med u , går du igenom noderna i ett "träd" av dina förändringar, och genom att trycka på Ctrl-R går du tillbaka i noderna i ordning. (Ångra trädet är ett separat ämne och är för komplicerat för att täcka här.)

Du kan också använda U (det vill säga versaler) för att ta bort alla de senaste ändringarna på en enda rad (raden där dina senaste ändringar gjordes). Detta korsar inte trädets noder på samma sätt som u . Att använda U räknas faktiskt som en förändring själv - en annan nod framåt på trädet - så att om du trycker på U en andra gång omedelbart efter den första så kommer det att fungera som ett omkommando.

Var och en har sina användningsområden, men u / : undo bör täcka de flesta enkla fall.

Upprepa den senaste ändringen

Upprepa-kommandot, exekverat med punkt- eller periodknappen ( . ), Är mer användbart än det först visas. När du lärt dig kommer du att hitta dig själv ofta.

Kommando : Beskrivning
. Upprepa den senaste ändringen
10. Upprepa den senaste ändringen 10 gånger

Så, för ett mycket enkelt exempel, om du gör en ändring till rad 1 genom att skriva i I Esc, med följande resultat:

1 I made a mistake
2  made a mistake
3  made a mistake

Din markör kommer att vara på position 1 på rad 1, och allt du behöver göra för att fixa de nästa två raderna är att trycka på j. två gånger - det vill säga j för att flytta ner en linje och . att upprepa den senaste förändringen, som var tillägget av I Du behöver inte hoppa tillbaka till Insert Mode två gånger för att fixa dessa linjer.

Det blir mycket kraftfullare när det används för att upprepa makron .

Kopiera, klipp och klistra in

I Vim hanteras dessa operationer annorlunda än vad du kan vara van vid i nästan alla andra moderna redigerare eller ordbehandlare ( Ctrl-C , Ctrl-X , Ctrl-V ). För att förstå måste du veta lite om register och rörelser.

Obs! Det här avsnittet täcker inte kopiering och skärning av visuellt läge eller räckvidd, eftersom dessa ligger utanför ramen för både normalläge och grundredigering.

register

Vim använder begreppet register för att hantera rörlig text inom själva programmet. Windows har ett enda urklipp för detta ändamål, vilket är analogt med ett enda register i Vim. När du kopierar, klipper och klistrar in i Vim finns det sätt att använda ett lika enkelt redigeringsarbetsflöde (där du inte behöver tänka på register), men det finns också mycket mer komplexa möjligheter.

Ett register riktas in för inmatning / utgång av ett kommando genom att prefixa kommandot med " och ett gemener med små bokstäver.

motioner

En rörelse i Vim är alla kommandon som flyttar markörens position någon annanstans. När du kopierar, klipper och klistrar in i normalt läge begränsas möjligheterna till textval för rörelse endast av din kunskap om rörelser. Några kommer att illustreras nedan.

Kopiering och klippning

De grundläggande kommandona kopierings- och klippoperationer är byggda på är y ('yank', för kopiering) och d ('radera', för klippning). Du ser likheterna i följande tabell.

Kommando : Beskrivning
y {rörelse} Kopiera ("yank") text som indikeras av rörelsen till standardregistret
yy Kopiera den aktuella raden till standardregistret, radvis
Y Kopiera den aktuella raden till standardregistret (synonym för yy )
"ayiw Kopiera ordet som markören är på i registret 'a'
20" byy Kopiera tjugo rader, med början från markören, till registret 'b'
d {rörelse} Skär ('radera') text som indikeras av rörelsen i standardregistret
dd Skär den aktuella raden i standardregistret, radvis
D Klipp från markören till slutet av raden i standardregistret (INTE en synonym för dd )
"adiw Klipp ut ordet som markören är på i registret "a"
20" bdd Skär tjugo rader, med början från markören, i registret "b"

Obs! När något kopieras eller klipps radvis , placerar klistrabeteendet som visas nedan text antingen före eller efter den aktuella raden (snarare än markören). Exempel följer för att förtydliga.

klistra

Det finns flera sätt att klistra in i Vim, beroende på vad du försöker åstadkomma.

Kommando : Beskrivning
p Klistra in vad som finns i standardregistret efter markören
P Klistra in vad som finns i standardregistret före markören
"ap Klistra in innehållet i registret 'a' efter markören
"cP Klistra in innehållet i registret 'c' före markören

Så hur gör jag ett riktigt enkelt klipp och klistra in?

Om jag har följande text:

1 This line should be second
2 This line should be first

Jag kan göra det enklaste klipp-och-klistra genom att placera min markör någonstans på rad 1 och skriva ddp . Här är resultaten:

1 This line should be first
2 This line should be second

Vad hände? dd 'Skär' den första raden (radvis) i standardregistret - som bara kommer att innehålla en sak åt gången, som Windows klippbord - och p klistrar in linjen efter det nuvarande, som just har ändrats på grund av kommandot dd .

Här är ett inte-helt-så-enkelt exempel. Jag måste flytta ett par ord. (Detta är förfalskat och onödigt, men du kan tillämpa denna princip på större bitar med kod.)

1 These words order out are of

Jag kan upprepa w för att komma till 'o' framför 'ordning' (eller b om jag bara skrev det och insåg mitt misstag).

Sedan "adaw att sätta" ordning "i registret" a ".

Sedan w för att komma till 'a' in 'are'.

Efter detta skulle jag skriva "bdaw att sätta" är "i registret" b ". Nu har jag detta visas:

1 These words out of

För att vara tydlig är nu "order" i registret "a" och "är" är i registret "b", som två separata urklipp.

För att ordna orden korrekt skriver jag b för att komma till 'o' in 'ut' och sedan 'bP to put' are 'från registret' b 'framför' out ':

1 These words are out of

Nu skriver jag A för att komma till slutet av raden, följt av Space Esc (förutsatt att det inte fanns något utrymme efter 'av') och 'ap to put' order 'där det hör hemma.

1 These words are out of order

Komplettering

Komplettering kan användas för att matcha ord som används i ett dokument. När du skriver ett ord kommer Ctrl p eller Ctrl n att matcha tidigare eller nästa liknande ord i dokumentet.

Detta kan till och med kombineras med Ctrl-X- läget för att slutföra hela linjer. Skriv till exempel något som:

This is an example sentence.

gå sedan till nästa rad och börja skriva samma mening:

Thi

och tryck sedan på Ctrl p vilket kommer att resultera i:

This

Nu fortfarande i insert-läge, tryck Ctrl x Ctrl p och sedan kommer nästa ord att slutföras vilket resulterar i:

This is

Fortsätt slå Ctrl x Ctrl p tills hela raden är klar.

Om du vet att du vill fylla i en hel rad skriver du det här:

This is an example sentence.

sedan på nästa radtyp:

Thi

och tryck x Ctrl l för att slutföra raden.

Om färdigställandet är ett filnamn kan Ctrl x Ctrl f användas för att slutföra den katalogen. Typ:

~/Deskt

slå sedan Ctrl x Ctrl f och:

~/Desktop

kommer att slutföras (om på den platsen). Ctrl x Ctrl f kan sedan upprepade gånger användas för att lista filerna på skrivbordet.



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