Zoeken op website

LFCS #2: Vi/Vim installeren en gebruiken in Linux


Een paar maanden geleden lanceerde de Linux Foundation de LFCS-certificering (Linux Foundation Certified Sysadmin) om individuen van over de hele wereld te helpen verifiëren dat ze in staat zijn om basis- tot middelmatige systeembeheertaken op Linux-systemen uit te voeren.

De Linux-beheertaken omvatten probleemoplossing en onderhoud uit de eerste hand, plus intelligente besluitvorming om te weten wanneer het tijd is om problemen voor te leggen aan de hogere ondersteuningsteams.

De serie heet Voorbereiding op de LFCS (Linux Foundation Certified Sysadmin) delen 1 tot en met 33 en behandelt de volgende onderwerpen:

Part 1

Hoe u het ‘Sed’-commando gebruikt om bestanden in Linux te manipuleren

Part 2

Vi/Vim installeren en gebruiken onder Linux

Part 3

Bestanden en directoires comprimeren en bestanden zoeken in Linux

Part 4

Partitioneren van opslagapparaten, formatteren van bestandssystemen en configureren van swappartitie

Part 5

Mount/Unmount lokale en netwerkbestandssystemen (Samba en NFS) in Linux

Part 6

Partities samenstellen als RAID-apparaten – Systeemback-ups maken en beheren

Part 7

