vim
Kommandon för normalt läge (redigering)
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.