Vim
Vim (výslovnost [vɪm]IPA; zkratka z Vi IMproved) je open source textový editor, který lze spustit v prostředí většiny operačních systémů. Je oblíbený zejména mezi zkušenými uživateli operačních systémů unixového typu. Kromě klasického Vimu existuje celá řada editorů, které jsou založeny na principu Vimu, ale mají nějaké specifické vlastnosti např. Yzis pro prostředí KDE. VlastnostiModální editorVim je modální editor a ne ledajaký, Vim je nejznámější modální editor. A i když tento koncept ovládání nevymyslel, tak ho výborně adoptoval, rozvinul a postaral se o rozšíření a přijetí tohoto konceptu ovládání textových editorů. Viz kapitola klony Vimu. Toto ovládání je populární zejména mezi vývojáři, pro které je práce s textovým editorem denní chleba. Výhodou modálního ovládání je vysoká efektivita editace textu, nevýhodou obtížnost naučit se tomuto ovládání. Musíte editovat hodně, pokud možno strukturovaného, textu, aby se vám vyplatilo investovat čas a naučit se ovládat Vim. Pokud někomu přijde ovládání Vimu složité, nemýlí se. Modální ovládání znamená, že ovládání probíhá v různých módech. V různých módech editor na stejné klávesové příkazy reaguje různě. Základní mod (v češtině se také používá pojem režim) je mod Normal. V něm lze prohlížet text a s textem manipulovat pomocí příkazů, ale nejde v něm psát. Příkaz je stisknutí klávesy klávesnice a modu Normal, v kterém nejde psát, lze proto jako příkazy používat i obyčejné znaky na klávesnici bez modifikátorů. To usnadňuje jejich zadávání. Těch příkazů je ale tolik, že ani písmena nestačí a mnohé příkazy se skládají z několika písmen. Například příkaz V modu Insert lze vkládat (psát) text a v tomto modu Vim nejvíce připomíná ostatní editory. Jemu je velmi podobný mod Replace, který text nevkládá, ale přepisuje. Tento režim mají i některé běžné editory – s trochou nadsázkou je můžeme považovat také za modální. Další běžné mody jsou mod Visual pro označování textu a mod Command-line pro příkazovou řádku. Příkazovou řádku potřebujeme pro příkazy, kterým potřebujeme předávat parametry. V běžných editorech se místo toho používají dialogová okna. A pak ještě existuje pár speciálních módů. Textové a GUI rozhraníProč má Vim příkazovou řádku a ne dialogová okna, jako každý slušný a spořádaný editor, mohlo někoho napadnout. Je to proto, že Vim má primárně textové rozhraní a byl koncipován pro použití s terminály. Ty se serverem komunikují řádek po řádce, takže ani textová dialogová okna nebyla vhodná. Svět se změnil, moderní Vim už umí GUI a má i textová popup okna, ale příkazová řádka zůstala. ![]() Má i jiné výhody, než je kompatibilita s terminály. Třeba má historii nebo lze dobře skriptovat. Textové rozhraní je užitečné dodnes. Díky němu můžeme mít Vim například na moderním tabletu s Androidem v Termuxu a mít tak plnohodnotné vývojové prostředí na Androidu. Klony Vimu se dokonce ani nenamáhaly GUI implementovat. PříkazyPři čtení vlastností Vimu nešlo přehlédnou, že Vim má příkazy. V příkazech se skrývá hlavní síla Vimu. Vim má hodně příkazů, hodně moc příkazů. Asi nikdo je nezná všechny a i kdyby jo, může si přidat stovky vlastních. A také to dělají pluginy, takže je nelze ani vyčíslit. Na tolik příkazů nestačí všechny klávesy na klávesnici a to ani za pomoci Shift, Ctrl a Alt modifikátorů. Proto Vim podporuje víceznakové příkazy. Samozřejmě co nejkratší, aby dalo co nejméně práce je napsat. I proto má Vim mody, aby mohl mít víc jednodušších příkazů. A stejně tam jeho uživatelé pak píší záhadné věci jako Aby se příkazy lépe pamatovaly, snaží se Vim mít příkazy mnemotechnické a logicky uspořádané. Aby to fungovalo, je potřeba ovládat trochu angličtinu. Například mazání, to vždy začíná příkazem A s tím je spojená druhá síla Vimu, textové objekty. Vim se snaží rozpoznat strukturu textu a s ní pracovat. Slova, věty, odstavce a různé bloky textu vymezené třeba závorkami, uvozovkami nebo html tagy a podobně. Můžete si definovat i vlastní textové objekty. Standardní textové objekty jsou navíc konfigurovatelné a speciálně u slov se rozlišují navíc dva druhy slov, velká W a malá w (word) slova. Příkaz dw smaže malé slovo, dW velké slovo. Velká slova jsou obvykle rozdělena jen prázdnými znaky jako mezera či tabulátor. Malá slova tvoří zpravidla jen písmena, čísla a podtržítka a vše ostatní je rozděluje. To vyhovuje programátorům, protože z těchto znaků se zpravidla skládají názvy proměnných, funkcí a podobně. Tedy například text „pocet_lidi*cena“ je jedno W a tři w. Pokud mám kurzor na „p“ a dám příkaz Nebo mohu chtít smazat text vyznačený uvozovkami. Třeba text „Nazdar lidi!“, kurzor uprostřed. Příkaz Krom textových objektů lze příkazy delete a spol kombinovat i s příkazy pohybu, kam spadá i vyhledávání. Navíc lze zadat počet opakování, tedy Příkazy na úpravu textu jsou jen malá podmnožina příkazů Vimu. Předchozí popis je jen ukázka principů a propracovanosti, na kterých Vim stojí. Pomocí příkazu příkazového řádku :map a řady jeho variant pro různé režimy si může uživatel namapovat své vlastní příkazy a zkratky i své vlastní textové objekty. Když si tento příkaz napíše do svého konfiguračního souboru, bude to mít na vždy. Uživatelé Vimu tohle dělají, přizpůsobují si Vim svým vlastním preferencím a potřebám. Takový konfigurační soubor může bobtnat mnoho let a dorůst stovek i tisíců řádků a sloužit desítky let. Příkaz Vim má v normal režimu speciální příkaz tečka A poslední věc, která se týká příkazů. Pokud vám nestačí příkaz tečka, pak má Vim k dispozici snadno použitelné nahrávání maker. Stačí příkaz RegistryRegistry Vimu jsou pojmenované paměťové oblasti, se kterými lze pracovat, něco jako pojmenované schránky (clipboard). Registry jsou dvou druhů, obecné a speciální. Obecné slouží k ukládání textů do paměti a pro nahrávání maker, běžně do nich zapisujeme i z nich čteme. Speciální registry si pak samy pamatují různé věci, třeba naposledy vyhledávaný text. Ty slouží ke čtení i když i do některých speciálních lze zapisovat. Obecné registry jsou pojmenovány Na registr se odkazujeme znakem Pokud neuvedeme registr, použije se defaultně registr Příkazový řádekNějakou zjednodušenou podobu příkazů má každý textový editor, byť se jim většinou říká hotkeys. Příkazový řádek tak obvyklý není. Ale funkčně se dá připodobnit k jednoduchým dialogovým oknům a menu. Slouží ke spouštění příkazů, kterým předáváme parametry. Třeba při nahrazování textu, otvírání nového souboru a podobně. Ale existují i bezparametrové příkazy třeba pro zavření všech oken a také lze volat funkce skriptovacího jazyka, ať systémové nebo vlastní. Ve Vimu jsou tři mody příkazového řádku, mod Command-line a mod Ex primitivní a moderní. Command-line se vyvolá příkazem Dialogová okna mají výhodu v tom, že si uživatel toho nemusí moc pamatovat a mohou být komplexnější. Vim s gui také může mít dialogová okna, ale to je nadstandardní luxus a Vim musí být schopen se bez nich obejít, protože musí fungovat i na terminálu. Příkazový řádek má ale řadu výhod a silných stránek.
Příkazový řádek má speciální režimy pro vyhledávání, viz kapitola Vyhledávání. VyhledáváníVyhledat si něco v textu je velmi častá potřeba. Vim za tímto účelem poskytuje vyhledávací příkazový řádek s podporou regulárních výrazů a nějaké příkazové zkratky k tomuto. Dále má nastavitelné podbarvování hledaného textu a příkaz pro zobrazení vyhledaných výrazů v samostatném okně, z kterého lze skákat do prohledávaného textu. Příkazový řádek pro vyhledávání se spouští příkazy Pokud je nastaven Vyhledávací příkazový řádek ukončí stisk Enter, který přenese kurzor na první nalezený text. Příkazy n a N můžeme přecházet tam a zpět mezi dalšími výskyty. Příkaz ZnačkyZnačky Okna a panely (taby)FolderyHistorieV roce 1988 napsal Bram Moolenaar obdobu editoru Vi pro Amigu, tento program byl založen na kódu editoru Vi (SteVIe), proto byl pojmenován Vi IMitation. Vim 1 – 1991Roku 1991 byla uveřejněna první veřejná verze tohoto editoru – Vim 1.14. Tato verze byla stále dostupná pouze pro Amigy, na UNIX byla přenesena až verze 1.22, kdy došlo k celé řadě vylepšení. Vim 2 – 1993S příchodem verze 2.0 (prosinec 1993) se editor přejmenoval na Vi IMproved. Vim 3 – 1994Další přelomovou byla verze 3 (1994), kdy se objevila podpora více oken. Vim 4 – 1996Verze 4 z roku 1996: do editoru byla zapracována možnost grafického rozhraní. Byly změněny kódy kláves, např. <ESC> na <Esc> nebo <SC_RIGHT> na <S-Right>. Byly změněny terminálové kódy, aby byly v souladu s termcap kódy. Byla změněna struktura swap souboru. Vim 5 – 1998Vim 5 byla přelomová verze, která z Vimu udělala to, jak ho známe dnes, skriptovatelný editor se zvýrazněnou syntaxí a menu. ZměnySnahou bylo zvýšit kompatibilitu s Vi. Proto se například příkaz pro formátování textu
Auto příkazy ( if !exists("did_ext_autocmds")
let did_ext_autocmds = 1
autocmd BufEnter *.ext ...
endif
Byly změněny textové objekty, z Začaly být používány sys. proměnné Novinky
Vim 6 – 2001Verze 6 přinesla:
Roku 2002 byla změněna licence směrem k licencím typu GPL, což umožnilo využít Vim jako základní editor v některých linuxových distribucích. Tato změna licence byla umožněna faktem, že z původního kódu, který Bram Moolenaar využil, již ve Vimu nezůstalo nic. Vim 7 – 2006Verze 7 přinesla:
Vim 8 – 2016Verze 8 přinesla:
Vim 9 – 2022Verze 9.0 byla věnována Svenu Guckesovi, který zemřel v únoru 2022. Sven byl dlouhodobý podporovatel Vimu, on registroval vim.org a vytvořil první web Vimu. Verze 9.1 (leden 2024) byla věnována Bramu Moolenaarovi, hlavnímu programátorovi Vimu, který ho vytvořil a který zemřel v srpnu 2023, když stále pracoval na vývoji Vimu. Verze 9 přinesla:
LicenceVim je vydáván pod licencí Vim, která obsahuje některé charitativní klauzule, jež uživatele, kterým se software líbí, vybízejí, aby zvážili možnost přispět dětem v Ugandě. Licence Vim je kompatibilní s GNU General Public License díky speciální klauzuli, která umožňuje distribuci upravených kopií pod GNU GPL verze 2.0 nebo novější. RozhraníStejně jako vi není rozhraní Vimu založeno na nabídkách nebo ikonách, ale na příkazech zadaných v textovém uživatelském rozhraní; jeho režim GUI, gVim, přidává nabídky a panely nástrojů pro běžně používané příkazy, ale plná funkčnost je stále vyjádřena prostřednictvím režimu příkazového řádku. Vi (a potažmo i Vim) má tendenci umožnit lidem držet prsty na domovském řádku, což může být výhoda. Vim má vestavěný výukový program pro začátečníky s názvem vimtutor, který se obvykle instaluje spolu s Vimem, ale je samostatně spustitelný a lze jej spustit příkazem shellu. Podrobně popisuje funkce Vimu uživatelská příručka, kterou si lze přečíst přímo ve Vimu, nebo ji lze najít na internetu. Vim má také vestavěnou nápovědu (pomocí příkazu :help), která umožňuje uživatelům dotazovat se a procházet příkazy a funkce. RegistryVim obsahuje různé speciální paměťové položky nazývané registry (nezaměňovat s hardwarovými nebo procesorovými registry). Při řezání, mazání, kopírování nebo vkládání textu může uživatel zvolit uložení manipulovaného textu do registru. K dispozici je 36 univerzálních registrů spojených s písmeny a čísly ([a-z0-9]) a řada speciálních, které buď obsahují speciální hodnoty (aktuální název souboru, poslední příkaz atd.), nebo slouží ke speciálnímu účelu, Režimy VimuStejně jako vi, i vim podporuje několik editačních režimů. V závislosti na režimu jsou zadávané znaky interpretovány buď jako sekvence příkazů, nebo jsou vkládány jako text. Ve vimu existuje 14 editačních režimů, 7 základních režimů a 7 variant.
PřizpůsobeníVim je vysoce přizpůsobitelný , což z něj činí atraktivní nástroj pro uživatele, kteří vyžadují velkou míru kontroly a flexibility nad prostředím pro úpravu textu. Zadávání textu usnadňuje řada funkcí navržených pro zvýšení efektivity klávesnice. Uživatelé mohou provádět složité příkazy pomocí „mapování kláves“, které lze přizpůsobit a rozšířit. Funkce „nahrávání“ umožňuje vytvářet makra, která automatizují sekvence stisků kláves a volají interní nebo uživatelem definované funkce a mapování. Zkratky, podobně jako makra a mapování kláves, usnadňují rozšiřování krátkých textových řetězců na delší a lze je také použít k opravě chyb. Vim také obsahuje „snadný“ režim pro uživatele, kteří hledají jednodušší řešení pro úpravu textu. K dispozici je mnoho zásuvných modulů, které rozšiřují nebo přidávají nové funkce do Vimu. Tyto zásuvné moduly jsou obvykle napsány v interním skriptovacím jazyce Vimu, vimscriptu (známém také jako VimL), ale mohou být napsány i v jiných jazycích. Existují projekty sdružující komplexní skripty a úpravy a zaměřené na to, aby se z Vimu stal nástroj pro konkrétní úkol nebo aby se jeho chování výrazně změnilo. Příkladem může být Cream, díky němuž se Vim chová jako editor typu „klikni a napiš“, nebo VimOutliner, který poskytuje pohodlný outliner pro uživatele systémů podobných Unixu. Režimy editoru VimEditor Vim má podobně jako jeho předchůdce vi tři režimy práce:
Konkurence![]() Modální ovládání Vimu si získalo na popularitě mezi vývojáři. Proto začalo, jako volitelné, pronikat do dalších vývojářských nástrojů. Například jako plugin VSCodeVim pro VS Code. Tyto nápodoby jsou oproti Vimu primitivní, ale ukázaly, že o efektivní modální ovládání a práci s textovými objekty je zájem. A s tím, jak Vim přirozeně stárnul rostl zájem o moderní editor ve stylu Vimu. ![]() NeoVim je snaha o moderní Vim. Slabinou Vimu byla jeho zastaralost, která omezovala tvorbu pluginů. Vim s externím software komunikoval pomocí zastaralé pipeline a jeho jazyk, VimScript byl pomalý. To stačilo na jednoduché věci, ale zájem byl o velké komplexní pluginy, které by Vim rozšiřovaly podstatně. Vim sice bylo možné skriptovat i pomocí Pythonu a dalších jazyků, ale zastaralé jádro tomu bránilo. NeoVim se to snaží napravit. Je naprogramován moderněji, staví na skriptovacím jazyce Lua a snaží se o maximální kompatibilitu s Vimem. Vim na tuto konkurenci reagoval verzí 8, která přinesla možnost spouštění asynchronních funkcí a integrovala do Vimu terminál. Verze 9 pak přinesla nový nekompatibilní kompilovatelný VimScript, který přinesl deseti až stonásobné zrychlení.[1] Je těžké říci, který editor je lepší, v zásadě jsou si hodně podobné. Vim si táhne historickou zátěž kterou napravuje a má širokou komunitu a zejména má verzi s grafickým rozhraním, gVim. NeoVim má jen textovou verzi. Ti, kdo přešli z Vimu 7 na NeoVim, nemají důvod se k Vimu vrátit a uživatelé Vimu nemají důvod přecházet k NeoVimu. Těžko se dá najít něco, co by v druhém editoru nešlo udělat. NeoVim je dostupný v prostředí Termux. ![]() Kakoune se nesnaží vytvořit kopii Vimu. Nechal se inspirovat jeho modálním režimem a práci s textovými objekty, ale příkazy si tvoří po svém. S nadsázkou se dá říci, že je dělá naopak. Ve Vimu smažeme slovo příkazem ![]() Helix sám sebe nazývá postmoderní editor, kdy za ten moderní považuje NeoVim. Je inspirován NeoVimem a Kakounem. Také přichází s modálními režimy, práci s textovými objekty, svou vlastní sadu příkazů a konfigurační soubory ve formátu TOML. Ani on nemá grafické rozhraní, ale na jeho webu je informace, že je v plánu. Helix je mladý editor, který se k Vimu snaží přinést lehkou snadnou alternativu a neaspiruje ho nahradit v jeho maximální konfigurovatelnosti. Helix je dostupný v prostředí Termux. Výkon skriptovacího jazyka VimuJednoduchý benchmark pro srovnáníSoučet čísel – test samotného interpretuKód pro součet čísel ve Vim: let sum = 0
for i in range(1, 2999999)
let sum += i
endfor
Úprava a počítání řádků – test volání api VimuKód pro úpravu a počítání délky řádků ve Vim: let totallen = 0
for i in range(1, 100000)
call setline(i, ' ' .. getline(i))
let totallen += len(getline(i))
endfor
Výhody
Nevýhody
OdkazyReferenceSouvisející články
Externí odkazy
|