Skip to content

vi režim

Úvod

Logo Vim

VI režim Kate je projekt na priniesenie modálnej editácie podobnej Vim do textového editora Kate a rozšírením aj do ďalších programov KDE, ktoré zdieľajú rovnaký editorový komponent. Projekt začal ako projekt Google Summer of Code v roku 2008 – kde bola napísaná všetka základná funkcionalita. Pokračoval som v údržbe a ďalšom vývoji tohto kódu a počet chýbajúcich funkcií z Vim sa pomaly znižuje. Väčšina používateľov Vim bude už produktívna vo VI režime Kate. Zoznam toho, čo chýba, nájdete v dolnej časti stránky.

Táto stránka má byť aktualizovaným prehľadom tejto práce.

Na povolenie VI vstupného režimu prejdite na
Nastavenia → Nastaviť Kate… → Úpravy → VI vstupný režim.
Dá sa tiež prepnúť pomocou nastavenia "VI vstupný režim" v ponuke "Úpravy". (Predvolená klávesová skratka je Meta+Ctrl+V – kde Meta je zvyčajne kláves Windows).

Ciele

Cieľom VI režimu nie je byť úplnou náhradou Vim a podporovať všetky funkcie Vim. Jeho cieľom je sprístupniť "spôsob Vim" úpravy textu – a naučené návyky Vim – pre programy používajúce textový editor Kate ako svoj interný editor. Tieto programy zahŕňajú

  1. Textový editor Kate
  2. KWrite – jednoduchý textový editor KDE
  3. KDevelop – pokročilé IDE pre mnoho programovacích jazykov
  4. Kile – editor LaTeX

VI režim sa snaží dobre integrovať s programami a odkláňať sa od správania Vim tam, kde to má zmysel. Napríklad :w otvorí dialóg uloženia vo VI režime Kate.

Nekompatibility s Vim

Existuje len niekoľko funkcií VI režimu Kate, ktoré sú nekompatibilné s Vim (nepočítajúc chýbajúce veci). Sú uvedené nižšie spolu s príslušnými dôvodmi.

  1. Kate: U a Ctrl+r je znovu
    Vim: Ctrl+r je normálne znovu, U sa používa na vrátenie všetkých posledných zmien na jednom riadku
    Dôvodom, prečo U funguje ako znovu vo VI režime Kate, je to, že skratka ctrl+r je predvolene obsadená funkciou nahradenia Kate (hľadanie a nahradenie). Predvolene VI režim neprepíše skratky Kate (toto sa dá nastaviť v Nastavenia → Nastaviť Kate… → Úpravy → VI vstupný režim), preto musí byť akcia znovu dostupná aj ako „bežné“ stlačenie klávesu. Okrem toho sa správanie príkazu U vo Vim dobre nemapuje na interný systém krokov späť Kate, takže jeho podpora by bola netriviálna.
  2. Kate: :print zobrazí dialóg „tlače“
    Vim: :print vytlačí riadky daného rozsahu ako jeho predok ed Príkazy ako :print sú dostupné nielen vo VI režime, ale aj pre používateľov používajúcich „bežnú“ Kate – preto som sa rozhodol nechať príkaz :print otvoriť dialóg tlače – nasledujúc princíp najmenšieho prekvapenia namiesto napodobňovania správania Vim.
  3. Kate: Y skopíruje do konca riadku.
    Vim: Y skopíruje celý riadok, rovnako ako yy. Správanie VI pre príkaz Y je v praxi chyba; Pre oba príkazy zmeny a mazania, cc/dd vykoná svoju akciu na aktuálnom riadku a C/D bude pracovať od stĺpca kurzora po koniec riadku. Avšak yy aj Y skopírujú aktuálny riadok. Vo VI režime Kate Y skopíruje do konca riadku. Toto je opísané ako "logickejšie" v dokumentácii Vim.
  4. Kate: :map zmení vybrané riadky dokumentu pomocou poskytnutého výrazu JavaScript.
    Vim: :map pridá poskytované mapovanie do režimov Normal a Visual. Príkaz "map" bol už rezervovaný Kate; vo verzii 4.12+ môžete na jeho nahradenie použiť kombináciu :nmap a :vmap.

