Salti al enhavo

VI-Reĝimo

Enkonduko

Vim-Logo

La VI-reĝimo de Kate estas projekto por alporti Vim-similan, modalan redaktadon al la Kate tekstredaktilo kaj per etendaĵo al aliaj KDE-programoj kiuj kunhavas la saman redaktilo-komponenton. La projekto komenciĝis kiel Google Summer of Code-projekto en 2008 - kie la tuta baza funkcieco estis skribita. Mi daŭre konservis kaj pluevoluigis ĉi tiun kodon kaj la nombro da mankantaj funkcioj de Vim malrapide malpliiĝas. Plej multaj uzantoj de Vim jam estos produktivaj en la VI-reĝimo de Kate. Listo de kio mankas troviĝas ĉe la malsupro de la paĝo.

Ĉi tiu paĝo celas esti ĝisdatigita superrigardo de ĉi tiu laboro.

Por ebligi la VI eniga reĝimo, iru al
Agordoj → Agordu Kate... → Redaktado → VI-eniga reĝimo.
Ĝi ankaŭ povas esti ŝanĝita per la "VI-a eniga reĝimo" agordo en la menuo "Redakti". (La defaŭlta fulmoklavo estas Meta+Ctrl+V – kie Meta kutime estas la Vindoza klavo).

Celoj

La celo de la VI-reĝimo estas ne esti kompleta anstataŭaĵo por Vim kaj subteni ĉiujn la funkciojn de Vim. Ĝia celo estas disponigi la "Vim-vojon" de tekstoredaktado – kaj la Vim-kutimojn lernitajn – disponeblaj por programoj uzantaj la Kate-tekstredaktilon kiel ilian internan redaktilon. Ĉi tiuj programoj inkluzivas

  1. La Tekstredaktilo Kate
  2. KWrite – simpla tekstredaktilo de KDE
  3. KDevelop – Altnivela IDE por multaj programlingivoj
  4. Kile – LaTeX-redaktilo

La VI-reĝimo celas integriĝi bele kun la programoj kaj devii de la konduto de Vim kie ĝi havas sencon. Ekzemple, :w malfermos konservan dialogon en la VI-reĝimo de Kate.

Nekongruecoj kun Vim

Estas nur kelkaj trajtoj de la VI-reĝimo de Kate, kiuj estas malkongruaj kun Vim (ne kalkulante mankantajn aferojn). Ili estas listigitaj malsupre kune kun la respektivaj kialoj.

  1. Kate: U kaj Ctrl+r estas refari
    Vim: Ctrl+r estas normala refari, U estas uzata por malfari ĉiujn lastajn ŝanĝojn sur unu linio
    La kialo por ke U agas kiel refari en la VI-reĝimo de Kate estas ke la ŝparvojo ctrl+r defaŭlte estas prenita de la anstataŭiga funkcio de Kate (serĉi kaj anstataŭigi). Defaŭlte, la VI-reĝimo ne superregas la ŝparvojojn de Kate (ĉi tio povas esti agordita en Agordoj → Agordu Kate... → Redaktado → Vi-Enigo-Reĝimo), tial refari-ago ankaŭ devas esti havebla kiel “regula” klavopremo. Krome, la konduto de la U-komando en Vim ne bone mapas al la interna malfara sistemo de Kate, do estus ne-bagatele subteni ĉiukaze.
  2. Kate: :print montras la dialogon "print"
    Vim: :print presas la liniojn de la donita gamo kiel ĝia avo ed Komandoj kiel :print disponeblas ne nur en la VI-reĝimo sed ankaŭ por uzantoj uzantaj “regulan” Kate – mi do elektis lasi la komandon :print malfermi la presitan dialogon – laŭ la principo de malplej surprizo anstataŭ imiti la konduton de Vim.
  3. Kate: Y enbufrigas al la fino de linio.
    Vim: Y enbufrigas la tutan linion, same kiel yy. La konduto de VI por la komando Y estas praktike cimo; Por kaj ŝanĝi- kaj forigi-komandoj, cc/dd faros sian agon sur la nuna linio kaj C/D funkcios de la kursora kolumno ĝis la fino de la linio. Tamen, kaj yy kaj Y enbufrigas la nunan linion. En la VI-Reĝimo de Kate, Y enbufrigos ĝis la fino de la linio. Ĉi tio estas priskribita kiel "pli logika" en la Vim-dokumentaro.
  4. Kate: :map ŝanĝas la elektitajn liniojn de la dokumento uzante la provizitan JavaScript-esprimon.
    Vim: :map aldonas la provizitan mapadon al Normala kaj Vida reĝimoj. La komando "map" jam estis rezervita de Kate; en 4.12+, vi povas uzi kombinaĵon de :nmap kaj :vmap por anstataŭigi ĝin.

