VI-Reĝimo
Enkonduko
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.
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
- La Tekstredaktilo Kate
- KWrite – simpla tekstredaktilo de KDE
- KDevelop – Altnivela IDE por multaj programlingivoj
- 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.
- Kate:
U
kajCtrl+r
estas refari
Vim:Ctrl+r
estas normala refari,U
estas uzata por malfari ĉiujn lastajn ŝanĝojn sur unu linio
La kialo por keU
agas kiel refari en la VI-reĝimo de Kate estas ke la ŝparvojoctrl+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. - 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. - Kate:
Y
enbufrigas al la fino de linio.
Vim:Y
enbufrigas la tutan linion, same kielyy
. La konduto de VI por la komandoY
estas praktike cimo; Por kaj ŝanĝi- kaj forigi-komandoj,cc
/dd
faros sian agon sur la nuna linio kajC
/D
funkcios de la kursora kolumno ĝis la fino de la linio. Tamen, kajyy
kajY
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. - 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
Klavo | Priskribo |
---|---|
a | Eniĝi en Insert-reĝimo kaj aldoni |
A | Eniĝi en Insert-reĝimo kaj aldoni ĉe linifino |
i | Eniĝi en Insert-reĝimo |
I | Enigi antaŭ unua ne-spaceta signo en linio |
v | Eniĝi en Vida Reĝimo |
V | Eniĝi en Vida Linioreĝimo |
<c-v> | Eniĝu Vidan Blokreĝimon |
gv | Reelekti Vidan |
o | Malfermi novan linion sube |
O | Malfermi novan linion supre |
J | Kunigi liniojn |
c | Ŝanĝi |
C | Ŝanĝi ĝis linifino |
cc | Ŝanĝi linion |
s | Anstataŭigi signon |
S | Anstataŭigi linion |
dd | Forigi linion |
d | Forigi |
D | Forigi ĝis linifino |
x | Forigi signon |
X | Forigi signon malantaŭan |
gu | Minuskligi |
guu | Minuskligi linion |
gU | Majuskligi |
gUU | Majuskligi linion |
i | Yank |
yy | Yank linion |
Y | Yank al EOL (linifino) |
p | Alglui |
P | Alglui antaŭ |
r. | Anstataŭigi signon |
R | Eniĝi anstataŭigan reĝimon |
: | Ŝalti al komanda reĝimo |
/ | Serĉi |
u | Malfari |
<c-r> | Refari |
U | Refari |
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 |
zz | Centrigi vidon ĉe kursoro |
ga | Presi 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>s | Dividi horizontale |
<c-w>S | Dividi horizontale |
<c-w><c-s> | Dividi horizontale |
<c-w>v | Dividi vertikale |
<c-w><c-v> | Dividi vertikale |
gt | Ŝalti al sekvanta langeto |
gT | Ŝalti al antaŭa langeto |
gqq | Format linion |
gq | Format liniojn |
q. / q | Komenci / fini registradon de makroo uzante la nomitan makroregistron. |
Subtenataj movoj
Klavo | Priskribo |
---|---|
h | Maldekstren |
<left> | Maldekstren |
<backspace> | Maldekstren |
j | Malsupren |
<down> | Malsupren |
<enter> | Malsupren al unua neblankspaco |
k | Supren |
<up> | Supren |
- | Supren al unua neblankspaco |
l | Dekstren |
<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. |
n | Trovi sekvan |
N | Trovi antaŭan |
gg | Al unua linio |
G | Al lasta linio |
w | Vorto antaŭen |
W | VORTO antaŭen |
b | Vorto malantaŭen |
B | VORTO malantaŭen |
e | Al fino de vorto |
E | Al fino de VORTO |
ge | Al fino de antaŭa vorto |
gE | Al 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 |
H | Al la unua linio de fenestro |
M | Al meza linio de fenestro |
L | Al lasta linio de fenestro |
gj | Al la sekva vida linio |
gk | Antaŭ vida linio |
Subtenataj tekstaj objektoj
Klavo | Priskribo |
---|---|
iw | Ena vorto |
aw | Vorto |
iW | Ena VORTO |
aW | VORTO |
i" | Interna duobla citilo |
a" | Duobla citilo |
i’ | Ena unuopa citilo |
a’ | Unuopa citilo |
i` | Interna malantaŭa citilo |
a` | Malapostrofo |
ib | Ena krampo |
i) | Ena krampo |
i( | Ena krampo |
ab | Krampo |
a) | Krampo |
a( | Krampo |
iB | Ena kuniga krampo |
o} | Ena kuniga krampo |
i{ | Ena kuniga krampo |
aB | Kuniga 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
Klavo | Priskribo |
---|---|
<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.
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:
Klavo | Priskribo |
---|---|
<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ŭ?
), 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
kajCtrl+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.