vimAan de slag met vim


Opmerkingen

Vim (of "Vi IMproved") is een console-gebaseerde multi-mode ( modale ) teksteditor. Het wordt veel gebruikt en is standaard beschikbaar op alle Unix-, Linux- en Apple OS X-systemen. Vim heeft een grote actieve gemeenschap en een breed gebruikersbestand. De editor ondersteunt alle populaire programmeertalen en er zijn veel plug-ins beschikbaar om de functies uit te breiden.

Ontwikkelaars houden van de editor vanwege zijn snelheid, vele configuratie-opties en krachtige op expressie gebaseerde bewerking. In de "opdracht" -modus wordt de editor bestuurd door toetsenbordopdrachten, zodat de gebruiker niet wordt afgeleid door een GUI of muisaanwijzer.

Vim is gebaseerd op de eerdere Unix "vi" -editor die in de jaren zeventig is gemaakt en is sinds 1991 continu in ontwikkeling. Met macro's en plug-ins biedt de editor de meeste functies van een moderne IDE. Het is ook uniek in staat om grote hoeveelheden tekst te verwerken met zijn scripttaal (vimscript) en reguliere expressies.

Hoofdonderwerpen:

Vim standaard opstartbericht

versies

Versie Publicatiedatum
8.0 2016/09/12
7.4 2013/08/10
7.3 2010-08-15
7.2 2008-08-09
7.1 2007-05-12
7.0 2006-05-07
6.0 2001/09/26
5.0 1998/02/19
4.0 1996/05/29
3.0 1994/08/12
2.0 1993/12/14
1.14 1991/11/02

Basics

Voer zo vaak als nodig interactieve tutorials uit om je vertrouwd te maken met de basis.

Vim heeft verschillende modi, bijv. Normale modus , invoegmodus en opdrachtregelmodus .

Normale modus is voor het bewerken en navigeren van tekst. In deze modus komen h , j , k en l overeen met de cursortoetsen , , en . De meeste opdrachten in de normale modus kunnen worden voorafgegaan door een "telling", bijv. 3j gaat 3 regels omlaag.

Invoegmodus is voor het rechtstreeks invoegen van de tekst, in deze modus is vim vergelijkbaar met andere, eenvoudigere teksteditors. Druk in de normale modus op i om de invoegmodus te openen. Om het te verlaten drukt u op <ESC> (escape-toets).

Opdrachtregelmodus is voor het uitvoeren van complexere opdrachten, zoals het opslaan van het bestand en het afsluiten van vim. Druk op : om de opdrachtregelmodus te starten. Om deze modus te verlaten, kunt u ook op <ESC> drukken. Om de wijzigingen in het bestand op te slaan, gebruikt u :w (of :write ). Om vim af te sluiten zonder uw wijzigingen op te slaan, gebruikt u :q! (of :quit! ).

Dit zijn enkele van de meer bruikbare opdrachten in vim:

Commando Beschrijving
i (invoegen) gaat naar de invoegmodus vóór de huidige cursorpositie
I gaat in de invoegmodus vóór het eerste afdrukbare teken van de huidige regel
a (toevoegen) gaat in invoegmodus na de huidige cursorpositie
A gaat in de invoegmodus na het laatste afdrukbare teken van de huidige regel
x teken verwijderen op de huidige cursorpositie
X teken links naar de huidige cursorpositie verwijderen
w ga naar het volgende woord
b naar het vorige woord gaan
0 ga naar het begin van de regel
$ naar het einde van de regel gaan
r vervangen - gaat naar de vervangmodus voor één teken. Het volgende teken dat u typt, vervangt het teken onder de cursor.
R gaat voor onbepaalde tijd in vervangmodus. Elk teken dat u typt, vervangt het teken onder de cursor en verplaatst de cursor met één.
s vervangen - verwijdert het teken op de huidige cursorpositie en gaat vervolgens naar de invoegmodus
S verwijder de huidige regel waarop de cursor zich bevindt en ga naar de invoegmodus
<Esc> , <Cc> verlaat de invoegmodus en keert terug naar de normale modus
u ongedaan maken
<Cr> opnieuw doen
dd , dw , dl , d$ knip de huidige regel, van de cursor naar het volgende woord, of het teken, respectievelijk de huidige positie tot het einde van de huidige regel, let op: D is het equivalent van d$
cc , cw , cl wijzig de huidige regel, respectievelijk van de cursor naar het volgende woord of het teken
yy , yw , yl , y$ ruk ("kopieer") de huidige regel, van de cursor naar het volgende woord, of het teken, de huidige positie tot het einde van de huidige regel
p , P zet ("plakken") na respectievelijk voor de huidige positie
o , O om een nieuwe lege regel te maken, na of voor de huidige regel en naar de invoegmodus te gaan
:w schrijf de huidige buffer naar schijf
:q! , ZQ stoppen zonder te schrijven
:x :wq , ZZ schrijven en stoppen
:help open een venster met helpbestand
:help {subject} Help weergeven voor een specifiek onderwerp
qz begin met het opnemen van acties om z te registreren, q om de opname te beëindigen, @z om de acties @z te spelen. z kan elke letter zijn: q wordt vaak gebruikt voor het gemak. Lees meer: Macro's

