Kapitel 9. Vi-inmatningsläget

Erlend Hamberg

Översättare: Stefan Asserhäll

Vi-inmatningsläge

Målet för VI-läget är inte att vara en fullständig ersättning av Vim och stödja alla funktioner i Vim. Dess mål är att göra Vim-sättet att redigera (och vanorna inlärda med Vim) tillgängligt för program som använder texteditorn KatePart som intern editor.

VI-lägets mål är att integreras väl med programmet och skilja sig från Vims beteende när det är lämpligt. Exempelvis öppnas en dialogruta för att spara med :w i KateParts VI-läge.

För att aktivera VI-inmatningsläget för alla nya vyer, gå till InställningarAnpassa KatePart...+RedigeringVi-inmatningsläge. Under denna flik kan du ställa in alternativ för VI-inmatningsläget samt definiera och redigera tangentbindningarna för läget. Vi-inmatningsläge kan också växlas med inställningen Vi-inmatningsläge i menyn Redigera. (Normal genväg är Meta+Ctrl+V, där Meta oftast är Windows-tangenten).

Notera

Många tangentbordskommandon i VI-läget är skiftlägeskänslig, i motsats till de flesta tangentbordsgenvägar i KDE. Det betyder att y och Y är olika kommandon. För att skriva in kommandot y (ryck ut), försäkra dig om att Caps Lock inte är aktivt och tryck på Y. För att skriva in kommandot Y (ryck ut till radens slut), tryck på Skift+Y.

Detta gäller inte för kommandon som använder Ctrl-tangenten, vilka kan skrivas in oberoende av värdet på Caps Lock och utan att hålla ner Skift. Dock kräver vissa kommandon användning av Ctrl-tangenten följt av en annan tangent som är skiftlägeskänslig. För att exempelvis skriva in Ctrl+Wh (byt till delad vy höger) försäkra dig om att Caps Lock inte är aktivt, tryck på Ctrl+W, släpp, och tryck därefter på H.

Funktioner inkompatibla med Vim

