vi režim
Úvod

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.
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ú
- Textový editor Kate
- KWrite – jednoduchý textový editor KDE
- KDevelop – pokročilé IDE pre mnoho programovacích jazykov
- 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.
- Kate:
UaCtrl+rje znovu
Vim:Ctrl+rje normálne znovu,Usa používa na vrátenie všetkých posledných zmien na jednom riadku
Dôvodom, prečoUfunguje ako znovu vo VI režime Kate, je to, že skratkactrl+rje 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. - Kate:
:printzobrazí dialóg „tlače“
Vim::printvytlačí 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:printotvoriť dialóg tlače – nasledujúc princíp najmenšieho prekvapenia namiesto napodobňovania správania Vim. - Kate:
Yskopíruje do konca riadku.
Vim:Yskopíruje celý riadok, rovnako akoyy. Správanie VI pre príkazYje v praxi chyba; Pre oba príkazy zmeny a mazania,cc/ddvykoná svoju akciu na aktuálnom riadku aC/Dbude pracovať od stĺpca kurzora po koniec riadku. AvšakyyajYskopírujú aktuálny riadok. Vo VI režime KateYskopíruje do konca riadku. Toto je opísané ako "logickejšie" v dokumentácii Vim. - Kate:
:mapzmení vybrané riadky dokumentu pomocou poskytnutého výrazu JavaScript.
Vim::mappridá 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:nmapa:vmap.
Podporované príkazy
Podporované príkazy normálneho/vizuálneho režimu
| Kláves | Popis |
|---|---|
| a | Vstúpiť do režimu vkladania a pridať za |
| A | Vstúpiť do režimu vkladania a pridať na koniec riadku |
| Pi | Vstúpiť do režimu vkladania |
| I | Vložiť pred prvý neprázdny znak v riadku |
| v | Vstúpiť do vizuálneho režimu |
| V | Vstúpiť do vizuálneho riadkového režimu |
| <c-v> | Vstúpiť do vizuálneho blokového režimu |
| GV | Znova vybrať vizuálny výber |
| O | Otvoriť nový riadok pod |
| O | Otvoriť nový riadok nad |
| J | Spojiť riadky |
| c | Zmeniť |
| C | Zmeniť do konca riadku |
| cc | Zmeniť riadok |
| s | Nahradiť znak |
| S | Nahradiť riadok |
| dd | Odstrániť riadok |
| d | Vymazať |
| D | Vymazať do konca riadku |
| x | Vymazať znak |
| X | Vymazať znak dozadu |
| gu | Zmeniť na malé písmená |
| guu | Zmeniť riadok na malé písmená |
| gU | Zmeniť na veľké písmená |
| gUU | Zmeniť riadok na veľké písmená |
| y | Kopírovať |
| yy | Kopírovať riadok |
| Y | Kopírovať do konca riadku |
| p | Vložiť |
| P | Vložiť pred |
| R | Nahradiť znak |
| R | Vstúpiť do režimu nahrádzania |
| : | Prepnúť do príkazového riadku |
| / | Hľadať |
| u | Späť |
| <c-r> | Znovu |
| U | Znovu |
| M | Nastaviť 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 |
| zz | Vycentrovať pohľad na kurzor |
| GA | Vytlač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 |
| H | Prepnúť do ľavého pohľadu |
| <c-w><c-h> | Prepnúť do ľavého pohľadu |
| <c-w><left> | Prepnúť do ľavého pohľadu |
| J | Prepnúť do dolného pohľadu |
| <c-w><c-j> | Prepnúť do dolného pohľadu |
| <c-w><down> | Prepnúť do dolného pohľadu |
| K | Prepnúť do horného pohľadu |
| <c-w><c-k> | Prepnúť do horného pohľadu |
| <c-w><up> | Prepnúť do horného pohľadu |
| L | Prepnúť do pravého pohľadu |
| <c-w><c-l> | Prepnúť do pravého pohľadu |
| <c-w><right> | Prepnúť do pravého pohľadu |
| W | Prepnúť do nasledujúceho pohľadu |
| <c-w><c-w> | Prepnúť do nasledujúceho pohľadu |
| S | Rozdeliť horizontálne |
| S | Rozdeliť horizontálne |
| <c-w><c-s> | Rozdeliť horizontálne |
| V | Rozdeliť vertikálne |
| <c-w><c-v> | Rozdeliť vertikálne |
| GT-185 | Prepnúť na nasledujúcu kartu |
| GT-185 | Prepnúť na predchádzajúcu kartu |
| gqq | Formátovať riadok |
| gq | Formátovať riadky |
| q. / q | Začať/ukončiť nahrávanie makra pomocou pomenovaného registra makra. |
Podporované pohyby
| Kláves | Popis |
|---|---|
| h | Vľavo |
| <left> | Vľavo |
| <backspace> | Vľavo |
| j | Dolu |
| <down> | Dolu |
| <enter> | Dole na prvý neprázdny znak |
| k | Hore |
| <up> | Hore |
| – | Hore na prvý neprázdny znak |
| l | Vpravo |
| <right> | Vpravo |
| <space> | Vpravo |
| $ | Na koniec riadku |
| <end> | Na koniec riadku |
| Na stĺpec 0 | |
| <home> | Na stĺpec 0 |
| ^ | Na prvý znak riadku |
| F | Nájsť znak |
| F | Nájsť znak dozadu |
| T | Na znak |
| T | Na znak dozadu |
| ; | Opakovať posledný príkaz t. alebo f. |
| , | Opakovať posledný príkaz t. alebo f. |
| n | Nájsť nasledujúci |
| N | Nájsť predchádzajúci |
| Gg | Na prvý riadok |
| G | Na posledný riadok |
| w | Slovo dopredu |
| V | SLOVO dopredu |
| b | Slovo dozadu |
| B | SLOVO dozadu |
| e | Na koniec slova |
| E | Na koniec SLOVA |
| ge | Na koniec predchádzajúceho slova |
| gE | Na 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 |
| H | Na prvý riadok okna |
| M | Na stredný riadok okna |
| P | Na posledný riadok okna |
| GJ | Na nasledujúci vizuálny riadok |
| gk | Na predchádzajúci vizuálny riadok |
Podporované textové objekty
| Kláves | Popis |
|---|---|
| iw | Vnútorné slovo |
| aW | Slovo |
| iW | Vnútorné SLOVO |
| aW | SLOVO |
| I | Vnútorné úvodzovky |
| A | Úvodzovky |
| I | Vnútorný apostrof |
| A | Apostrof |
| I | Vnútorný spätný apostrof |
| A | Spätný apostrof |
| ib | Vnútorná zátvorka |
| I | Vnútorná zátvorka |
| I | Vnútorná zátvorka |
| ab | Zátvorka |
| A | Zátvorka |
| A | Zátvorka |
| iB | Vnútorná zložená zátvorka |
| O | Vnútorná zložená zátvorka |
| I | Vnútorná zložená zátvorka |
| aB | Zložená zátvorka |
| A | Zložená zátvorka |
| A | Zložená zátvorka |
| I | Vnútorný znak nerovnosti |
| I | Vnútorný znak nerovnosti |
| A | Znak nerovnosti |
| A | Znak nerovnosti |
| I | Vnútorná hranatá zátvorka |
| I | Vnútorná hranatá zátvorka |
| A | Hranatá zátvorka |
| A | Hranatá zátvorka |
| I | Vnútorná čiarka |
| A | Čiarka |
Podporované príkazy režimu vkladania
| Kláves | Popis |
|---|---|
| <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.

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áves | Popis |
|---|---|
| <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+AaCtrl+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.