Vim. Verlaten

Om Vim te verlaten, moet u eerst controleren of u zich in de normale modus bevindt door op Esc te drukken .

  • :q Enter (voorkomt dat u afsluit als u niet-opgeslagen wijzigingen hebt - kort voor: afsluiten)

Om discard wijzigingen en verlaat Vim:

  • :q! Enter om exit te forceren en wijzigingen ongedaan te maken (afkorting voor :quit! Niet te verwarren met :!q ),
  • ZQ is een snelkoppeling die hetzelfde doet als :q! ,
  • :cq Voer quit en return error in (verwijder alle wijzigingen zodat de compiler dit bestand niet opnieuw compileert)

Wijzigingen opslaan en Vim afsluiten:

  • :wq Enter (afkorting voor :write and :quit ),
  • :x Enter (hetzelfde als :wq , maar schrijft niet als het bestand niet is gewijzigd),
  • ZZ is een snelkoppeling die hetzelfde doet als :x (werkruimte opslaan en de editor afsluiten),
  • :[range]wq! Enter (schrijf de regels in [bereik])

Om dicht bij meerdere buffers in een keer (zelfs in meerdere vensters en / of tabs), door de letter a voor een van de bovenstaande opdrachten (die beginnen met : ). Als u bijvoorbeeld alle vensters wilt schrijven en afsluiten, kunt u het volgende gebruiken:

  • :wqa Voer in of
  • :xa Enter - Schrijf alle gewijzigde buffers en verlaat Vim. Als er buffers zonder bestandsnaam zijn die alleen worden gelezen of die om een andere reden niet kunnen worden geschreven, stopt Vim niet
  • :xa! Enter - Schrijf alle gewijzigde buffers, zelfs degenen die alleen-lezen zijn, en verlaat Vim. Als er buffers zijn zonder een bestandsnaam of die om een andere reden niet kunnen worden geschreven, stopt Vim niet
  • :qa Enter - probeer af te sluiten, maar stop als er niet-opgeslagen bestanden zijn;
  • :qa! Enter - afsluiten zonder op te slaan (wijzigingen in niet- opgeslagen bestanden ongedaan maken)

Als u Vim hebt geopend zonder een bestand op te geven en u wilt dat bestand opslaan voordat u afsluit, ontvangt u E32: No file name . U kunt uw bestand opslaan en afsluiten met:

  • :wq filename Enter of;
  • :x filename Enter

Uitleg:

De : toetsaanslag opent eigenlijk de Command- modus. Het commando q is een afkorting van quit , w , of write en x , of exit (je kunt ook typen :quit :write en :exit als je wilt). Snelkoppelingen die niet beginnen met : zoals ZZ en ZQ verwijzen naar ZQ in de normale modus. Je kunt ze beschouwen als snelkoppelingen.

De ! toetsaanslag wordt soms gebruikt aan het einde van een opdracht om de uitvoering te forceren, waardoor wijzigingen kunnen worden verwijderd in het geval van :q! . Het plaatsen van de ! aan het begin van het commando heeft een andere betekenis. Men kan bijvoorbeeld verkeerd typen:! :!q plaats van :q! en vim zou eindigen met een 127-fout.

