Aan de slag met Vim: De basis
Ik herinner me nog de allereerste keer dat ik Vim tegenkwam. Ik studeerde aan de universiteit en op de computers in het lab van de afdeling informatica was Ubuntu Linux geïnstalleerd. Ik had al voor mijn studie kennisgemaakt met verschillende Linux-varianten (zoals RHEL) (Red Hat verkocht zijn cd’s bij Best Buy!), maar dit was de eerste keer dat ik het Linux-besturingssysteem regelmatig moest gebruiken, omdat mijn colleges me daartoe verplichtten. Toen ik eenmaal Linux begon te gebruiken, net als vele anderen voor en na mij, begon ik me een “echte programmeur” te voelen.”
1_xkcdcartoon.jpg
Echte programmeurs, door xkcd
Studenten konden een grafische teksteditor zoals Kate gebruiken, die standaard op de labcomputers was geïnstalleerd. Voor studenten die de shell konden gebruiken, maar niet gewend waren aan een console-gebaseerde editor, was Nano de populaire keuze, die goede interactieve menu’s bood en een ervaring vergelijkbaar met de grafische teksteditor van Windows.
Ik gebruikte Nano soms, maar ik had geweldige dingen gehoord over Vi/Vim en Emacs en wilde ze echt eens proberen (vooral omdat ze er cool uitzagen, en ik was ook benieuwd wat er zo geweldig aan was). Vim voor de eerste keer gebruiken maakte me bang-ik wilde niets verpesten! Maar toen ik het eenmaal onder de knie had, werd alles veel gemakkelijker en kon ik de krachtige mogelijkheden van de editor waarderen. Wat Emacs betreft, dat heb ik zo’n beetje opgegeven, maar ik ben blij dat ik bij Vim ben gebleven.
In dit artikel zal ik net genoeg door Vim heenlopen (gebaseerd op mijn persoonlijke ervaring) zodat je ermee uit de voeten kunt als editor op een Linux systeem. Dit zal je niet tot een expert maken, noch zal het de oppervlakte van Vim’s krachtige mogelijkheden onthullen. Maar het beginpunt is altijd belangrijk, en ik wil de beginervaring zo gemakkelijk mogelijk maken, en je kunt de rest op eigen houtje ontdekken.
Stap 0: Open een console venster
Voordat je in Vim springt, moet je een beetje voorbereiding doen. Open een console terminal van uw Linux besturingssysteem. (Aangezien Vim ook beschikbaar is op MacOS, kunnen Mac gebruikers deze instructies ook gebruiken.)
Als een terminal venster geopend is, type dan het ls commando om de huidige directory te tonen. Type vervolgens mkdir Tutorial om een nieuwe directory genaamd Tutorial te maken. Ga naar de directory door cd Tutorial te typen.
Dat was het voor de voorbereiding. Nu is het tijd voor het leuke gedeelte: het gebruik van Vim.
Stap 1: Maak een Vim-bestand aan en sluit het zonder op te slaan
Herken je nog dat ik zei dat ik het eng vond om Vim te gebruiken? Nou, het enge deel was denken, “wat als ik een bestaand bestand verander en dingen verpruts?” Immers, verschillende computer science opdrachten vereisten dat ik aan bestaande bestanden werkte door ze te wijzigen. Ik wilde weten: Hoe kan ik een bestand openen en sluiten zonder mijn wijzigingen op te slaan?
Het goede nieuws is dat je hetzelfde commando kunt gebruiken om in Vim een bestand te maken of te openen: vim <FILE_NAME>, waarbij <FILE_NAME> staat voor de doelbestandsnaam die u wilt maken of wijzigen. Laten we een bestand maken met de naam HelloWorld.java door te typen vim HelloWorld.java.
Hallo, Vim! Nu, hier is een zeer belangrijk concept in Vim, misschien wel het belangrijkste om te onthouden: Vim heeft meerdere modes. Hier zijn er drie die je moet kennen om de basis van Vim te kunnen doen:
Mode | Description |
---|---|
Default; voor navigatie en eenvoudige bewerking | |
Insert | Voor het expliciet invoegen en wijzigen van tekst |
Command Line | Voor bewerkingen als opslaan, verlaten, enz. |
Vim heeft andere modi, zoals Visual, Select, en Ex-Mode, maar de modi Normal, Insert, en Command Line zijn goed genoeg voor ons.
Je bent nu in de Normale modus. Als je tekst hebt, kun je je verplaatsen met je pijltjestoetsen of andere navigatietoetsen (die je later zult zien). Om er zeker van te zijn dat u in de normale modus bent, drukt u op de Esc-toets (Escape).
Tip: Esc schakelt over naar de normale modus. Ook al bevindt u zich al in de normale modus, druk toch op Esc, gewoon om te oefenen.
Nou, dit wordt interessant. Druk op : (de dubbele punt-toets) gevolgd door q! (d.w.z. :q!). Je scherm ziet er dan zo uit:
Drukken op de dubbele punt in Normale modus schakelt Vim over naar Command Line modus, en het :q! commando sluit de Vim editor af zonder op te slaan. Met andere woorden, je laat alle wijzigingen achter. Je kunt ook ZQ gebruiken; kies de optie die het handigst is.
Als je eenmaal op Enter drukt, zou je niet langer in Vim moeten zijn. Herhaal de oefening een paar keer, gewoon om het onder de knie te krijgen. Als u dat gedaan heeft, ga dan naar de volgende sectie om te leren hoe u een wijziging in dit bestand kunt aanbrengen.
Stap 2: Wijzigingen aanbrengen en opslaan in Vim
Open het bestand door vim HelloWorld.java te typen en op de Enter toets te drukken. In de invoegmodus kun je wijzigingen in een bestand aanbrengen. Druk eerst op Esc om er zeker van te zijn dat je in Normale modus bent, druk dan op i om naar Insert modus te gaan. (Ja, dat is de letter i.)
In de linkerbenedenhoek moet u — INSERT — zien staan. Dit betekent dat u in de Invoegmodus bent.
Typ wat Java code. U kunt alles typen wat u wilt, maar hier is een voorbeeld om te volgen. Uw scherm ziet er dan zo uit:
public class HelloWorld {
public static void main(String args) {
}
}
Zeer mooi! Merk op hoe de tekst is gemarkeerd in Java syntax highlight kleuren. Omdat je het bestand in Java hebt gestart, zal Vim de syntax-kleuren detecteren.
Bewaar het bestand. Druk op Esc om de Insert-modus te verlaten en naar de Command Line-modus te gaan. Typ : en volg dat met x! (d.w.z. een dubbele punt gevolgd door x en !). Druk op Enter om het bestand op te slaan. U kunt ook wq typen om dezelfde handeling uit te voeren.
Nu weet u hoe u tekst invoegt en het bestand opslaat met :x! of :wq.
Stap 3: Basis navigatie in Vim
Terwijl u altijd uw vriendelijke pijltjesknoppen omhoog, omlaag, links en rechts kunt gebruiken om door een bestand te bewegen, zou dat erg moeilijk zijn in een groot bestand met bijna ontelbare regels. Het is ook handig om binnen een regel te kunnen rondspringen. Hoewel Vim een heleboel geweldige navigatiefuncties heeft, is de eerste die ik je wil laten zien hoe je naar een specifieke regel kunt gaan.
Druk op de Esc-toets om er zeker van te zijn dat je in Normale modus bent, typ dan :set number en druk op Enter.
Voila! U ziet regelnummers aan de linkerkant van elke regel.
:2
Nu naar regel 3.
Maar stel u een scenario voor waarbij u te maken heeft met een bestand dat 1000 regels lang is en u wilt naar het einde van het bestand. Hoe komt u daar? Zorg ervoor dat u in de Normale modus bent, typ dan :$ en druk op Enter.
U bent nu op de laatste regel!
Nu u weet hoe u tussen de regels kunt springen, laten we als bonus leren hoe u naar het einde van een regel kunt gaan. Zorg ervoor dat je op een regel met tekst bent, zoals regel 3, en typ $.
Je bent nu bij het laatste teken op de regel. In dit voorbeeld is de open accolade gemarkeerd om te laten zien waar je cursor naartoe is verplaatst, en de sluitende accolade is gemarkeerd omdat het het overeenkomende teken is van de open accolade.
Dat is het voor basis navigatie in Vim. Maar wacht, je moet het bestand niet afsluiten. Laten we verder gaan met de basis bewerking in Vim. Neem gerust een kop koffie of thee.
Stap 4: Basisbewerking in Vim
Nu u weet hoe u door een bestand kunt navigeren door op de gewenste regel te springen, kunt u die vaardigheid gebruiken om wat basisbewerking in Vim te doen. Schakel over naar de Insert mode. (Weet u nog hoe u dat moet doen, door op de i toets te drukken?) Natuurlijk, u kunt bewerken door het toetsenbord te gebruiken om tekens te verwijderen of in te voegen, maar Vim biedt veel snellere manieren om bestanden te bewerken.
Beweeg naar regel 3, waar staat public static void main(String args) {. Druk snel twee keer achter elkaar op de d-toets. Ja, dat is dd. Als dat gelukt is, zie je een scherm als dit, waar regel 3 weg is, en elke volgende regel één regel naar boven is verplaatst (dus regel 4 is regel 3 geworden).
Dat is het delete commando. Wees niet bang! Druk op u en je ziet de verwijderde regel terug. Oef. Dit is het commando ongedaan maken.
De volgende les leert u hoe u tekst kunt kopiëren en plakken, maar eerst moet u leren hoe u tekst markeert in Vim. Druk op v en beweeg je linker en rechter pijltjestoetsen om tekst te selecteren en deselecteren. Deze functie is ook erg handig wanneer u code aan anderen laat zien en de code wilt identificeren die u wilt dat zij zien.
Beweeg naar regel 4, waar staat System.out.println(“Hallo, Opensource”);. Markeer regel 4 in zijn geheel. Klaar? OK, terwijl regel 4 nog steeds gemarkeerd is, druk op y. Dit heet yank mode, en het zal de tekst naar het klembord kopiëren. Maak vervolgens een nieuwe regel eronder door o in te toetsen. Merk op dat dit je in de Insert mode zet. U kunt de Invoegmodus verlaten door op Esc te drukken en vervolgens op p, wat staat voor paste. Hierdoor wordt de gekopieerde tekst van regel 3 aan regel 4 geplakt.
Als oefening herhaalt u deze stappen, maar past u ook de tekst op de nieuw aangemaakte regels aan. Zorg er ook voor dat de regels goed zijn uitgelijnd.
Hint: U moet heen en weer schakelen tussen de Insert-modus en de Command Line-modus om deze taak te volbrengen.
Als u klaar bent, slaat u het bestand op met het x! commando. Dat is alles voor het basisbewerken in Vim.
Stap 5: Basis zoeken in Vim
Stel je voor dat je teamleider wil dat je een tekststring in een project wijzigt. Hoe kun je dat snel doen? Je wilt misschien zoeken naar de regel met een bepaald trefwoord.
De zoekfunctie van Vim kan erg handig zijn. Ga naar de Command Line mode door (1) op de Esc toets te drukken, en dan (2) op de dubbele punt : toets. We kunnen een trefwoord zoeken door :/<SEARCH_KEYWORD> in te voeren, waarbij <SEARCH_KEYWORD> de tekststring is die u wilt vinden. Hier zoeken we naar het trefwoord “Hallo.” In de afbeelding hieronder ontbreekt de dubbele punt, maar die is wel vereist.
Echter, een trefwoord kan meer dan eens voorkomen, en dit is misschien niet het trefwoord dat u wilt. Dus, hoe navigeert u dan om de volgende overeenkomst te vinden? U drukt gewoon op de n-toets, die staat voor volgende. Zorg ervoor dat u niet in de Invoegmodus bent als u dit doet!
Bonusstap: Gebruik de splitsmodus in Vim
Dat zijn zo’n beetje alle Vim-basics. Maar, als bonus, wil ik je een coole Vim functie laten zien, genaamd split mode.
Ga weg uit HelloWorld.java en maak een nieuw bestand. Typ in een terminal-venster vim GoodBye.java en druk op Enter om een nieuw bestand te maken met de naam GoodBye.java.
Voeg elke tekst in die je wilt; ik heb besloten om “Goodbye” te typen. Sla het bestand op. (Vergeet niet dat je :x! of :wq kunt gebruiken in Command Line mode.)
In Command Line mode, typ :split HelloWorld.java, en kijk wat er gebeurt.
Wauw! Kijk eens aan! Het split commando heeft horizontaal verdeelde vensters gemaakt met HelloWorld.java boven en GoodBye.java onder. Hoe kun je tussen de vensters wisselen? Houd Control (op een Mac) of CTRL (op een PC) ingedrukt en druk dan op ww (dat wil zeggen, twee keer achter elkaar w).
Als laatste oefening, probeer GoodBye.java zo te bewerken dat het overeenkomt met het scherm hieronder door te kopiëren en te plakken uit HelloWorld.java.
Bewaar beide bestanden, en je bent klaar!
TIP 1: Als u de bestanden verticaal wilt rangschikken, gebruik dan het commando :vsplit <FILE_NAME> (in plaats van :split <FILE_NAME>, waarbij <FILE_NAME> de naam is van het bestand dat u in Split modus wilt openen.
TIP 2: U kunt meer dan twee bestanden openen door zoveel extra split of vsplit commando’s aan te roepen als u wilt. Probeer het en zie hoe het eruit ziet.