Portál AbcLinuxu, 27. května 2024 00:54

Editor VIM prakticky - I

28. 4. 2003 | Pavel Kysilka
Články - Editor VIM prakticky - I  

Znáte VIM? A schválně: na kolik procent si myslíte, že využíváte jeho možností? Na 50 %? Na 20 %? Nebaví vás už cvakat na klávesnici 2-3x více kláves než je nutné?

Na úvod

Na úvod jsem začal trochu otázkami. Skutečně tento editor má mnoho možností. Před nějakým časem jsem si myslel, že ho ovládám alespoň na 10 %, ale jeho možnosti jsou skoro neomezené. Záleží na tom, co od něj chcete. Po přečtení nějakých těch manuálů a triků vždy nabudu dojmu, že toho příliš moc neumím a možná 5 % jeho možností využívám. Jednou za čas se učím nové grify. Určitě se to vyplatí. Jednou za čas také zjistíte, že pár postupů při editaci se opakuje a že vás již nebaví jenom psát na klávesnici a dělat sekretářku. Potom vám více času a úsilí zbyde na jiné činnosti, třeba na psaní dalšího a efektivnějšího kódu. Na internetu jsem si sehnal nějaké ty návody a prošel pár konferencí a stránek věnovaných tomuto editoru.

Předpokládám, že VIM již trochu ovládáte. Tento článek by měl pomoci především těm, kdo editor jednou za den spustí a pak ho při odchodu z práce možná vypnou. Ale i začátečníci a ti, kteří ho používají občas, si přijdou na své. A nebo pokud vám vadí, že místo jednoho příkazu používáte tři. Ti, kdo o tomto editoru vědí že existuje, zde mohou vidět jeho sílu a možnosti.

Očekávám, že se umíte alespoň trochu pohybovat po textu jinak než šipkami a pomocí kláves PgUp a PgDn a že regulární výrazy budou něco, co používáte denně. Absolutní začátečníky trochu zklamu. Těm doporučím seriály od pana Satrapy na root.cz. Také jsem se z nich učil a začínat se má především od začátku. A přiznám se, že i při psaní tohoto článku jsem se ještě stihl pár triků naučit. Nicméně určitě zde mohou něco najít i uživatelé, kteří píší v něčem jiném. Alespoň možnosti tohoto editoru.

Nebudu se zde rozepisovat o programování funkcí, piškvorkách ve VIMu, mapování kláves, použítí VIMu na skriptování, registrech a značkách.

Tyto vlastnosti nepoužívám. Nějak jsem zatím nenašel důvod je používat a čas se je učit. Nerad bych zde psal o něčem, co neznám či nemám alespoň trochu odzkoušeno. Počítejte s tím, že většina věcí je z praxe a pokusím se je doplnit komentáři a kde ten či onen příkaz použít. Nečekejte příliš ucelený sled informací.

Přiznám se, že mám trošku extrémní styl editace textu. Avšak pro mě velice učinný. Ne náhodou říkám, že v jiných editorech nepracuji, protože je to málo "drsné".

Odložte myši, ruce k sobě na klávesnici (editor je stavěn na to, aby človek měl ruce u sebe a nedělal zbytečné pohyby). Seberte odvahu a maximální úsilí. Bude vás bolet hlava z velkého množství informací a prsty z nových prstokladů.

Možná se vám bude hodit naučit se psát malíčky a ovládat klávesy <ENTER> a <SHIFT>. Další pomůckou bude asi to, že se umíte pohybovat po textu pomocí h, j, k, l <CTRL+Y>, <CTRL+E>, 0, $. Skákat po slovech pomocí w, W, e, E, b, B. Výhodou je také, pokud umíte přímo změnit pomocí kláves příkazový mód na vkládací mód (I, i, a, A, R, O, o, s, S).