Komandoj Subtenataj

Subtenataj norm-/vid-reĝimaj komandoj

KlavoPriskribo
aEniĝi en Insert-reĝimo kaj aldoni
AEniĝi en Insert-reĝimo kaj aldoni ĉe linifino
iEniĝi en Insert-reĝimo
IEnigi antaŭ unua ne-spaceta signo en linio
vEniĝi en Vida Reĝimo
VEniĝi en Vida Linioreĝimo
<c-v>Eniĝu Vidan Blokreĝimon
gvReelekti Vidan
oMalfermi novan linion sube
OMalfermi novan linion supre
JKunigi liniojn
cŜanĝi
CŜanĝi ĝis linifino
ccŜanĝi linion
sAnstataŭigi signon
SAnstataŭigi linion
ddForigi linion
dForigi
DForigi ĝis linifino
xForigi signon
XForigi signon malantaŭan
guMinuskligi
guuMinuskligi linion
gUMajuskligi
gUUMajuskligi linion
iYank
yyYank linion
YYank al EOL (linifino)
pAlglui
PAlglui antaŭ
r.Anstataŭigi signon
REniĝi anstataŭigan reĝimon
:Ŝalti al komanda reĝimo
/Serĉi
uMalfari
<c-r>Refari
URefari
m.Meti markon
>>Deŝovi linion
<<Maldeŝovi linion
>Deŝovi liniojn
<Maldeŝovi liniojn
<c-f>Rulumi paĝon malsupren
<pagedown>Rulumi paĝon malsupren
<c-b>Rulumi paĝon supren
<pageup>Rulumi paĝon supren
<c-u>Rulumi duonpaĝon supren
<c-d>Rulumi duonpaĝon malsupren
zzCentrigi vidon ĉe kursoro
gaPresi signokodon
.Ripeti lastan ŝanĝon
==Vicigi linion
=Vicigi liniojn
~Ŝanĝi usklecon
<c-a>Adicii al numero
<c-x>Subtrahi de numero
<c-o>Iri al antaŭa salto
<c-i>Iri al sekvanta salto
<c-w>hŜalti al maldekstra vido
<c-w><c-h>Ŝalti al maldekstra vido
<c-w><left>Ŝalti al maldekstra vido
<c-w>jŜalti al malsupra vido
<c-w><c-j>Ŝalti al malsupra vido
<c-w><down>Ŝalti al malsupra vido
<c-w>kŜalti al supra vido
<c-w><c-k>Ŝalti al supra vido
<c-w><up>Ŝalti al supra vido
<c-w>lŜalti al dekstra vido
<c-w><c-l>Ŝalti al dekstra vido
<c-w><right>Ŝalti al dekstra vido
<c-w>wŜalti al sekvanta vido
<c-w><c-w>Ŝalti al sekvanta vido
<c-w>sDividi horizontale
<c-w>SDividi horizontale
<c-w><c-s>Dividi horizontale
<c-w>vDividi vertikale
<c-w><c-v>Dividi vertikale
gtŜalti al sekvanta langeto
gTŜalti al antaŭa langeto
gqqFormat linion
gqFormat liniojn
q. / qKomenci / fini registradon de makroo uzante la nomitan makroregistron.

Subtenataj movoj