Systeemopstartprocessen en -services beheren (SysVinit, Systemd en Upstart

Part 8

Hoe u gebruikers en groepen, bestandsrechten en Sudo-toegang beheert

Part 9

Linux-pakketbeheer met Yum, RPM, Apt, Dpkg, Aptitude en Zypper

Part 10

Leren van basisshellscripts en probleemoplossing voor bestandssystemen

Part 11

LVM beheren en creëren met de opdrachten vgcreate, lvcreate en lvextend

Part 12

Hoe Linux te verkennen met geïnstalleerde Help-documentatie en -hulpmiddelen

Part 13

Grand Unified Bootloader (GRUB) configureren en problemen oplossen

Part 14

Bewaak het resourcegebruik van Linux-processen en stel proceslimieten per gebruiker in

Part 15

Kernel Runtime-parameters instellen of wijzigen in Linux-systemen

Part 16

Implementatie van verplichte toegangscontrole met SELinux of AppArmor in Linux

Part 17

Toegangscontrolelijsten (ACL's) en schijfquota instellen voor gebruikers en groepen

Part 18

Netwerkservices installeren en automatisch opstarten bij opstarten configureren

Part 19

Een ultieme handleiding voor het instellen van een FTP-server om anonieme aanmeldingen toe te staan

Part 20

Stel een Basic Recursive Caching DNS-server in en configureer zones voor domein

Part 21

Hoe u de MariaDB-databaseserver installeert, beveiligt en de prestaties afstemt

Part 22

Hoe u NFS Server installeert en configureert voor het delen van bestandssystemen

Part 23

Apache instellen met op naam gebaseerde virtuele hosting met SSL-certificaat

Part 24

Hoe u een Iptables-firewall instelt om externe toegang tot services in Linux mogelijk te maken

Part 25

Hoe u van een Linux een router kunt maken die verkeer statisch en dynamisch afhandelt

Part 26

Hoe u gecodeerde bestandssystemen kunt instellen en uitwisselen met behulp van de Cryptsetup Tool

Part 27

Systeemgebruik en -storingen controleren en problemen met Linux-servers oplossen

Part 28

Hoe u een netwerkrepository instelt om pakketten te installeren of bij te werken

Part 29

Netwerkprestaties, beveiliging en probleemoplossing controleren

Part 30

Hoe u virtuele machines en containers installeert en beheert

Part 31

Leer de basisprincipes van Git om projecten efficiënt te beheren

Part 32

Een beginnershandleiding voor het configureren van IPv4- en IPv6-adressen in Linux

Part 33

Een beginnershandleiding voor het creëren van netwerkbinding en -bridging in Ubuntu

Dit bericht is Deel 2 van een serie met 33 tutorials. Hier in dit deel behandelen we de basisbewerkingen voor bestanden en de begripsmodi in de Vi/Vim-editor, die vereist zijn voor het LFCS-certificeringsexamen.

Voer basisbewerkingen voor bestanden uit in Vi Editor

Vi was de eerste teksteditor op volledig scherm, geschreven voor Unix. Hoewel het bedoeld was om klein en eenvoudig te zijn, kan het een beetje uitdagend zijn voor mensen die uitsluitend gewend zijn aan GUI-teksteditors, zoals NotePad++ of gedit, om er maar een paar te noemen voorbeelden.

Om Vi te gebruiken, moeten we eerst de 3 modi begrijpen waarin dit krachtige programma werkt, om later te leren over de krachtige tekstbewerkingsprocedures.

Houd er rekening mee dat de meeste moderne Linux-distributies worden geleverd met een variant van vi, bekend als vim ("Vi verbeterd"), die meer functies ondersteunt dan de originele vi wel. Om die reden zullen we in deze tutorial vi en vim door elkaar gebruiken.

Als op uw distributie Vim niet is geïnstalleerd, kunt u dit als volgt installeren.

sudo apt install vim         [On Debian, Ubuntu and Mint]
sudo yum install vim         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/vim  [On Gentoo Linux]
sudo apk add vim             [On Alpine Linux]
sudo pacman -S vim           [On Arch Linux]
sudo zypper install vim      [On OpenSUSE]    

Waarom zou ik Vi willen leren?

Er zijn minstens 2 goede redenen om vi-editor te leren.

  1. vi is altijd beschikbaar (ongeacht welke distributie u gebruikt) omdat dit vereist is door POSIX.
  2. vi verbruikt geen aanzienlijke hoeveelheid systeembronnen en stelt ons in staat elke denkbare taak uit te voeren zonder onze vingers van het toetsenbord te halen.

Bovendien heeft vi een zeer uitgebreide ingebouwde handleiding, die kan worden gestart met het :help commando direct nadat het programma is gestart. Deze ingebouwde handleiding bevat meer informatie dan de manpagina van vi/m.

Vi-editor starten

Om vi te starten, typt u vi in uw opdrachtprompt.

vi

Druk vervolgens op i om de Invoeg-modus te openen en u kunt beginnen met typen.

Een andere manier om vi/m te starten is.

vi filename

Hierdoor wordt een nieuwe buffer geopend (later meer over buffers) met de naam bestandsnaam, die u later op schijf kunt opslaan.

Vi-modi begrijpen

De Vi-editor heeft meerdere modi, die elk een ander doel dienen en gebruikers in staat stellen specifieke acties uit te voeren.

Dit zijn de belangrijkste modi waar u rekening mee moet houden:

Vi Commandoregelmodus

In de opdrachtmodus kan de gebruiker met vi door het bestand navigeren en vi-opdrachten invoeren, dit zijn korte, hoofdlettergevoelige combinaties van één of meer brieven. Bijna allemaal kunnen ze worden voorafgegaan door een nummer om de opdracht zo vaak te herhalen.

yy (of Y) kopieert bijvoorbeeld de gehele huidige regel, terwijl 3yy (of 3Y) de gehele huidige regel samen met de twee volgende regels (in totaal 3 regels).

We kunnen altijd naar de opdrachtmodus gaan (ongeacht de modus waaraan we werken) door op de Esc-toets te drukken. Het feit dat in de opdrachtmodus de toetsenbordtoetsen worden geïnterpreteerd als opdrachten in plaats van als tekst, kan voor beginners verwarrend zijn.

Vi Ex-modus

In de ex-modus kunnen we bestanden manipuleren (inclusief het opslaan van een huidig bestand en het uitvoeren van externe programma's). Om deze modus te openen, moeten we een dubbele punt (:) typen vanuit de commandomodus, direct gevolgd door de naam van het ex-moduscommando dat moet worden gebruikt. Daarna keert vi automatisch terug naar de commandomodus.

Vi Invoegmodus

In de insert-modus (de letter i wordt vaak gebruikt om deze modus te openen), voeren we eenvoudigweg tekst in. De meeste toetsaanslagen resulteren in het verschijnen van tekst op het scherm (een belangrijke uitzondering is de Esc-toets, die de invoegmodus verlaat en terugkeert naar de opdrachtmodus).

Gebruik van Vi-opdrachten

De volgende tabel toont een lijst met veelgebruikte vi-opdrachten. Opdrachten voor het bewerken van bestanden kunnen worden afgedwongen door het uitroepteken aan de opdracht toe te voegen (:q! dwingt bijvoorbeeld afsluiten af zonder op te slaan).

 Key Command

 Beschrijving

 h or left arrow

Ga één karakter naar links

 j or down arrow

Ga één regel naar beneden

 k or up arrow

Ga één regel omhoog

 l (lowercase L) or right arrow

Ga één karakter naar rechts

 H

Ga naar de bovenkant van het scherm

 L

Ga naar de onderkant van het scherm

 G

Ga naar het einde van het bestand

 w

Verplaats één woord naar rechts

 b

Verplaats één woord naar links

 0 (zero)

Ga naar het begin van de huidige regel

 ^

Ga naar het eerste niet-lege teken op de huidige regel

 $

Ga naar het einde van de huidige regel

 Ctrl-B

Ga één scherm terug

 Ctrl-F

Ga één scherm vooruit

 i

Invoegen op de huidige cursorpositie

 I (uppercase i)

Voeg aan het begin van de huidige regel in

 J (uppercase j)

Verbind de huidige regel met de volgende (verplaats volgende opstelling)

 a

Toevoegen na de huidige cursorpositie

 o (lowercase O)

Creëert een lege regel na de huidige regel

 O (uppercase o)

Creëert een lege regel vóór de huidige regel

 r

Vervang het teken op de huidige cursorpositie

 R

Overschrijven op de huidige cursorpositie

 x

Verwijder het teken op de huidige cursorpositie

 X

Verwijder het teken onmiddellijk vóór (links) van de huidige cursorpositie

 dd

Knip (om later te plakken) de gehele huidige regel

 D

Knippen vanaf de huidige cursorpositie naar het einde van de regel (deze opdracht is gelijk aan d$)

 yX

Geef een bewegingscommando X, kopieer (ruk) het juiste aantal tekens, woorden of regels vanaf de huidige cursorpositie

 yy or Y

Yank (kopieer) de gehele huidige regel

 p

Plak na (volgende regel) de huidige cursorpositie

 P

Plak vóór (vorige regel) de huidige cursorpositie

 . (period)

Herhaal de laatste opdracht

 u

Maak de laatste opdracht ongedaan

 U

Maak de laatste opdracht op de laatste regel ongedaan. Dit werkt zolang de cursor nog op de regel staat.

 n

Vind de volgende overeenkomst in een zoekopdracht

 N

Zoek de vorige match in een zoekopdracht

 :n

Volgend bestand; wanneer meerdere bestanden zijn opgegeven om te bewerken, laadt deze opdracht het volgende bestand.

 :e file

Laad het bestand in plaats van het huidige bestand.

 :r file

Voeg de inhoud van het bestand in na (volgende regel) de huidige cursorpositie

 :q

Sluit af zonder de wijzigingen op te slaan.

 :w file

Schrijf de huidige buffer naar een bestand. Om aan een bestaand bestand toe te voegen, gebruik je :w >> bestand.

 :wq

Schrijf de inhoud van het huidige bestand en sluit af. Gelijk aan x! en ZZ

 :r! command

Voer de opdracht uit en voeg de uitvoer in na (volgende regel) de huidige cursorpositie.

Vi-opties

De volgende opties kunnen van pas komen tijdens het uitvoeren van vim (we moeten ze toevoegen aan ons ~/.vimrc bestand).

echo set number >> ~/.vimrc
echo syntax on >> ~/.vimrc
echo set tabstop=4 >> ~/.vimrc
echo set autoindent >> ~/.vimrc

  • set nummer toont regelnummers wanneer vi een bestaand of nieuw bestand opent.
  • syntaxis on schakelt syntaxisaccentuering in (voor meerdere bestandsextensies) om code- en configuratiebestanden leesbaarder te maken.
  • set tabstop=4 stelt de tabgrootte in op 4 spaties (standaardwaarde is 8).
  • set autoindent neemt de vorige inspringing over naar de volgende regel.

Zoek en vervang tekst in Vi

vi heeft de mogelijkheid om de cursor naar een bepaalde locatie te verplaatsen (op een enkele regel of over een heel bestand) op basis van zoekopdrachten. Het kan ook tekstvervangingen uitvoeren met of zonder bevestiging van de gebruiker.

Zoeken binnen een lijn

Het f commando doorzoekt een regel en verplaatst de cursor naar de volgende keer dat een bepaald teken voorkomt op de huidige regel.

Het commando fh verplaatst de cursor bijvoorbeeld naar de volgende instantie van de letter h binnen de huidige regel. Houd er rekening mee dat noch de letter f noch het teken dat u zoekt ergens op uw scherm verschijnen, maar dat het teken wordt gemarkeerd nadat u op Enter drukt.

Dit is bijvoorbeeld wat ik krijg nadat ik in de opdrachtmodus op f4 heb gedrukt.

Een heel bestand doorzoeken

Gebruik de opdracht /, gevolgd door het woord of de zin waarnaar moet worden gezocht. Een zoekopdracht kan worden herhaald met behulp van de vorige zoekreeks met het n commando, of de volgende (met het N commando). Dit is het resultaat van het typen van /Jane in de opdrachtmodus.

Tekst zoeken en vervangen

Vi gebruikt een commando (vergelijkbaar met dat van sed) om vervangingsbewerkingen uit te voeren over een reeks regels of een heel bestand.

Om het woord “oud ” te veranderen in “jong ” voor het hele bestand, moeten we het volgende commando invoeren.

 :%s/old/young/g 

Opmerking: de dubbele punt aan het begin van de opdracht.

De dubbele punt (:) start het ex commando, s in dit geval (ter vervanging), % is een snelkoppeling die betekent van de eerste regel tot de laatste regel (het bereik kan ook worden gespecificeerd als n,m wat betekent “van regel n tot regel m ”), oud is het zoekpatroon, terwijl jong de vervangende tekst is, en g geeft aan dat de vervanging bij elke gebeurtenis moet worden uitgevoerd van de zoekreeks in het bestand.

Als alternatief kan een c aan het einde van de opdracht worden toegevoegd om om bevestiging te vragen voordat enige vervanging wordt uitgevoerd.

:%s/old/young/gc

Voordat de originele tekst wordt vervangen door de nieuwe, zal vi/m ons het volgende bericht presenteren.

  • y: voer de vervanging uit (ja)
  • n: sla deze gebeurtenis over en ga naar de volgende (nee)
  • a: voer de vervanging uit in dit en alle volgende exemplaren van het patroon.
  • q of Esc: stop met vervangen.
  • l (kleine letter L): voer deze vervanging uit en stop (laatste).
  • Ctrl-e, Ctrl-y: scroll respectievelijk omlaag en omhoog om de context van de voorgestelde vervanging te bekijken.

Meerdere bestanden bewerken in Vi

Laten we vim file1 file2 file3 typen in onze opdrachtprompt.

vim file1 file2 file3

Eerst zal vim bestand1 openen. Om naar het volgende bestand (file2) te gaan, moeten we de opdracht :n gebruiken. Als we naar het vorige bestand willen terugkeren, zal :N het werk doen.

Om over te schakelen van bestand1 naar bestand3.

a). Het :buffers commando toont een lijst van het bestand dat momenteel wordt bewerkt.

:buffers

b). Het commando :buffer 3 (zonder de s aan het einde) zal file3 openen om te bewerken.

In de afbeelding hierboven geeft een hekje (#) aan dat het bestand momenteel geopend is, maar op de achtergrond, terwijl %a het bestand markeert dat momenteel wordt bewerkt.

Aan de andere kant geeft een spatie na het bestandsnummer (3 in het bovenstaande voorbeeld) aan dat het bestand nog niet is geopend.

Tijdelijke Vi-buffers

Om een paar opeenvolgende regels (bijvoorbeeld 4) te kopiëren naar een tijdelijke buffer met de naam a (niet gekoppeld aan een bestand) en deze regels later in de huidige vi in een ander deel van het bestand te plaatsen sectie, we moeten...

  • Druk op de ESC-toets om er zeker van te zijn dat we in de vi Command-modus zijn.
  • Plaats de cursor op de eerste regel van de tekst die we willen kopiëren.
  • Typ “a4yy” om de huidige regel, samen met de drie daaropvolgende regels, te kopiëren naar een buffer met de naam a. We kunnen doorgaan met het bewerken van ons bestand – we hoeven de gekopieerde regels niet onmiddellijk in te voegen.
  • Wanneer we de locatie voor de gekopieerde regels bereiken, gebruikt u “a vóór de opdrachten p of P om de gekopieerde regels in de buffer met de naam < b>een:

    1. Typ “ap om de gekopieerde regels in de buffer in te voegen na de huidige regel waarop de cursor rust.
    2. Typ “aP om de regels in te voegen die vóór de huidige regel in buffer a zijn gekopieerd.

Als we dat willen, kunnen we de bovenstaande stappen herhalen om de inhoud van de buffer op meerdere plaatsen in ons bestand in te voegen. Een tijdelijke buffer, zoals die in deze sectie, wordt verwijderd wanneer het huidige venster wordt gesloten.

Samenvatting

Zoals we hebben gezien is vi/m een krachtige en veelzijdige teksteditor voor CLI. Voel je vrij om hieronder je eigen trucs en opmerkingen te delen.

Update: als je je vaardigheden als VI-editor wilt uitbreiden, raad ik je aan de volgende twee handleidingen te lezen, die je naar enkele nuttige VI-editortrucs en tips.

Het LFCS eBook is nu te koop. Bestel vandaag nog uw exemplaar en begin uw reis om een gecertificeerde Linux-systeembeheerder te worden!

Product Name Price Buy
The Linux Foundation’s LFCS Certification Preparation Guide $19.99 [Buy Now]

Als laatste, maar daarom niet minder belangrijk, kunt u overwegen om uw examenvoucher te kopen via de volgende links. Zo verdient u een kleine commissie, waarmee we dit boek up-to-date kunnen houden.