Nuže, ostře do toho. Počítejte opravdu s "výživnejším" textem. A jediný způsob, jak pár věcí pochytit, je zkoušet je při psaní, používat je a nebát se občas podivat do manuálu VIMu.

  1. Píšeme hned
  2. Závorky
  3. Doplňujeme cokoli
  4. Prohlížení souborů a práce s nimi
  5. Změny velikosti písmen a hodnot číslic
  6. Rychlejší pohyb v textu
  7. Spouštění a užití externích příkazů
  8. Ukládání a práce se soubory
  9. Vyhledávání
  10. Vyhledávání ve více řádcích
  11. Hledání ve více souborech
  12. Nahrazovačky
  13. Zapamatování
  14. Příkazy na příkazové řádce
  15. Formátování textu
  16. Práce s více soubory najednou
  17. Triky v bashi při spouštění editoru
  18. Sloupcové bloky
  19. Další triky
  20. Kryptování
  21. Hexadecimální a jiné hodnoty znaků
  22. Editace přes FTP
  23. Zvýrazněná syntaxe
  24. Nápověda
  25. Námět k dalšímu článku
  26. Náměty k diskusi

Píšeme hned

Ne vždy je efektivní pohybovat se po textu šipkami a přepínat se mezi jednotlivými módy pomocí kláves <Ins> <Esc>. Jednotlivé módy lze měnit podstatně rychleji. Pro použití těchto zkratek musíte být vždy v příkazovém módu.

Závorky

Ti, kteří dělají v php, mohou navíc skákat po html tazích, značkách <? ?> a klíčových slovek typu if a else. I když není nad závorky a toto hodnotím jako jeden z rozmáhajících se neduhů php.

Doplňujeme cokoli

Zde se pracuje ve vkládacím (insert) módu.

Prohlížení souborů a práce s nimi

Změny velikosti písmen a hodnot číslic

Rychlejší pohyb v textu

Spouštění a užití externích příkazů

Ukládání a práce se soubory

Vyhledávání

Ti, co znají sílu regulérních výrazů, tak přes ně i vyhledávají. Případně pojmenovávají ve zdrojácích celé struktury tak, aby se jim dobře i následně lépe vyhledávalo a nahrazovalo. Ideální je mít zapnutou volbu set incserach. Pozor ale na ni. Vyhledávání ve větších souborech může trošku trvat a především, pokud píšete části hledaného výrazu, tak VIM okamžitě hledá. Na příklady vyhledávání si vezmu všelijaká slova. Podobnost s čímkoli je čistě náhodná.

Vyhledávání ve více řádcích

Víceřádkové vyhledávání. Tady už začíná to pravé vyhledávání a používání regulérních výrazů.

Hledání ve více souborech

Nahrazovačky

Asi znáte. Jeden ze značných spořičů práce. Pokud se něco třikrát a více opakuje, nahrazuju. Nemá smysl něco bezhlavě bušit do klávesnice. Ale je dobré koukat na to, co nahrazujete a zálohy nejsou od věci. Smazat zálohy potom můžete vždy. Někdy je to hodně nebezpečné. Dá se takto ušetřit mnoho práce anebo i vytvořit hodně zajímavých náhodných chyb ve zdrojovém kódu.

Zapamatování

Příkazy na příkazové řádce

Formátování textu

Práce se s více soubory najednou

Triky v bashi při spouštění editoru

Sloupcové bloky

Rozdíl je především v označené oblasti ve vizuálním režimu. Pracujete ve sloupcích.

Případy využití:

Další triky

Kryptování

Hexadecimální a jiné hodnoty znaků

Editace přes ftp

Zvýrazněná syntaxe

Nápověda

Tou se zde nechci příliš zabývat. Zde jen napíši, že obvykle stačí zadat v příkazové řádce :h <nejake slovo>, část výrazu, nějakou klávesovou zkratku. A většinou to editor najde. A nebo ji lze vyvolat pomocí <F1>.

Námět k dalšímu článku

Náměty k diskusi

Cniry 'Tbyqrasvfu' Xlfvyxn
Vg?

Související články

Editor VIM prakticky - II
Kvíz: Co víte o Vimu?

Odkazy a zdroje

www.vim.org
školičky od pana Satrapy
Vim Book
online vyhledávání v dokumentaci
FAQ

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

