programmera.net -> vi -> normal     för utskrift      info@programmera.net

Kommandoläget

1. Kommandoläget i vi
2. Upprepa och ångra en handling
3. Flytta markören
4. Sökningar
5. Register
6. Klipp
7. Kopiera
8. Klistra
9. Övriga editeringskommandon

1. Kommandoläget i vi

Kommandoläget (command mode) är det läge där du kan skriva snabbkommandon i vi. I kommandoläget är samtliga tangenter är kopplade till ett kommando utom siffrorna 1-9 som har särskild betydelse, se  grunderna i vi . Kommandoläget skiljer på STORA och små bokstäver. Kommandoläget är den enskilda komponent som gör att vi är så annorlunda jämfört med andra texteditorer. Många andra editorer har också snabbkommandon för att t.ex. klippa och klistra, ofta "Ctrl-C" och "Ctrl-V", men genom att ha ett särskilt läge för kommandon kan man i vi utföra kommandon med en mycket hög hastighet.

2. Upprepa och ångra en handling

De viktigaste kommandona att lära sig är hur man med "." (punkt) upprepar föregående kommando, och hur man med "u" ångrar föregående kommando:

Kommando Betydelse Beskrivning
.  -  Upprepa föregående kommando.
u  undo  Ångra senaste förändring.
U  undo  Återställ hela raden.

Om du till exempel just har raderat ett ord med "dw", kan du radera de två efterföljande ordet med "..". Om du sedan ångrar dig och vill återskapa de två senast raderade orden skriver du bara "uu".

3. Flytta markören

Många tangenter har som enda uppgift att flytta markören i kommandoläget. Följande tangenter flyttar markören ett steg i de fyra väderstrecken:



En mer komplett bild ges nedan:

Flytta markören Betydelse Beskrivning
h  -  Flytta markören ett steg vänster.
j  -  Flytta markören ett steg ned.
k  -  Flytta markören ett steg upp.
l  -  Flytta markören ett steg höger.
w,W  word  Flytta markören till början av nästa ord.
e,E  end  Flytta markören till slutet på nästa ord.
b,B  back  Flytta markören till början av föregående ord.
(  -  Flytta markören till början av meningen.
)  -  Flytta markören till slutet av meningen.
{  -  Flytta markören till början av paragrafen.
}  -  Flytta markören till slutet av paragrafen.
0  -  Flytta markören till början av raden.
$  -  Flytta markören till slutet av raden.
gg  go  Flytta markören till början av filen.
G  go  Flytta markören till slutet av filen.
8gg  go 8  Flytta markören till rad 8 i filen.
:8 (och return)  -  Flytta markören till rad 8 i filen.
H  high  Flytta markören till första raden i fönstret.
M  middle  Flytta markören till mellersta raden i fönstret.
L  low  Flytta markören till sista raden i fönstret.
Ctrl+F  forward  Scrolla fram (ner) en sida.
Ctrl+B  back  Scrolla bak (upp) en sida.
Ctrl+D  down  Scrolla ner en halv sida.
Ctrl+U  up  Scrolla upp en halv sida.

4. Sökningar

Tabellen nedan visar hur man utför filsökningar i vi:

Sök Betydelse Beskrivning
/foo (och return)  -  Sök framåt i filen efter första förekomst av strängen foo, och flytta markören dit.
?foo (och return)  -  Sök bakåt i filen efter första förekomst av strängen foo, och flytta markören dit.
n  next  Upprepa föregående filsökning i samma riktning.
N  next  Upprepa föregående filsökning i motsatt riktning.

I vi går det även att söka i raden efter en speciell bokstav! Behärskar man denna teknik kan man ibland förflytta sig snabbt på samma rad:

Sök Betydelse Beskrivning
fx  find  Sök framåt på raden efter första förekomst av bokstaven x, och flytta markören dit.
Fx  find  Sök bakåt på raden efter första förekomst av bokstaven x, och flytta markören dit.
tx  -  Sök framåt på raden efter första förekomst av bokstaven x, och flytta markören till tecknet innan x.
Tx  -  Sök bakåt på raden efter första förekomst av bokstaven x, och flytta markören till tecknet efter x.
;  -  Upprepa föregående radsökning i samma riktning.
,  -  Upprepa föregående radsökning i motsatt riktning.

5. Register

vi använder sig av register för att lagra text som har kopierats eller klippts bort. Det finns flera typer av register:

  • Registrena a-z kan du själv lagra texter i.
  • Registrena 0-9 lagrar vi dina förändringar.
  • Registret " är defaultregistret där den senast kopierade/klippta texten lagras.
Om man inte specifierar vilket register man vill använda då man kopierar, klipper eller klistar kommer defaultregistret (") att användas. Nedan listas några nyttiga kommandon:

Klipp Betydelse Beskrivning
:reg "  -  Visa innehållet i defaultregistret.
:reg x  -  Visa innehållet i registret x.
:reg  -  (Bara Vim) Visa innehållet i alla register.

Nu ska vi testa att titta på innehållet i ett register. Jag kopierar raden "glada" med "yy" och skriver sedan ":reg " " (utan att trycka return) se bilden:



Ny trycker jag return, och nu innehållet i defaultregistret visas:



I Vim kan jag se innehållet i alla register genom att skriva ":reg":



Som synes har jag vid något tillfälle medvetet lagt texten "b " i register a och texten "alla " i register f.

6. Klipp

Tabellen nedan visar hur man raderar/klipper ut text i vi. Senast utklippt text placeras i defaultregistret och kan senare klistras in med kommandot "p":

Klipp Betydelse Beskrivning
x  -  Radera tecknet under markören.
X  -  Radera tecknet före markören.
dw  delete word  Radera från markören till ordets slut.
D  delete  Radera från markören till radens slut.
dd  delete  Radera raden.
"xdd  delete into x  Radera raden och placera den i registret x.

7. Kopiera

Tabellen nedan visar hur man kopierar text i vi. Senast kopierad text placeras i defaultregistret och kan senare klistras in med kommandot "p":

Kopiera Betydelse Beskrivning
yw  yank word  Kopiera från markören till ordets slut.
yy  yank  Kopiera raden.
"xyy  yank into x  Kopiera raden och placera den i registret x.

8. Klistra

Tabellen nedan visar hur man klistrar in text:

Klistra Betydelse Beskrivning
p  paste  Klistra in texten i defaultregistret efter markören/ Klistra in raden under markören.
P  paste  Klistra in texten i defaultregistret före markören/ Klistra in raden på samma rad som markören.
"xp  paste from x  Klistra in texten i registret x före markören.

9. Övriga editeringskommandon

Andra kommandon som ändrar i texten:

Kommando Betydelse Beskrivning
J  join  Slå ihop den rad markören står på med raden under.
rx  replace  Ersätt tecknet under markören med x.