Zoeken…


Inleiding - Snelle opmerking over de normale modus

In de normale modus kunnen commando's worden ingevoerd door directe toetscombinaties ( u typt bijvoorbeeld om de laatste wijziging ongedaan te maken). Deze commando's hebben vaak equivalenten in de 'ex'-modus, toegankelijk door een dubbele punt : te typen, waardoor u in een buffer met één regel onder aan het Vim-venster terechtkomt.

In de 'ex'-modus typt u na het typen van de dubbele punt een opdrachtnaam of de afkorting ervan, gevolgd door Enter om de opdracht uit te voeren. Dus: undo Voer volbrengt hetzelfde als u rechtstreeks te typen in de normale modus.

Je kunt zien dat de directe opdrachten vaak sneller zijn (eenmaal geleerd) dan de 'ex'-opdrachten voor eenvoudige bewerking, maar voor de volledigheid, waar mogelijk in de documentatie die volgt, als beide beschikbaar zijn voor gebruik, zullen beide worden getoond.

De meeste van deze commando's kunnen ook worden voorafgegaan door een telling door een cijfer voor of achter elkaar te plaatsen. Als u bijvoorbeeld 3dd in de normale modus typt, worden drie regels verwijderd (beginnend bij de huidige cursorpositie).

Eenvoudig ongedaan maken en opnieuw uitvoeren

Undo

Commando : Beschrijving
u u , undo Maak de meest recente wijziging ongedaan
5u Maak de vijf meest recente wijzigingen ongedaan (gebruik een willekeurig nummer)

Houd er rekening mee dat in Vim de 'meest recente wijziging' afhankelijk is van de modus waarin u zich bevindt. Als u de invoegmodus ( i ) opent en een hele alinea typt voordat u teruggaat naar de normale modus ( Esc ), is die hele alinea beschouwd als de meest recente wijziging.

Opnieuw doen

Commando : Beschrijving
Ctrl-R red , redo Voer de meest recente ongedaan gemaakte wijziging opnieuw uit
2Ctrl-R Voer de twee meest recente ongedaan gemaakte wijzigingen opnieuw uit (gebruik een willekeurig nummer)

Er is een andere manier om wijzigingen in Vim ongedaan te maken en opnieuw uit te voeren die een beetje anders worden behandeld. Wanneer u een wijziging ongedaan maakt met u , gaat u terug omhoog de knooppunten in een 'boom' van uw wijzigingen en drukt u op Ctrl-R om terug in die knooppunten te gaan. (De boom ongedaan maken is een apart onderwerp en is te complex om hier te behandelen.)

U kunt ook U (dat wil zeggen hoofdletters) gebruiken om alle laatste wijzigingen op een enkele regel te verwijderen (de regel waar uw laatste wijzigingen zijn aangebracht). Dit betekent niet doorkruisen de knooppunten van de boom op dezelfde manier als u. Het gebruik van U telt eigenlijk zelf als een verandering - een ander knooppunt vooruit in de boom - zodat als u U een tweede keer onmiddellijk na de eerste drukt, het als een Opnieuw commando zal fungeren.

Elk heeft zijn gebruik, maar u / : undo zou de meest eenvoudige gevallen moeten dekken.

Herhaal de laatste wijziging

De opdracht Herhalen, uitgevoerd met de punt- of punttoets ( . ), Is nuttiger dan deze eerst verschijnt. Eenmaal geleerd, zul je merken dat je het vaak gebruikt.

Commando : Beschrijving
. Herhaal de laatste wijziging
10. Herhaal de laatste wijziging 10 keer

Dus, voor een heel eenvoudig voorbeeld, als u een wijziging aanbrengt in regel 1 door i I Esc te typen, met het volgende resultaat:

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

Uw cursor staat op positie 1 van regel 1 en u hoeft alleen maar op j te drukken om de volgende twee regels te corrigeren . tweemaal - dat wil zeggen, j om een regel omlaag te gaan en . om de laatste wijziging te herhalen, namelijk de toevoeging van de I Het is niet nodig om twee keer terug te gaan naar de invoegmodus om die lijnen te repareren.

Het wordt veel krachtiger wanneer het wordt gebruikt om macro's te herhalen.

Kopiëren, knippen en plakken

In Vim worden deze bewerkingen anders verwerkt dan u gewend bent van bijna elke andere moderne editor of tekstverwerker ( Ctrl-C , Ctrl-X , Ctrl-V ). Om te begrijpen, moet je een beetje weten over registers en bewegingen.

Opmerking: deze sectie heeft geen betrekking op kopiëren en snijden in de visuele modus, omdat deze buiten het bereik van zowel de normale modus als de basisbewerking vallen.

registers

Vim gebruikt het concept van registers om bewegende tekst binnen het programma zelf te verwerken. Windows heeft hiervoor een enkel klembord, dat analoog is aan een enkel register in Vim. Bij het kopiëren, knippen en plakken in Vim zijn er manieren om een vergelijkbare eenvoudige bewerkingsworkflow te gebruiken (waarbij u niet aan registers hoeft te denken), maar er zijn ook veel complexere mogelijkheden.

Een register is bedoeld voor de invoer / uitvoer van een opdracht door de opdracht te prefixen met " en een kleine letter.

