Vi-inmatningsläget

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 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 s VI-läge.
För att aktivera VI-inmatningsläget för alla nya vyer, gå till Inställningar Anpassa ... Redigering Vi-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 V, där Meta oftast är Fönster-tangenten).
Många tangentbordskommandon i VI-läget är skiftlägeskänslig, i motsats till de flesta tangentbordsgenvägar i . 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å Y.
Detta gäller inte för kommandon som använder -tangenten, vilka kan skrivas in oberoende av värdet på Caps Lock och utan att hålla ner . Dock kräver vissa kommandon användning av -tangenten följt av en annan tangent som är skiftlägeskänslig. För att exempelvis skriva in Wh (byt till delad vy höger) försäkra dig om att Caps Lock inte är aktivt, tryck på W, släpp, och tryck därefter på H.

Funktioner inkompatibla med Vim
Det finns bara ett fåtal funktioner i s VI-läge som är inkompatibla med Vim (om man inte räknar saknade funktioner). De listas nedan tillsammans med respektive orsak.
: U och R är gör om.
Vim: 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 s VI-läge är att genvägen R normalt används av s ersättningsfunktion (sök och ersätt). Normalt överskrider inte VI-läget s genvägar (det kan ställas in i Inställningar Anpassa ... Redigering Vi-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 s interna ångringssystem väl, så det skulle hur som helst inte vara trivialt att stödja.
: 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 på vanligt sätt. Därför visar kommandot :print utskriftsdialogrutan, med principen att minimera överraskningar istället för att härma Vims beteende.
: 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 s VI-läge rycker Y ut till radens slut. Det beskrivs som mer logiskt i Vims dokumentation.
: 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å Freenode).

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 s kommandorad, vilket möjliggör att köra många kommandon tillgängliga i Vi-implementeringar samt vissa specifika för . För mer information om dessa kommandon, se . 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 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
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
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
F	Sida ner
B	Sida upp
ga	Skriv ut tecknets ASCII-värde
.	Upprepa senaste ändring
==	commandAlignLine
=	commandAlignLines
~	Ändra skiftläge för aktuellt tecken
S	Dela vyn horisontellt
V	Dela vyn vertikalt
W, w	Gå cykliskt till nästa delade fönster
W, h W Vänster	Gå till det delade fönstret till vänster
W, l W Höger	Gå till det delade fönstret till höger
W, k W Upp	Gå till det delade fönstret ovanför
W, j 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änsterpil	Vänster
Baksteg	Vänster
j	Ner
Neråtpil	Ner
k	Upp
Uppåtpil	Upp
l	Höger
Högerpil	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
I	Gå framåt till nästa position
O	Gå bakåt 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)
Vänsterpil	Gå ett ord åt vänster
Högerpil	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
D	Avindentera
T	Indentera
E	Infoga nerifrån
Y	Ta bort ord
W	Ta bort ord
U	Ta bort rad
J	Ny rad
H	Ta bort tecken bakåt
Home	Gå till första tecknet i dokumentet
R n	Infoga innehållet i register n
O, kommando	Gå till normalt läge för endast ett kommando
A	Inkrementera talet som för närvarande är markerat
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
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 s VI-läge att stödja 100 % av Vims funktioner.