Det finns bara ett fåtal funktioner i KateParts VI-läge som är inkompatibla med Vim (om man inte räknar saknade funktioner). De listas nedan tillsammans med respektive orsak.

  • KatePart: U och Ctrl+R är gör om.

    Vim: Ctrl+R är vanlig gör om, U används för att ångra alla senaste ändringarna på en rad.

    Orsaken att låta U fungera som ångra i KateParts VI-läge är att genvägen Ctrl+R normalt används av KateParts ersättningsfunktion (sök och ersätt). Normalt överskrider inte VI-läget KateParts genvägar (det kan ställas in i InställningarAnpassa KatePart...+RedigeringVi-inmatningsläge), och därför måste åtgärden Gör om också vara tillgänglig som en vanlig tangent. Dessutom motsvarar inte beteendet hos kommandot U i Vim KateParts interna ångringssystem väl, så det skulle hur som helst inte vara trivialt att stödja.

  • KatePart: print visar dialogrutan Skriv ut.

    Vim: print skriver ut raderna i det angivna intervallet, liksom i dess föregångare ed.

    Kommandon som :print är inte bara tillgängliga i VI-läge, utan också för användare som använder KatePartvanligt sätt. Därför visar kommandot :print utskriftsdialogrutan, med principen att minimera överraskningar istället för att härma Vims beteende.

  • KatePart: Y rycker ut till radens slut.

    Vim: Y rycker ut hela raden, precis som yy.

    Vims beteende för kommandot Y är i praktiken ett fel. Både för ändrings- och borttagningskommandon utför cc/ dd åtgärden för aktuell rad och C/D fungerar från markörens kolumn till radens slut. Dock rycker både yy och Y ut aktuell rad. I KateParts VI-läge rycker Y ut till radens slut. Det beskrivs som mer logiskt i Vims dokumentation.

  • KatePart: O och o påbörjar [antal] nya rader och går till infogningsläge.

    Vim: O och o påbörjar en ny rad och infogar text [antal] gånger när infogningsläget lämnas.

    Det har i huvudsak gjorts som en följd av att ha stött på många som blivit förvirrade av beteendet på en Vim IRC-kanal (#vim på Libera Chat).

Byta lägen

  • Normalt läge låter dig ange kommandon för att navigera eller redigera dokumentet, och är förvalt läge. Du kan återgå till det från vilket annat läge som helst genom att trycka på Esc.

  • Visningsläge låter dig markera text i ett dokument. De flesta kommandon från normalläget är också giltiga i detta läget. Du kan gå till det genom att trycka på v för att markera tecken, eller V för att markera rader.

  • Infogningsläge låter dig redigera dokumentet direkt. Du kan gå till det genom att trycka på i eller ett av flera andra kommandon som listas nedan.

  • Kommandoläget aktiverar KateParts kommandorad, vilket möjliggör att köra många kommandon tillgängliga i Vi-implementeringar samt vissa specifika för KatePart. För mer information om dessa kommandon, se ”Editorkomponentens kommandorad”. För att använda det, tryck på :, skriv in kommandot och tryck på returtangenten.

Integrering med funktioner i Kate

  • Visuellt läge aktiveras automatiskt när text markeras med musen. Det aktiveras också när funktioner i Kate som markerar text används, såsom Markera alla (antingen från menyn eller via Ctrl+A).

  • Markörer i Vi och bokmärken i Kate är integrerade. När en markör skapas i VI-läge, skapas ett motsvarande bokmärke i Kate, och dyker upp i menyn Bokmärken. Omvänt, när ett bokmärke skapas i Kate, skapas en motsvarande markör i Vi på kolumn 0 också.

Kommandon som stöds i normalt och visningsläge

a

Gå till infogningsläge, lägg till efter markören

A

Gå till infogningsläge, lägg till efter raden

i

Gå till infogningsläge, lägg till före markören

Insert

Gå till infogningsläge, lägg till före markören

I

Gå till infogningsläge, infoga före första tecken på raden som inte är ett blanktecken

gi

Gå till infogningsläge, lägg till före stället där det senaste infogningsläget lämnades

v

Gå till visningsläge, markera tecken

V

Gå till visningsläge, markera rader

Ctrl+v

Gå till visningsläge, markera block

gb

Gå till visningsläge, markera den senaste markeringen igen

o

Påbörja en ny rad under den aktuella raden

O

Påbörja en ny rad ovanför den aktuella raden

J

Kombinera rader

c

Ändra: Följ med en förflyttning för att ta bort och gå till infogningsläge

C

Ändra till radens slut: Ta bort till radens slut och gå till infogningsläge

cc

Ändra rad: Ta bort till raden och gå till infogningsläge

s

Ersätt tecken

S

Ersätt rad

dd

Ta bort rad

d

Följ med en förflyttning för att ta bort

D

Ta bort till radens slut

x

Ta bort tecken till höger om markören

Delete

Ta bort tecken till höger om markören

X

Ta bort tecken till vänster om markören

gu

Följ med en förflyttning för att ändra till små bokstäver

guu

Gör den aktuella raden till små bokstäver

gU

Följ med en förflyttning för att ändra till stora bokstäver

gUU

Gör den aktuella raden till stora bokstäver

y

Följ med en förflyttning för att rycka ut (kopiera)

yy

Ryck ut (kopiera) rad

Y

Ryck ut (kopiera) rad

p

Klistra in efter markören

P

Klistra in före markören

]p

Klistra in efter markören indenterat