Motions

Een beweging in Vim is een opdracht die de cursorpositie ergens anders naartoe verplaatst. Wanneer u kopieert, knipt en plakt in de normale modus, worden de mogelijkheden van tekstselectie voor beweging alleen beperkt door uw kennis van bewegingen. Een paar worden hieronder geïllustreerd.

Kopiëren en snijden

De basisopdrachten voor kopiëren en knippen zijn gebaseerd op y ('yank', voor kopiëren) en d ('delete', voor knippen). Je ziet de overeenkomsten in de volgende tabel.

Commando : Beschrijving
y {beweging} Kopieer ('ruk') tekst aangegeven door de beweging naar het standaardregister
yy Kopieer de huidige regel, lijnsgewijs naar het standaardregister
Y Kopieer de huidige regel naar het standaardregister (synoniem voor yy )
"ayiw Kopieer het woord waarop de cursor staat naar register 'a'
20" byy Kopieer twintig regels, beginnend bij de cursor, in register 'b'
d {beweging} Knip ('verwijder') tekst aangegeven door de beweging in het standaardregister
dd Snijd de huidige regel in het standaardregister, lijnsgewijs
D Knip van de cursor tot het einde van de regel in het standaardregister (GEEN synoniem voor dd )
"adiw Knip het woord waarop de cursor staat in register 'a'
20" BDD Snijd twintig lijnen, beginnend bij de cursor, in register 'b'

Opmerking: wanneer iets wordt gekopieerd of lijnsgewijs wordt geknipt, plaatst het hieronder getoonde plakgedrag tekst voor of na de huidige regel (in plaats van de cursor). Voorbeelden volgen ter verduidelijking.

plakken

Er zijn verschillende manieren om in Vim te plakken, afhankelijk van wat je probeert te bereiken.

Commando : Beschrijving
p Plak wat er in het standaardregister achter de cursor staat
P Plak wat er in het standaardregister vóór de cursor staat
"ap Plak de inhoud van register 'a' achter de cursor
"cP Plak de inhoud van register 'c' voor de cursor

Dus, hoe voer ik een echt eenvoudige knip en plak uit?

Als ik de volgende tekst heb:

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

Ik kan het eenvoudigst knippen en plakken door mijn cursor ergens op regel 1 te plaatsen en ddp te typen. Dit zijn de resultaten:

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

Wat is er gebeurd? dd 'Cuts' de eerste lijn (linewise) in de standaard register - die slechts één ding zal bevatten op een moment, zoals het Windows klembord - en p plakt de regel na de huidige, die net is veranderd als gevolg van het dd commando.

Hier is een niet zo eenvoudig voorbeeld. Ik moet een paar woorden verplaatsen. (Dit is gekunsteld en onnodig, maar u kunt dit principe toepassen op grotere stukken code.)

1 These words order out are of

Ik kan w herhalen om bij de 'o' aan de voorkant van 'bestelling' te komen (of b als ik het net heb getypt en mijn fout heb begrepen).

Vervolgens "adaw om 'bestelling' in register 'a' te plaatsen.

Dan w om naar de 'a' in 'are' te gaan.

Hierna zou ik 'bdaw to put' are 'in register' b 'typen. Nu heb ik dit weergegeven:

1 These words out of

Voor alle duidelijkheid: nu staat 'bestellen' in register 'a' en 'zijn' staat in register 'b', zoals twee afzonderlijke klemborden.

Om de woorden correct te rangschikken, typ ik b om naar de 'o' in 'out' te gaan, en dan 'bP om te zetten' zijn 'uit register' b 'voor' out ':

1 These words are out of

Nu typ ik A om aan het einde van de regel te komen, gevolgd door Space Esc (ervan uitgaande dat er geen spatie is na 'of') en 'ap om' order 'te plaatsen waar het hoort.

1 These words are out of order

Voltooiing

Voltooiing kan worden gebruikt om woorden te matchen die in een document worden gebruikt. Bij het typen van een woord komen Ctrl p of Ctrl n overeen met vorige of volgende vergelijkbare woorden in het document.

Dit kan zelfs worden gecombineerd met de Ctrl-X- modus om volledige lijnen te voltooien. Typ bijvoorbeeld iets als:

This is an example sentence.

ga dan naar de volgende regel en begin dezelfde zin te typen:

Thi

en druk vervolgens op Ctrl p wat resulteert in:

This

Druk nu nog steeds in de invoegmodus op Ctrl x Ctrl p en het volgende woord wordt voltooid, wat resulteert in:

This is

Blijf Ctrl x Ctrl p raken totdat de hele regel is voltooid.

Als u weet dat u een volledige lijn wilt voltooien, typt u dit:

This is an example sentence.

typ vervolgens op de volgende regel:

Thi

en druk op x Ctrl l om de regel te voltooien.

Als de voltooide bewerking een bestandsnaam is, kan Ctrl x Ctrl f worden gebruikt om die map aan te vullen. Type:

~/Deskt

druk vervolgens op Ctrl x Ctrl f en:

~/Desktop

wordt voltooid (indien op die locatie). Ctrl x Ctrl f kan vervolgens herhaaldelijk worden gebruikt om de bestanden op het bureaublad weer te geven.



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