Podporované príkazy

Podporované príkazy normálneho/vizuálneho režimu

KlávesPopis
aVstúpiť do režimu vkladania a pridať za
AVstúpiť do režimu vkladania a pridať na koniec riadku
PiVstúpiť do režimu vkladania
IVložiť pred prvý neprázdny znak v riadku
vVstúpiť do vizuálneho režimu
VVstúpiť do vizuálneho riadkového režimu
<c-v>Vstúpiť do vizuálneho blokového režimu
GVZnova vybrať vizuálny výber
OOtvoriť nový riadok pod
OOtvoriť nový riadok nad
JSpojiť riadky
cZmeniť
CZmeniť do konca riadku
ccZmeniť riadok
sNahradiť znak
SNahradiť riadok
ddOdstrániť riadok
dVymazať
DVymazať do konca riadku
xVymazať znak
XVymazať znak dozadu
guZmeniť na malé písmená
guuZmeniť riadok na malé písmená
gUZmeniť na veľké písmená
gUUZmeniť riadok na veľké písmená
yKopírovať
yyKopírovať riadok
YKopírovať do konca riadku
pVložiť
PVložiť pred
RNahradiť znak
RVstúpiť do režimu nahrádzania
:Prepnúť do príkazového riadku
/Hľadať
uSpäť
<c-r>Znovu
UZnovu
MNastaviť značku
>>Odsadiť riadok
<<Zrušiť odsadenie riadku
>Odsadiť riadky
<Zrušiť odsadenie riadkov
<c-f>Posun o stránku dole
<pagedown>Posun o stránku dole
<c-b>Posun o stránku hore
<pageup>Posun o stránku hore
<c-u>Posun o pol stránky hore
<c-d>Posun o pol stránky dole
zzVycentrovať pohľad na kurzor
GAVytlačiť kód znaku
.Opakovať poslednú zmenu
==Zarovnať riadok
=Zarovnať riadky
~Zmeniť veľkosť písmen
<c-a>Pridať k číslu
<c-x>Odčítať od čísla
<c-o>Prejsť na predchádzajúci skok
<c-i>Prejsť na nasledujúci skok
HPrepnúť do ľavého pohľadu
<c-w><c-h>Prepnúť do ľavého pohľadu
<c-w><left>Prepnúť do ľavého pohľadu
JPrepnúť do dolného pohľadu
<c-w><c-j>Prepnúť do dolného pohľadu
<c-w><down>Prepnúť do dolného pohľadu
KPrepnúť do horného pohľadu
<c-w><c-k>Prepnúť do horného pohľadu
<c-w><up>Prepnúť do horného pohľadu
LPrepnúť do pravého pohľadu
<c-w><c-l>Prepnúť do pravého pohľadu
<c-w><right>Prepnúť do pravého pohľadu
WPrepnúť do nasledujúceho pohľadu
<c-w><c-w>Prepnúť do nasledujúceho pohľadu
SRozdeliť horizontálne
SRozdeliť horizontálne
<c-w><c-s>Rozdeliť horizontálne
VRozdeliť vertikálne
<c-w><c-v>Rozdeliť vertikálne
GT-185Prepnúť na nasledujúcu kartu
GT-185Prepnúť na predchádzajúcu kartu
gqqFormátovať riadok
gqFormátovať riadky
q. / qZačať/ukončiť nahrávanie makra pomocou pomenovaného registra makra.

Podporované pohyby