[p

Klistra in före markören indenterat

r

Följ med ett tecken för att ersätta tecknet efter markören

R

Gå till ersättningsläge

:

Gå till kommandoläge

/

Sök

u

Ångra

Ctrl+R

Gör om

U

Gör om

m

Ange markering (kan användas av senare förflyttningar)

n

Sök igen

N

Sök föregående

>>

Indentera rad

<<

Avindentera rad

>

Indentera rader

<

Avindentera rader

Ctrl+F

Sida ner

Ctrl+B

Sida upp

ga

Skriv ut tecknets ASCIII-värde

.

Upprepa senaste ändring

==

commandAlignLine

=

commandAlignLines

~

Ändra skiftläge för aktuellt tecken

Ctrl+S

Dela vyn horisontellt

Ctrl+V

Dela vyn vertikalt

Ctrl+W, w

Gå cykliskt till nästa delade fönster

Ctrl+W, h

Ctrl+W Vänster

Gå till det delade fönstret till vänster

Ctrl+W, l

Ctrl+W Höger

Gå till det delade fönstret till höger

Ctrl+W, k

Ctrl+W Upp

Gå till det delade fönstret ovanför

Ctrl+W, j

Ctrl+W Ner

Gå till det delade fönstret nedanför

Förflyttningar som stöds

Dessa kan användas för att flytta omkring i dokumentet i Normalt läge eller Visningsläge, eller i samband med något av ovanstående kommandon. De kan föregås av ett antal, vilket anger hur många av motsvarande förflyttningar som ska göras.

h

Vänster

Vänster

Vänster

Baksteg

Vänster

j

Ner

Ner

Ner

k

Upp

Upp

Upp

l

Höger

Höger

Höger

Mellanslag

Höger

$

Radens slut

End

Radens slut

0

Radens första tecken (kolumn 0)

Home

Radens första tecken

^

Radens första tecken som inte är ett blanktecken

f

Följ av tecken för att flytta till höger om markören

F

Följ av tecken för att flytta till vänster om markören

t

Följ med tecken höger om markören att gå till, och placera markören på tecknet före det

T

Följ med tecken vänster om markören att gå till, och placera markören på tecknet före det

gg

Första raden

G

Sista raden

w

Nästa ord

W

Nästa ord åtskilt av blanktecken

b

Föregående ord

B

Föregående ord åtskilt av blanktecken

e

Ordets slut

E

Ordets slut åtskilt av blanktecken

ge

Föregående ords slut

gE

Föregående ords slut åtskilt av blanktecken

|

Följ med kolumnnummer för att gå till den kolumnen

%

Följ med ett objekt för att gå till det objektet

`

Markera

Första tecken på raden som inte är ett blanktecken där markeringen är

[[

Föregående inledande hakparentes

]]

Nästa inledande hakparentes

[]

Föregående avslutande hakparentes

][

Nästa avslutande hakparentes

Ctrl+I

Gå till nästa position

Ctrl+O

Gå till föregående position

H

Gå till skärmens första rad

M

Gå till raden på skärmens mitt

L

Gå till skärmens sista rad

%procentvärde

Gå till angivet procentvärde av dokumentet

gk

Gå en rad uppåt visuellt (när dynamisk radbrytning används)

gj

Gå en rad neråt visuellt (när dynamisk radbrytning används)

Ctrl+Vänster

Gå ett ord åt vänster

Ctrl+Höger

Gå ett ord åt höger

Textobjekt som stöds

De kan användas för att markera vissa delar av ett dokument.

iw

Inre ord: Ord inklusive blanktecken

aw

Ett ord: Ord exklusive blanktecken

i"

Föregående dubbla citationstecken (") till nästa dubbla citationstecken, inklusive citationstecken

a”

Föregående dubbla citationstecken (") till nästa dubbla citationstecken, exklusive citationstecken

i'

Föregående enkla citationstecken (') till nästa enkla citationstecken, inklusive citationstecken

a'

Föregående enkla citationstecken (') till nästa enkla citationstecken, exklusive citationstecken

i(

Föregående inledande parentes [(] till nästa avslutande parenthesis [)], inklusive parentesen

a(

Föregående inledande parentes [(] till nästa avslutande parentes [)], exklusive parenteserna

i[

Föregående inledande hakparentes ([) till nästa avslutande hakparentes (]), inklusive parenteserna

a[

Föregående inledande hakparentes ([) till nästa avslutande hakparentes (]), exklusive parenteserna

i{

Föregående inledande klammerparentes ({) till nästa avslutande klammerparentes (}), inklusive parenteserna

a{

Föregående inledande klammerparentes ({) till nästa avslutande klammerparentes (}), exklusive parenteserna

i<

Föregående inledande vinkelparentes (<) till nästa avslutande vinkelparentes (>), inklusive parenteserna

a<

Föregående inledande vinkelparentes (<) till nästa avslutande vinkelparentes (>), exklusive parenteserna

i`

Föregående grava accent (`) till nästa grava accent, inklusive accenterna

a`

Föregående grava accent (`) till nästa grava accent, exklusive accenterna

Kommandon i infogningsläge som stöds

Ctrl+D

Avindentera

Ctrl+T

Indentera

Ctrl+E

Infoga nerifrån

Ctrl+Y

Ta bort ord

Ctrl+W

Ta bort ord

Ctrl+U

Ta bort rad

Ctrl+J

Ny rad

Ctrl+H

Ta bort tecken bakåt

Ctrl+Home

Gå till första tecknet i dokumentet

Ctrl+R n

Infoga innehållet i register n

Ctrl+O, kommando

Gå till normalt läge för endast ett kommando

Ctrl+A

Inkrementera talet som för närvarande är markerat

Ctrl+X

Dekrementera talet som för närvarande är markerat

Komma-textobjektet

Objektet saknas i Vim. Komma-textobjektet gör det enkelt att ändra parameterlistor i C-liknande språk och andra listor åtskilda med kommatecken. Det är egentligen området mellan två kommatecken eller mellan ett kommatecken och en parentes. På raden som visas i illustrationen är de tre områden som textobjektet kan omfatta färglagda.

Ett exempel på komma-textobjekt

Intervall för komma-textobjekt. Om markören exempelvis är på arg2, skulle ci, (ändra inre kommatecken) ta bort double arg2 och placera markören mellan de två kommatecknen i infogningsläge. Ett mycket bekvämt sätt att ändra en funktions parametrar.

Saknade funktioner

Som tidigare nämnts, är inte målet med KateParts VI-läge att stödja 100 % av Vims funktioner.