Een gemakkelijke manier om dit te onthouden is om te denken aan ! als een manier om erop aan te dringen iets uit te voeren. Net zoals wanneer je schrijft: "Ik wil stoppen!"

Installatie

De Vim op uw machine - als die er is - is waarschijnlijk een "kleine" build die nuttige functies zoals klembordondersteuning, syntaxisaccentuering of zelfs de mogelijkheid om plug-ins te gebruiken mist.

Dit is geen probleem als alles wat je nodig hebt een snelle manier is om configuratiebestanden te bewerken, maar je zult snel een aantal muren raken als je van plan bent om Vim je hoofdeditor te maken.

Het wordt daarom over het algemeen aanbevolen om een complete build te installeren.

Installatie op Linux / BSD

Op die systemen is de truc eenvoudig om de GUI-versie te installeren die wordt geleverd met zowel een gvim opdracht voor het starten van de GUI als een vim opdracht voor het starten van de TUI.

Arch en Arch-gebaseerde distributies

$ sudo pacman -R vim
$ sudo pacman -S gvim
 

Op Debian en op Debian gebaseerde distributies

$ sudo apt-get update
$ sudo apt-get install vim-gtk
 

Gentoo en Gentoo-gebaseerde distributies

$ sudo emerge --sync
$ sudo emerge app-editors/gvim
 

Op RedHat en op RedHat gebaseerde distributies

$ sudo yum check-update
$ sudo yum install vim-X11
 

Fedora

$ sudo dnf check-update
$ sudo dnf install vim-X11
 

Slackware en op Slackware gebaseerde distributies

$ sudo slackpkg update
$ sudo slackpkg install-new vim-gvim
 

Op OpenBSD en op OpenBSD gebaseerde distributies

$ sudo pkg_add vim-x11
 

Op FreeBSD en op FreeBSD gebaseerde distributies

$ sudo pkg install editors/vim
 

Installatie op Mac OS X

De strategie is vergelijkbaar met Mac OS X: we installeren de GUI-versie om zowel de GUI als de TUI te krijgen. Uiteindelijk moeten we in staat zijn om:

  • dubbelklik op het MacVim-pictogram in de Finder,
  • klik op het MacVim-pictogram in het Dock,
  • $ mvim in de shell om de MacVim GUI te openen,
  • $ mvim -v in de shell om de MacVim TUI te openen.

Regelmatige installatie

Download en installeer een officiële momentopname zoals u dat met elke andere Mac OS X-toepassing zou doen.

Plaats het mvim script dat bij MacVim wordt geleverd ergens in uw $PATH .

Pakket manager

MacPorts:
$ sudo port selfupdate
$ sudo port install macvim
 
homebrew:
$ brew install macvim
 

Om MacVim de standaard console Vim te maken:

$ brew install macvim --with-override-system-vim
 

Installatie op Windows

Er is standaard geen Vim op Windows-systemen. Je kunt Vim downloaden en installeren vanaf de Tuxproject-site voor meer up-to-date en complete builds of je kunt Vim downloaden en installeren vanaf de officiële Vim-site .

chocolatey

> choco install vim
 

Vim bouwen vanaf bron

Als de bovenstaande methoden niet aan uw behoeften voldoen, is het nog steeds mogelijk om Vim zelf te bouwen, met alleen de opties die u nodig hebt.

Dit onderwerp zal worden besproken in een eigen sectie (momenteel in concept).

Interactieve Vim-zelfstudies (zoals vimtutor)

vimtutor is een interactieve tutorial over de meest elementaire aspecten van tekstbewerking.

Op een UNIX-achtig systeem kunt u de zelfstudie starten met:

$ vimtutor
 

In Windows is "Vim tutor" te vinden in de map "Vim 7.x" onder "Alle programma's" in het Windows-menu.

Zie :help vimtutor voor meer informatie.