28.4.2003 10:21 hugis
Rozbalit Rozbalit vše dalsi zdroj
donedavna este celkom ziva konferencia o VIMu, z archivu ktorej som sa dozvedel mnohe zaujimave: http://www.mageo.cz/.chatroom/39103?r=/public_chatrooms.html
28.4.2003 18:08 Martin Krauskopf | skóre: 9
Rozbalit Rozbalit vše dalsi zdroj
Tady bych snad dodal jen to, ze momentalne neni tolik ziva, protoze se nikdo na nic nepta, coz znamena ze Vim je jedna perfektne zdokumentovanej a druhak, ze jsou momentalne vsichni diskutujici spokojeni :) Nicmene pokud se zeptate, urcite vam bude vcelku rychle odpovezeno. Nejednou zkusenosti mohu potrvdit . (A to se obcas ptam vazne na ptakoviny :) ) A za dodam 3). Zakladatel auditka tam ma vystavenej svuj konfigurak, kterej tez nejednu otazku zodpovi. Takze se pripojuji k doporuceni kolegy a pripojuji ze je to asi nejlepsi zdroj v cestine ;)
28.4.2003 11:01 Abraxis
Rozbalit Rozbalit vše A stejne...
...je nejlepsi Ferda! ;)
28.4.2003 11:41 theo | skóre: 15 | Rožnov ... hádej který?
Rozbalit Rozbalit vše Konečně
Hurá, konečně někdo napsal něco pořádného. Už to tady začalo něják upadat :) S tím doplňováním na příkazové řádce (myslím tu ve VIMu) – myslím, že normálně funguje i (teda aspoň mě jo). Taky jsem narazil na zajímavý konfigurační soubor ke stažení od českého autora s českými komentáři. http://www.iglu.cz/wraith/LP000033/s_vim/vimconfig.html Minimálně je to dobrý studijní materiál.
Sine ira et studio
28.4.2003 17:05 Petr Mach
Rozbalit Rozbalit vše Konečně
Ten odkaz je spravne:

http://iglu.cz/wraith/odkaz.html?/s_vim/vimconfig.html

Ten uvedeny brzy ztrati platnost.
30.9.2003 09:19 M.I.B
Rozbalit Rozbalit vše aspell
Konfiguracni priklad zminuje aspell a s nim i poznamku o uzivatelich Win - nemaji smulu !! aspell byl jiz portovan i do tohoto pseudosystemu: http://aspell.net/win32/
28.4.2003 11:46 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Píšeme hned?
Rozhodně tam chybí c. Já osobně nejčastěji začínám vkládní textu cw, cW, c}, cG, c% a podobně, dokonce i ctznak a cfznak používám poměrně často. Oproti tomu je např. popsané s celkem k ničemu.
28.4.2003 12:23 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Píšeme hned?
Obecně schéma [operátor][pohyb] je asi jeden z nejlepších nápadů ve vi a v textových editorech vůbec, a v článku se z něj moc neobjevilo. Např. vE~ pro změnu velikosti písmen ve slově funguje, ale je proti logice vi, protože zbytečně leze do visuálního módu, logické je (i když na stejný počet kláves) g~E, resp. jen ~E, pokud máte zapnutý option tildeop. Např. g~iw resp. g~iW změní velikost znaku slově, ať jste v něm kdekoli, ne jen na začátku, obecně něcoiw (W) udělá něco se slovem, ať jste v něm kdekoli. Dál: Stálo by za to rozlišit, co funguje v kterém módu. Např. můj oblíbený (insert) Ctrl-O, který na jeden příkaz přepne do normálního módu, tam není, a z článku by si člověk myslel, že to někam skočí (což dělá v normálním módu)
:set syntax off
neexistuje, má to být
:syn off
{, } skáčou po odstavcích '" skáče na místo, kde jsme byli v souboru naposledy (vhodné jako autocommand při otevření souboru) '[, '] skáčou na začátek a konec naposledy změněného textu r funguje i na bloky (stejně jako x, s, c, ...) zejména u sloupcových se to často hodí. gd, gD hledá deklarace, Ctrl-] hledá v tags. Doplňování je zrovna jedna z věcí, kde se vyplatí používat funkce, normální je doplňovat cokoli inteligentním tabulátorem, příklad viz :h ins-completion % funguje i na #if a spol. K Ctrl-v bych asi doplnil, že s x lze psát hexadecimálně, a s u lze zadat Unicodový znak (očekává to čtyři hexadecimální čislice). Než gf, který otevře soubor ve stejném okně, spíš používám Ctrl-wf, ale Ctrl-wněco by asi chtělo samostatný odstavec...
29.4.2003 09:25 Vuk
Rozbalit Rozbalit vše Píšeme hned?
> :set syntax off > neexistuje, má to být Existuje to ve tvaru :set syntax=off Asi se vloudil překlep ;-)
29.4.2003 14:13 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Píšeme hned?
:set syntax=off
použije soubor syntaxe off.vim ;-) To není žádné vypnutí. Rozdíl snadno zjistíš tak, že si nějaký soubor syntax/off.vim vyrobíš. Stejně tak bych mohl říci, že syntaxi vypne
:set syntax=foobar
protože žádný fooobar.vim v defaultní distribuce není.
6.5.2003 11:00 Vuk
Rozbalit Rozbalit vše Píšeme hned?
Vidíš, takhle do hloubky jsem nešel. Prostě jsem to vyzkoušel s rovnítkem, zvýraznění to vyplo (lépe řečeno zvýraznění zmizelo), tak jsem si řekl, že to asi bude delší varianta :syn off To je hned :-)
28.5.2004 17:02 Nocni_stin
Rozbalit Rozbalit vše Re: Píšeme hned?
Vypnutí je:
:set syntax=
:-)
14.9.2004 11:54 Davexx
Rozbalit Rozbalit vše Re: Píšeme hned?
Nejjednodušeji:

:sy on

:sy off
28.4.2003 20:03 pavel 'goldenfish' kysilka
Rozbalit Rozbalit vše Píšeme hned?
ono by se toho naslo vice, co by se jeste dalo dopsat. to c je super vec.pouzivam taky.
jeste jeden dil mam castecne pripraveny. zalezi jak bude cas a jak se rychle prokousu napovedou.
28.4.2003 12:51 bhole
Rozbalit Rozbalit vše super...
milujem vim a tento clanok mi priniesol slnko do duse... absolutne super article...
28.4.2003 19:19 rajo AT platon.sk
Rozbalit Rozbalit vše super...
Vsimol si niekto, ze namiesto sipok nesluzia klavesy "ghjk" ale "hjkl" ? Tot chybicka se vloudila ... ale inac super clanok ;)
28.4.2003 19:55 pavel 'goldenfish' kysilka
Rozbalit Rozbalit vše super...
diky za opravu, ty klavesy na pohyb jsou blizko sebe a chybka se vloudila.
28.4.2003 19:57 pavel 'goldenfish' kysilka
Rozbalit Rozbalit vše super...
jeste jednou oprava opravy. ghjk je vedle hjkl.trochu jsem se upsal.
28.4.2003 20:29 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše super...
opraveno.
29.4.2003 10:05 Vuk
Rozbalit Rozbalit vše Dobrá práce
I já se připojuji k pochvale autora. Takovéto přehledy nikdy nejsou na škodu. Dost prakticky využitelná se jeví i relativně nová možnost "folding" -- schování určité části textu za zástupný řádek, a to zejména pro lepší přehled. Autor záměrně vynechal registry, ty jsou však -- alespoň pro mě -- velmi přínosné. Do několika z nich se mi při načtení určitého typu souboru pomocí autocommandu načtou pravidelně užívané "výstřižky", které pak stačí pouze opakovaně "vlepovat". Také je dobrý příkaz (zmíněný v jiné souvislosti) :digraphs -- např. pro psaní německých přehlásek není (nebo o tom nevím) pod Linuxem klávesa jako ve Windows. A k tomu lze dighraphs také využít. Další užitečná funkce pro mě jako spisovatele :-) jsou zkratky (:ab) Na závěr tip přímo autorovi: Zkuste se vyhnout vazbám jako "další _výhodou_ je", "_výhodou_ je také". V každém takovém slově lze ušetřit jeden úhoz ;-) -- v těchto souvislostech by podle mě bylo spíše na místě _výhoda_. Používat v takovýchto větách 7. pád je něco jako psát namísto správného "_cos_ to udělal?" přehnané "_co jsi_ to udělal".
29.4.2003 14:26 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Dobrá práce
Na psaní německých přehlásek je dead_diaeresis, který je normálně na ` (aspoň na mé české klávesnici klávesnici). S tím sedmým pádem je to tak; protože jde o trvalou vlastnost Vimu, měl by tam být první. Dalo by se ale argumentovat klidně i opačně -- používal-li jsem chvíli Vim, a pak přešel k Emacsu, mohl bych napsat ,,další výhodou Vimu bylo...`` ;-)
6.5.2003 11:15 Vuk
Rozbalit Rozbalit vše Dobrá práce
K té přehlásce, mám asi pod Linuxem klávesnici nastavenou jinak, protože pod tou klávesou, jak píšeš, mám standardní anglické znaky (které jsou ovšem mnohem více využívané). Vlastně ty přehlásky píšu jen ve jménech, to přes CTRL-K u: nebo :u není nic zdlouhavého. Navíc pak lze pro ono jméno užít automatické doplňování přes CTRL-N . K druhému odstavci. Jo, jo. Jen bych v takové větě přidal "... pro mě". Ona tam ta funkce asi zůstala, i když bys Vim opustil. :-)
29.4.2003 12:00 bhole
Rozbalit Rozbalit vše mensie problemiky s vimom
mam teraz take mensie problemiky s vimom, ktory je v slacku 9.0. nefunguje mi zadne mazanie. teda vzdy musim skocit pred znak a zmacknut delete.. a taktiez nemozem v (insert) rezime vymazat prazdny riadok, (resp. odriadkovanie = \n v C :). da sa to napr. tak, ze mysou oznacim jeden prazdny znak (stvorec) a potom zmacknem delete. v mdkckom vime z 9.0 to bezalo bez problemov. rozmyslam, ci nemam problem s nastavenim klavesnice.. mam ju ako 102 znakovu.. dikes moc
29.4.2003 13:11 Martin Krauskopf | skóre: 9
Rozbalit Rozbalit vše mensie problemiky s vimom
ad mazani v normal modu) proste zmackni 'X' ;) ad backspace/"mazani \n" v insmodu) :h bs aneb set bs=2 Vyzkouseno ve slacku 8.1, 9.0 nicmene tim to asi nebude ;)
30.4.2003 10:39 Tomas Klein
Rozbalit Rozbalit vše mensie problemiky s vimom
ve Slacku je standardne vim nastaven jako klasicky vi. pouzijte
set nocompatible
a bude se zase chovat tak, jak jste zvykly :-)
1.5.2003 11:35 bhole
Rozbalit Rozbalit vše mensie problemiky s vimom
to je jasne :))) ale tym to nie je..
10.6.2003 11:36 Jan Hrádek
Rozbalit Rozbalit vše jste neco k vyhledavani
takove docasne "set ignorecase" pri vyhledavani/nahrazovani zapnete \c.
28.5.2004 16:47 Nocni_stin
Rozbalit Rozbalit vše Regulérní výrazy
Nechci být detailista, ale co mě ve škole učili, sou regulární výrazy a ne regulérní. :-) Ale jinak super článek, určitě mi některé věci hodně usnadní editaci. Díky
14.9.2006 21:35 Filip
Rozbalit Rozbalit vše Re: Editor VIM prakticky - I
Díky, zajímavé. Jen marně hledám jak nahradit např. čárku za konec řádku. Poradí někdo? Díky.
6.10.2007 15:18 huhu
Rozbalit Rozbalit vše Re: Editor VIM prakticky - I
asi myslis toto:
s/,/\r/
18.12.2008 12:58 Michal Kormoš
Rozbalit Rozbalit vše Re: Editor VIM prakticky - I

Skôr toto:

 

s/,/\n/

 

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.