KlavoPriskribo
hMaldekstren
<left>Maldekstren
<backspace>Maldekstren
jMalsupren
<down>Malsupren
<enter>Malsupren al unua neblankspaco
kSupren
<up>Supren
-Supren al unua neblankspaco
lDekstren
<right>Dekstren
<space>Dekstren
$Al EOL (linifino)
<end>Al EOL (linifino)
Al kolumno 0
<home>Al kolumno 0
^Al unua signo de linio
f.Trovi signon
F.Trovi signon malantaŭen
t.Al signo
T.Al signo malantaŭen
;Ripeti lastan komandon t. aŭ f.
,Ripeti lastan komandon t. aŭ f.
nTrovi sekvan
NTrovi antaŭan
ggAl unua linio
GAl lasta linio
wVorto antaŭen
WVORTO antaŭen
bVorto malantaŭen
BVORTO malantaŭen
eAl fino de vorto
EAl fino de VORTO
geAl fino de antaŭa vorto
gEAl fino de antaŭa VORTO
%Al kongrua ero
`[a-zA-Z><]Al marko
'[a-zA-Z><]Al marka linio
[[Al antaŭa kurbkrampa blokkomenco
]]Al sekvanta kurbkrampa blokkomenco
[]Al antaŭa kurbkrampa blokfino
][Al sekvanta kurbkrampa blokfino
*Al la sekva apero de vorto sub kursoro
#Antaŭ la apero de vorto sub kursoro
HAl la unua linio de fenestro
MAl meza linio de fenestro
LAl lasta linio de fenestro
gjAl la sekva vida linio
gkAntaŭ vida linio

Subtenataj tekstaj objektoj

KlavoPriskribo
iwEna vorto
awVorto
iWEna VORTO
aWVORTO
i"Interna duobla citilo
a"Duobla citilo
i’Ena unuopa citilo
a’Unuopa citilo
i`Interna malantaŭa citilo
a`Malapostrofo
ibEna krampo
i)Ena krampo
i(Ena krampo
abKrampo
a)Krampo
a(Krampo
iBEna kuniga krampo
o}Ena kuniga krampo
i{Ena kuniga krampo
aBKuniga krampo
a}Kuniga krampo
a{Kuniga krampo
i<Ena malegaleca signo
i>Ena malegaleca signo
a<Malegaleca signo
a>Malegaleca signo
i[Ena angula krampo
I]Ena angula krampo
a[Angulkrampo
a]Angulkrampo
i,Ena komo
a,Komo

Subtenataj enmetaj reĝimaj komandoj

KlavoPriskribo
<c-d>Maldeŝovi
<c-t>Deŝovi
<c-e>Enmeti de malsupre
<c-y>Enmeti de supre
<c-w>Forigi vorton
<c-r>.Enigi enhavon de registro
<c-o>Ŝalti al normala reĝimo por unu komando
<c-a>Pliigi nombron sub la kursoro
<c-x>Malpliigi nombron sub kursoro

La Komo Teksta Objekto

Ĉi tio estas io, kion mi mankis en Vim. La tekstobjekto coma faciligas modifi parametrajn listojn en C-similaj lingvoj kaj aliaj komoj disigitaj listoj. Ĝi estas esence la areo inter du komoj aŭ inter komo kaj krampo. En la linio montrita en la ilustraĵo dekstre, la tri intervaloj kiujn ĉi tiu tekstobjekto povas etendi estas elstarigitaj ruĝe.

komo al

Koma teksto-objektaj gamoj. Se la kursoro estas finita, diru, "arg2", premante c i , ("ŝanĝi internan komon") forigus "duoblan arg2" kaj metus la kursoron inter la du komoj en enmeti reĝimon. Tre oportuna maniero ŝanĝi la parametrojn de funkcio.

Emulita Vim Command Bar

Kate 4.11 enkondukis kaŝitan agordan opcion, kiu faras /, ? kaj : aperigi novan serĉon/komandon anstataŭ la kutima Kate Find/Replace/Komandlinia breto. La breto celas reprodukti multajn el la funkcioj de la komandbreto de Vim, kaj ankaŭ solvi multajn problemojn pri la interago de Kate Vim-reĝimo kun la Trovi/Anstataŭigi-breto de Kate (interaga anstataŭigo ne funkcias; pliiga serĉo ne poziciigante la kursoron ĝuste; ne uzebla en mapadoj/makrooj; ktp).

La sekvaj ŝparvojoj estas provizitaj de la kopiita komandbreto; kiel ĉe Vim, ĉi tiuj povas esti remapitaj per cmap, cnoremap, ktp:

KlavoPriskribo
<c-r>.enmeti enhavon de registro.
<c-r><c-w>Enigi vorton sub la (dokumenta) kursoro.
<c-p>Alvoki kuntekstan kompletigon (vidu sube)
iri malantaŭen/supren en la kompletigolisto.
<c-p>Movi antaŭen/malsupren en la kompletigolisto.
<c-space>Kate Vim Etendo.
Aŭtomate kompletigi vorton el dokumento.
<c-d>Kate Vim Etendo.
En sed-anstataŭiga esprimo (t.e. s/trovi/anstataŭigi/[g][c][i]),
malplenigi la terminon "trovi" kaj meti la kursoron tie.
<c-f>Kate Vim Etendo.
En sed-anstataŭiga esprimo (t.e. s/trovi/anstataŭigi/[g][c][i]),
forigi la "anstataŭigi" terminon kaj meti la kursoron tie.
<c-g>.Kate Vim Etendo.
Kiel ĉe ., enigi la enhavon de la nomita registro,
sed eskapi ĝin tiel, ke kiam oni uzas kun serĉo,
ni serĉas la laŭvortan enhavon de la registro;
ne la enhavo de la registro interpretita kiel regex.

La "kuntekst-specifa kompletigo" estas decidita jene:

  • En serĉbreto (/?), aŭtomate kompletigo de serĉhistorio (kiu inkluzivas serĉojn komencitajn per *; kaj #; serĉoj faritaj en sed-anstataŭaj esprimoj; ktp.)
  • En malplena komandbreto (:), aŭtomate kompletigi el komandhistorio (NB: aŭtomata kompletigo de komandnomoj estas aŭtomate alvokita kiam vi komencas tajpi).
  • En komandbreto enhavanta sed-anstataŭigan esprimon (ekz. :s/find/replace/gc), se la kursoro estas poziciigita super "trovi", aŭtomate kompletigi el la historio de "serĉo"; se super la "anstataŭigi", aŭtomate kompletigu el la historio de "anstataŭigi" terminoj.

Kiam oni efektivigas sed-anstataŭigan esprimon en la komandbreto kun la flago "c" (ekz. s/find/replace/gc), Vim-stila interaga serĉo/anstataŭiga esprimo estos iniciatita.

Kelkaj ekzemplo-uzoj de la kopiita komandbreto, kun GIF-animacioj, estas donitaj en ĉi tiu blogo. En 4.11, la kopiita komandbreto povas esti ebligita per agordo de la kaŝita agorda opcio "Vi Input Mode Emulate Command Bar" al true en via katerc/kwriterc/kdeveloprc.

Mankantaj Trajtoj

Kiel dirite antaŭe, la celo de la VI-Reĝimo de Kate estas ne subteni 100% de la funkcioj de Vim, tamen ekzistas iuj funkcioj, kiuj ege sopiras.

  • Vida blokreĝimo - precipe la kapablo antaŭmeti/almeti tekston al la vida bloka elekto.
  • Havante eks-komandojn haveblaj en aliaj programoj ol la Kate-aplikaĵo.
  • La serĉkodo bezonas plibonigon kaj la * kaj # komandoj devus esti nur regulaj serĉoj.

Se vi maltrafas aliajn funkciojn aŭ volas helpi pri la supre menciitaj, bonvolu kontakti min aŭ sendi diakilojn! :-)

Ŝanĝprotokolo

  • 2010-05-16:
    Komenca versio. Kolektis la informojn el blogaj enskriboj kaj README-dosieroj por fari ununuran fonton de aktualaj informoj.
  • 2010-05-17:
    Ctrl+A kaj Ctrl+X aldonitaj (pliigo/malpliigo de nombro sub kursoro).
  • 2010-08-30:
    Movita paĝo al kate-editor.org.
  • 2010-09-10:
    Riparis la tekston sur la koma tekstobjekto kaj faris kelkajn formatadajn korektojn
  • 2021-02-03:
    Konvertis klavbindajn tabelojn al markdown por hugo.