Andere interactieve zelfstudies omvatten deze browsergebaseerde:

  • Vim Adventures - Een interactieve gameversie van vimtutor beschikbaar op internet. Alleen de eerste paar niveaus zijn gratis.
  • Open Vim - Een interactieve terminal die je de basisopdrachten leert met feedback.
  • Vim Genius - Een andere interactieve terminal die ook tussentijdse en geavanceerde lessen bevat, waaronder macro's en arglist.

Een alleen-lezen bestand opslaan dat is bewerkt in Vim

Soms kunnen we een bestand openen waarvoor we geen toestemming hebben om in Vim te schrijven zonder sudo .

Gebruik deze opdracht om een alleen-lezen bestand op te slaan dat is bewerkt in Vim.

:w !sudo tee > /dev/null %
 

Waar je naar toe kunt wijzen :w!! in uw .vimrc :

cmap w!! w !sudo tee > /dev/null %
 

U krijgt een prompt te zien zoals getoond in de afbeelding.

Druk op ENTER of typ opdracht om door te gaan. [O] K, (L) oad Bestand: .

Druk op O en het bestand wordt opgeslagen. Het blijft open in vi / vim voor meer bewerking of lezen en u kunt normaal afsluiten door te typen :q! omdat het bestand nog steeds als alleen-lezen is geopend.

Opdracht Uitleg

:w ............................ isn't modifying your file in this case, 
   ............................ but sends the current buffer contents to 
   ............................ a substituted shell command
   !sudo ...................... call the shell 'sudo' command
         tee .................. the output of the vi/vim write command is redirected 
                                using the 'tee' command
             > /dev/null ...... throws away the standard output, since we don't need 
                                to pass it to other commands
                         % .... expands to the path of the current file
 

bronnen:

Vim opschorten

Wanneer u vim vanaf de opdrachtregel gebruikt, kunt u vim opschorten en teruggaan naar uw prompt, zonder vim daadwerkelijk te verlaten. Daarom kunt u uw vim sessie later terugkrijgen vanaf dezelfde prompt.

In de normale modus (zo niet, druk op esc om er te komen), voer een van deze opdrachten uit:

:st invoeren

:sus binnen

:stop invoeren

:suspend enter

Als alternatief, op sommige systemen, in de normale of visuele modus, heeft de afgifte van Ctrl + Z hetzelfde effect.

Opmerking: Als autowrite is ingesteld, worden buffers met wijzigingen en bestandsnamen weggeschreven. Voeg een ! voor invoeren om te voorkomen, bijvoorbeeld. :st! ga naar binnen .

Als je later naar je vim sessie wilt terugkeren en je hebt geen andere taken opgeschort, zal vim als je voorgrondtaak worden hersteld.

fg ga naar binnen

Anders moet u de taak-ID van uw vim sessie vinden door jobs enter te geven en vervolgens de overeenkomende jobs fg %[job ID] enter bijv. Te forceren. fg %1 invoeren .

Wat te doen bij een crash

Vim slaat al uw niet-opgeslagen bewerkingen op in een wisselbestand , een extra bestand dat wordt verwijderd zodra de wijzigingen zijn doorgevoerd door op te slaan. De naam van het wisselbestand is meestal de naam van het te bewerken bestand, voorafgegaan door een . en met een .swp achtervoegsel (je kunt het zien met :sw ).

Dus in het geval dat uw vim-proces wordt beëindigd voordat u de kans hebt gehad om uw bewerkingen op te slaan, kunt u uw werk herstellen door de wijzigingen in het wisselbestand op uw huidige bestand toe te passen met behulp van de opdrachtregeloptie -r . Als bijvoorbeeld myFile het bestand is dat u aan het bewerken was, gebruik dan:

$ vi -r myFile
 

om de niet-vastgelegde wijzigingen te herstellen.

Als er een wisselbestand bestaat, zou vim u toch moeten vragen om herstelopties

$ vi myFile
E325: ATTENTION
Found a swap file by the name ".myFile.swp"
...
Swap file ".myFile.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
 

Als u (R) ecover kiest, worden de wijzigingen uit het swp bestand toegepast, maar het swap-bestand wordt niet verwijderd, dus vergeet niet om het swap-bestand achteraf te verwijderen als u tevreden bent met het herstel.