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. |