KlávesPopis
hVľavo
<left>Vľavo
<backspace>Vľavo
jDolu
<down>Dolu
<enter>Dole na prvý neprázdny znak
kHore
<up>Hore
Hore na prvý neprázdny znak
lVpravo
<right>Vpravo
<space>Vpravo
$Na koniec riadku
<end>Na koniec riadku
Na stĺpec 0
<home>Na stĺpec 0
^Na prvý znak riadku
FNájsť znak
FNájsť znak dozadu
TNa znak
TNa znak dozadu
;Opakovať posledný príkaz t. alebo f.
,Opakovať posledný príkaz t. alebo f.
nNájsť nasledujúci
NNájsť predchádzajúci
GgNa prvý riadok
GNa posledný riadok
wSlovo dopredu
VSLOVO dopredu
bSlovo dozadu
BSLOVO dozadu
eNa koniec slova
ENa koniec SLOVA
geNa koniec predchádzajúceho slova
gENa koniec predchádzajúceho SLOVA
%Na zodpovedajúci prvok
`[a-zA-Z><]Na značku
'[a-zA-Z><]Na riadok značky
[[Na začiatok predchádzajúceho bloku zátvoriek
]]Na začiatok nasledujúceho bloku zátvoriek
[]Na koniec predchádzajúceho bloku zátvoriek
][Na koniec nasledujúceho bloku zátvoriek
*Na nasledujúci výskyt slova pod kurzorom
#Na predchádzajúci výskyt slova pod kurzorom
HNa prvý riadok okna
MNa stredný riadok okna
PNa posledný riadok okna
GJNa nasledujúci vizuálny riadok
gkNa predchádzajúci vizuálny riadok

Podporované textové objekty

KlávesPopis
iwVnútorné slovo
aWSlovo
iWVnútorné SLOVO
aWSLOVO
IVnútorné úvodzovky
AÚvodzovky
IVnútorný apostrof
AApostrof
IVnútorný spätný apostrof
ASpätný apostrof
ibVnútorná zátvorka
IVnútorná zátvorka
IVnútorná zátvorka
abZátvorka
AZátvorka
AZátvorka
iBVnútorná zložená zátvorka
OVnútorná zložená zátvorka
IVnútorná zložená zátvorka
aBZložená zátvorka
AZložená zátvorka
AZložená zátvorka
IVnútorný znak nerovnosti
IVnútorný znak nerovnosti
AZnak nerovnosti
AZnak nerovnosti
IVnútorná hranatá zátvorka
IVnútorná hranatá zátvorka
AHranatá zátvorka
AHranatá zátvorka
IVnútorná čiarka
AČiarka

Podporované príkazy režimu vkladania

KlávesPopis
<c-d>Zrušiť odsadenie
<c-t>Odsadiť
<c-e>Vložiť zdola
<c-y>Vložiť zhora
<c-w>Vymazať slovo
<c-r>.Vložiť obsah registra
<c-o>Prepnúť do normálneho režimu pre jeden príkaz
<c-a>Zvýšiť číslo pod kurzorom
<c-x>Znížiť číslo pod kurzorom

Textový objekt čiarka

Toto je niečo, čo mi vo Vim chýbalo. Textový objekt čiarka uľahčuje úpravu zoznamov parametrov v jazykoch podobných C a iných zoznamov oddelených čiarkami. V podstate je to oblasť medzi dvoma čiarkami alebo medzi čiarkou a zátvorkou. V riadku zobrazenom na ilustrácii vpravo sú tri rozsahy, ktoré môže tento textový objekt pokrývať, zvýraznené červenou.

čiarka na

Rozsahy textového objektu čiarka. Ak je kurzor nad, povedzme, „arg2“, stlačenie c i , („zmeniť vnútornú čiarku“) vymaže „double arg2“ a umiestni kurzor medzi dve čiarky v režime vkladania. Veľmi pohodlný spôsob na zmenu parametrov funkcie.

Emulovaný príkazový riadok Vim

Kate 4.11 zaviedla skrytú konfiguračnú možnosť, ktorá spôsobí, že /, ? a : vyvolajú nový panel hľadania/príkazov namiesto zvyčajného panela Kate Hľadať/Nahradiť/Príkazový riadok. Panel je určený na replikáciu mnohých funkcií príkazového riadku Vim a tiež na opravu mnohých problémov s interakciou režimu Vim Kate s panelom Hľadať/Nahradiť Kate (nefunkčné interaktívne nahrádzanie; nesprávne umiestnenie kurzora pri inkrementálnom hľadaní; nepoužiteľné v mapovaniach/makrách; atď.).

Nasledujúce skratky sú poskytované emulovaným príkazovým riadkom; rovnako ako vo Vim, môžu byť premapované pomocou cmap, cnoremap, atď.:

KlávesPopis
<c-r>.vložiť obsah registra.
<c-r><c-w>Vložiť slovo pod kurzorom (dokumentu).
<c-p>Vyvolať kontextové dokončovanie (pozri nižšie)
posunúť späť/hore v zozname dokončovania.
<c-p>Posunúť dopredu/dole v zozname dokončovania.
<c-space>Rozšírenie Kate Vim.
Automaticky dokončiť slovo z dokumentu.
<c-d>Rozšírenie Kate Vim.
Vo výraze sed nahradenia (t.j. s/nájsť/nahradiť/[g][c][i]),
vymaže výraz "nájsť" a umiestni tam kurzor.
<c-f>Rozšírenie Kate Vim.
Vo výraze sed nahradenia (t.j. s/nájsť/nahradiť/[g][c][i]),
vymaže výraz „nahradiť“ a umiestni tam kurzor.
<c-g>.Rozšírenie Kate Vim.
Rovnako ako s ., vloží obsah pomenovaného registra,
ale escapuje ho takým spôsobom, že pri použití s hľadaním
hľadáme doslovný obsah registra;
nie obsah registra interpretovaný ako regulárny výraz.

O "kontextovom dokončovaní" sa rozhoduje nasledovne:

  • V paneli hľadania (/ alebo ?), automaticky dokončiť z histórie hľadania (ktorá zahŕňa hľadania iniciované cez *; a #; hľadania vykonané vo výrazoch sed nahradenia; atď.)
  • V prázdnom príkazovom riadku (:), automaticky dokončiť z histórie príkazov (pozn.: automatické dokončovanie názvov príkazov sa vyvolá automaticky, keď začnete písať).
  • V príkazovom riadku obsahujúcom výraz sed nahradenia (napr. :s/nájsť/nahradiť/gc), ak je kurzor umiestnený nad "nájsť", automaticky dokončiť z histórie "hľadania"; ak nad "nahradiť", automaticky dokončiť z histórie výrazov "nahradenia".

Pri vykonávaní výrazu sed nahradenia v príkazovom riadku s príznakom "c" (napr. s/nájsť/nahradiť/gc) sa spustí interaktívne hľadanie/nahrádzanie v štýle Vim.

Niektoré príklady použitia emulovaného príkazového riadku s animáciami GIF sú uvedené v tomto blogu. Vo verzii 4.11 je možné emulovaný príkazový riadok povoliť nastavením skrytej konfiguračnej možnosti "Vi Input Mode Emulate Command Bar" na true vo vašom katerc/kwriterc/kdeveloprc.

Funkcie

Ako bolo uvedené skôr, cieľom VI režimu Kate nie je podporovať 100% funkcií Vim, avšak niektoré funkcie citeľne chýbajú

  • Vizuálny blokový režim – najmä schopnosť pridať text pred/za vizuálny blokový výber.
  • Dostupnosť príkazov ex v iných programoch ako je aplikácia Kate.
  • Kód hľadania potrebuje vylepšenie a príkazy * a # by mali byť len bežné hľadania.

Ak vám chýbajú iné funkcie alebo chcete pomôcť s vyššie uvedenými, neváhajte ma kontaktovať alebo poslať záplaty! :-)

Zoznam zmien

  • 2010-05-16:
    Počiatočná verzia. Zhromaždenie informácií z blogových príspevkov a súborov README na vytvorenie jedného zdroja aktuálnych informácií.
  • 2010-05-17:
    Pridané Ctrl+A a Ctrl+X (zvýšenie/zníženie čísla pod kurzorom).
  • 2010-08-30:
    Stránka presunutá na kate-editor.org.
  • 2010-09-10:
    Opravený text o textovom objekte čiarka a niektoré opravy formátovania
  • 2021-02-03:
    Tabuľky klávesových skratiek prevedené do markdownu pre hugo.