Obsah
1. Užitečné skripty a pluginy pro textový editor Vim (5.část)
3.2 Instalace pluginu Surround
4.2 Instalace pluginu snipMate
4.4 Ukázka použití pluginu snipMate pro céčko
4.5 Ukázka použití pluginu snipMate pro HTML
4.6 Ukázka použití pluginu snipMate pro Javu
5.1 Popis pluginu vim-fireplace
5.2 Instalace pluginu vim-fireplace
5.3 Použití pluginu vim-fireplace
7. Odkazy na předchozí části článku
1. Užitečné skripty a pluginy pro textový editor Vim (5.část)
Podobně jako v předchozí části článku o užitečných pluginech vytvořených pro textový editor Vim se i dnes budeme zabývat přídavnými moduly určenými především pro vývojáře popř. pro ty uživatele, kteří využívají některý značkovací jazyk typu XML či HTML. Nejprve se zmíníme o dvojici univerzálních modulů nazvaných Matchit a Surround, dále si popíšeme přídavný modul nazvaný snipMate, což je jeden z nejpopulárnějších vimovských pluginů vůbec, a následně se zmíníme o modulu nazvaném vim-fireplace a taktéž o modulu s jednoduchým názvem c.vim. Předposlední zmíněný modul vim-fireplace je určen pro programátory využívající jazyk Clojure, poslední modul c.vim pak může zjednodušit a urychlit práci vývojářům v programovacím jazyku C.
Obrázek 1: Obsah adresáře ~/.vim/bundle s některými dnes popisovanými pluginy otevřený přímo ve Vimu (plugin Netrw).
2. Plugin Matchit
2.1 Popis pluginu Matchit
Před popisem dnešního prvního modulu s názvem Matchit bude vhodné si připomenout, že textový editor Vim obsahuje několik desítek příkazů určených pro pohyb kurzoru, přičemž tyto příkazy lze snadno kombinovat s editačními operacemi (yank, change, delete) popř. operacemi pro modifikaci textu (změna znaků na velká písmena atd. atd.). Kromě jednoduchých příkazů pro pohyb kurzoru typu „posun o znak doleva“, „posun o slovo doprava“ ve Vimu najdeme i složitější příkazy. Mezi tyto příkazy patří i zdánlivě primitivní příkaz %, který je však ve skutečnosti velmi užitečný. Tento příkaz je součástí původního textového editoru vi, ovšem pro potřeby Vimu byl v několika ohledech vylepšen. V čem však vlastně spočívá užitečnost tohoto příkazu při editaci zdrojových kódů? Tento příkaz dokáže najít na aktuálně editovaném řádku takzvaný párový znak umístěný na místě kurzoru či napravo od kurzoru a posléze skočí na opačný párový znak. Tento druhý párový znak se může nacházet jak napravo, tak i nalevo od kurzoru, popř. na zcela jiném řádku v editovaném souboru. Vzhledem k tomu, že se jedná o příkaz přesunu kurzoru, lze ho kombinovat s příkazy d, c, > atd.
Obrázek 2: Pozice textového kurzoru před zavoláním příkazu %.
Jako párové znaky jsou většinou nastaveny tři druhy závorek – kulaté závorky (), hranaté závorky [] a složené závorky {}. Ovšem s využitím volby matchpairs lze nastavit i další párové znaky, například ostré závorky <>:
:set matchpairs=(:),[:],{:},<:>
V současné verzi textového editoru Vim je nastavení volby matchpairs skutečně omezeno na dvojici jednotlivých znaků, což je ovšem pouze zdánlivé omezení, které lze lehce napravit – a to právě použitím pluginu Matchit.
Obrázek 3: Po zadání příkazu % je napravo od kurzoru nalezen první párový znak, kterým je v tomto případě levá složená závorka {. Posléze editor nalezne druhý párový znak (je na řádku 19) a přesune se na něj.
Obrázek 4: Opětovné zadání příkazu % způsobí návrat na otevírací složenou závorku {.
2.2 Instalace pluginu Matchit
Instalace pluginu Matchit je zcela jednoduchá a většinou nezabere prakticky žádný čas – tento plugin je totiž součástí instalace Vimu, přesněji řečeno (alespoň ve většině distribucí) je modul součástí balíčku vim-runtime. Ostatně se o tom můžeme snadno přesvědčit, například na distribucích založených na .deb balíčcích:
dpkg-query -L vim-runtime |grep match /usr/share/vim/vim74/plugin/matchparen.vim /usr/share/vim/vim74/macros/matchit.vim /usr/share/vim/vim74/macros/matchit.txt /usr/share/vim/addons/plugin/matchit.vim /usr/share/vim/addons/doc/matchit.txt
Instalace je popsaná přímo v nápovědě Vimu (vše se spouští přímo z editoru, lze samozřejmě i na příkazové řádce po vynechání prvních dvou znaků):
:!mkdir ~/.vim :!mkdir ~/.vim/plugin :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin :!mkdir ~/.vim/doc :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc :helptags ~/.vim/doc
Obrázek 5: Modul Matchit se instaluje prostým zkopírováním dvou souborů do adresáře ~/.vim.
2.3 Použití pluginu Matchit
Po otevření souboru, jehož typ je v modulu Matchit nakonfigurován, lze použít následující příkazy:
# | Příkaz | Význam |
---|---|---|
1 | % | doskok na párovou sekvenci znaků (if-endif atd.) |
2 | g% | podobné předchozímu příkazu, ale doskakuje se v opačném pořadí (má význam u trojice, čtveřice apod. ale logicky ne u páru) |
3 | a% | v režimu výběru umožňuje vybrat celý blok. Kurzor se umístí na párový znak/sekvenci a stlačí se va% |
Obrázek 6: Nápověda k modulu Matchit.
Sekvence znaků, které se mají považovat za párové, lze nadefinovat v proměnné nazvané b:match_words. Podívejme se na příklad převzatý z nápovědy, který umožňuje pro nějaký programovací jazyk (podobný BASHi) deklarovat skoky mezi dvojící příkazů if a endif, while a endwhile atd. Lze vytvářet i složitější konstrukce, například rozlišit trojici if-else-endif apod.:
:let b:match_words = '\<if\>:\<endif\>,' \ . '\<while\>:\<continue\>:\<break\>:\<endwhile\>'
U HTML souborů je obsah této proměnné následující (ukazuje se, že lze použít i regulární výrazy):
<:>,<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/ \1>,<:>,<\@<=!\[CDATA\[:]]>,<\@<=!--:-->,<\@<=?\k\+:?>,<\@<=\([^ \t>/]\+\)\%(\s\+[^>]*\%([^/]>\|$\)\|>\|$\):<\@<=/\1>,<\@<=\%([^ \t>/]\+\)\%(\s \+[^/>]*\|$\):/>
Obrázek 7: Kromě příkazu % jsou v modulu Matchit deklarovány i další příkazy – viz úryvek ze zdrojového kódu tohoto skriptu.
Konfigurace u céčkových souborů je jednodušší; můžeme zde vidět podporu pro doskoky na makra preprocesoru:
(:),{:},[:],^\s*#\s*if\(\|def\|ndef\)\>:^\s*#\s*elif\>:^\s*#\s*else\>:^\s*#\s*endif\>
3. Plugin Surround
3.1 Popis pluginu Surround
Druhý modul naprogramovaný pro textový editor Vim, který si v dnešním článku popíšeme, v určitém ohledu doplňuje modul předchozí. Zatímco výše popsaný modul Matchit slouží ke skokům na párové znaky popř. tagy (či jiné vhodným způsobem definované textové objekty), slouží modul Surround k přidání, ubrání či modifikaci „obalových“ řetězců okolo vybraného textu – což většinou bývají právě párové znaky či tagy. Asi nejjednodušším příkladem je výběr nějakého textu Hello world! a přidání uvozovek před a za tento text, takže výsledkem bude „Hello world!“. Možnosti modulu Surround jsou však ve skutečnosti mnohem širší a teprve při jeho delším používání si uživatel uvědomí, jak často vlastně potřebuje „obalit“ nějakou část textu dalšími znaky – může se jednat o aritmetický výraz se závorkami, výraz představující výpočet indexu do pole či obalení textu značkou <div> v HTML či XML.
Obrázek 8: Nápověda k modulu Surround.
3.2 Instalace pluginu Surround
Pro instalaci modulu Surround lze jednoduše použít Git, protože zdrojové kódy jsou uloženy na GitHubu, podobně jako tomu bylo u mnoha pluginů popsaných minule a taktéž předminule:
cd ~/.vim/bundle git clone https://github.com/tpope/vim-surround Cloning into 'vim-surround'... remote: Counting objects: 389, done. remote: Total 389 (delta 0), reused 0 (delta 0), pack-reused 389 Receiving objects: 100% (389/389), 103.23 KiB | 0 bytes/s, done. Resolving deltas: 100% (117/117), done. Checking connectivity... done.
Výsledná struktura adresáře ~/.vim/ by nyní měla vypadat následovně (opět s přihlédnutím k tomu, že už můžete mít nainstalovány i další pluginy):
. ├── autoload ├── bundle │ ├── calendar │ │ ├── autoload │ │ ├── doc │ │ └── plugin │ ├── ctrlp.vim │ │ ├── autoload │ │ │ └── ctrlp │ │ ├── doc │ │ └── plugin │ └── vim-surround │ ├── doc │ └── plugin ├── doc ├── plugin └── spell
Žádnou další konfiguraci není nutné provést.
Obrázek 9: Zdrojový soubor před použitím příkazů definovaných v modulu Surround. Povšimněte si, kde se nachází textový kurzor.
Obrázek 10: Výsledek příkazu ysw" („obal text obsahující celé slovo mezi uvozovky“).
Obrázek 11: Výsledek příkazu cs"' (nahraď uvozovky za apostrofy).
3.3 Použití pluginu Surround
Plugin Surround nabízí několik nových operací, které mohou být poměrně komplexní. Podívejme se na následující tabulku s příklady:
# | Příkaz | Význam |
---|---|---|
1 | ds" | vymaže uvozovky okolo textu (v němž se nachází kurzor) |
2 | ds( | vymaže kulaté závorky okolo textu (levou i pravou) |
3 | ds) | dtto |
4 | ds[ | vymaže hranaté závorky okolo textu |
5 | dst | vymaže tag okolo textu (platné pro XML a HTML) |
6 | ysaw" | zapíše uvozovky okolo slova („aw“ znamená „a word“) |
7 | ysaw( | zapíše pravou a levou kulatou závorku okolo slova („aw“ znamená „a word“) |
8 | ysW( | text od kurzoru až po další slovo bude uzavřen mezi kulaté závorky |
9 | ysip<div> | celý textový odstavec se umístí mezi párové značky <div> a </div> |
10 | yssB | celý řádek se umístí do složených závorek |
11 | cs"' | nahradí obalové uvozovky za apostrofy |
12 | cs'<strong> | nahradí apostrofy okolo textu za párovou značku <strong> a </strong> |
Obrázek 12: Zdrojový soubor před použitím příkazů definovaných v modulu Surround. Povšimněte si, kde se nachází textový kurzor.
Z výše uvedených příkladů lze odvodit některá pravidla pro jejich tvorbu:
- ds je začátek příkazu pro smazání obalových znaků (rozpoznávají se párové závorky)
- ys je začátek příkazu pro vložení obalových znaků
- cs je začátek příkazu pro změnu obalových znaků (rozpoznávají se párové závorky)
- Příkazy ds vyžadují zadání znaku pro smazání, lze zadat i „t“, což je alias pro tag
- Příkazy cs vyžadují zadání znaku, který se má změnit a zadání nové obalové sekvence
- Příkazy ys vyžadují příkaz pro pohyb (motion commands), podporují textové objekty (slovo, věta, blok)
- Příkazy ys podporují aliasy pro obalové znaky: b=), B=}, r=] a a=>
Navíc je možné v režimu vizuálního výběru (visual mode použít příkaz S, který se bude chovat podobně jako ys.
Obrázek 13: Výsledek příkazu yst{( („obal text až po následující levou složenou závorku mezi kulaté závorky“).
4. Plugin snipMate
4.1 Popis pluginu snipMate
V mnoha dnes používaných (a i díky tomu populárních) programátorských textových editorech i integrovaných vývojových prostředích mají uživatelé k dispozici nástroj umožňující vkládání předpřipravených jazykových konstrukcí (code snippets) do editovaných zdrojových kódů, a to buď s využitím klávesových zkratek nebo volbou požadované konstrukce z nabídnutého seznamu či z menu. Může se jednat například o kostry počítaných programových smyček, do nichž se pouze doplní název řídicí proměnné společně s dolním a horním limitem smyčky, kostry deklarace tříd a metod atd. Podobné předpřipravené konstrukce lze samozřejmě používat i při editaci souborů využívajících různé značkovací jazyky, ať již se jedná o HTML či XML, nebo o (La)TeX. Textový editor Vim ve své základní variantě podobný nástroj sice neobsahuje, ovšem díky zabudovanému skriptovacímu jazyku VimScript není velkým problémem si podobnou funkcionalitu doprogramovat.
Obrázek 14: Ukázka syntaxe konfiguračních šablon používaných modulem TextMate. Tato konkrétní šablona obsahuje kostry příkazů používaných v programovacích jazycích C a C++.
Ovšem ruční vytváření podobných funkcí pro všechny možné jazykové konstrukce by bylo poměrně pracné a současně také poněkud nepřehledné. Vzhledem k tomu, že práce s code snippets je vyžadována prakticky všemi uživateli textového editoru Vim, ať už přímo vývojáři, tak i uživateli vytvářejícími HTML stránky nebo pracujícími s různými soubory XML, bylo jen otázkou času, kdy se objeví vhodný (prakticky) univerzální modul umožňující s code snippets snadno manipulovat. Ve skutečnosti je těchto modulů k dispozici celá řada, ovšem pravděpodobně nejpoužívanějším pluginem je snipMate. Název tohoto modulu je inspirovaný editorem TextMate, který je poměrně rozšířený mezi komunitou vývojářů pracujících s Mac OS.
Obrázek 15: Ukázka šablony s kostrami příkazů používaných ve Vim Scriptu.
4.2 Instalace pluginu snipMate
Pro instalaci modulu snipMate se opět využije Git:
cd ~/.vim/bundle git clone https://github.com/msanders/snipmate.vim Cloning into 'snipmate.vim'... remote: Counting objects: 791, done. remote: Total 791 (delta 0), reused 0 (delta 0), pack-reused 791 Receiving objects: 100% (791/791), 199.95 KiB | 0 bytes/s, done. Resolving deltas: 100% (265/265), done. Checking connectivity... done.
Výsledná struktura adresáře cd ~/.vim/bundle může vypadat následovně:
. ├── autoload ├── bundle │ ├── calendar │ │ ├── autoload │ │ ├── doc │ │ └── plugin │ ├── ctrlp.vim │ │ ├── autoload │ │ │ └── ctrlp │ │ ├── doc │ │ └── plugin │ ├── SearchComplete │ │ └── plugin │ ├── snipmate.vim │ │ ├── after │ │ │ └── plugin │ │ ├── autoload │ │ ├── doc │ │ ├── ftplugin │ │ ├── plugin │ │ ├── snippets │ │ └── syntax │ └── vim-fugitive │ ├── doc │ └── plugin └── spell
Modul snipMate lze používat ihned po znovuspuštění textového editoru Vim.
Obrázek 16: Vytvoření nové funkce v programovacím jazyku Java pomocí šablony.
Obrázek 17: Pomocí klávesy Tab lze postupně doplnit název funkce, její návratovou hodnotu, parametry i seznam vyhazovaných výjimek.
4.3 Použití pluginu snipMate
Práce s modulem snipMate je velmi jednoduchá. Postačuje si zjistit (popř. i změnit) zkratky používané tímto modulem pro daný programovací jazyk. Například pro jazyky C, C++ či Java existuje zkratka for určená pro poloautomatické vytvoření programové smyčky. Při psaní kódu tedy stačí napsat trojici znaků „for“ a ihned poté stlačit klávesu Tab. Ihned poté dojde k vložení kostry smyčky do editovaného textu, to však není vše, protože opětovným stlačováním klávesy Tab je možné se přesouvat na variabilní (tj. editovatelné) části smyčky, zejména na jméno řídicí proměnné, limity cyklu a samozřejmě i na prozatím prázdné tělo smyčky. Zajímavé přitom je, že při editaci jména řídicí proměnné se toto jméno současně mění na všech třech místech, tj. jak v inicializačním příkazu (přiřazení počáteční hodnoty do proměnné), tak i v podmínce pro ukončení smyčky a v iteračním příkazu. Celý postup vytvoření smyčky je ve skutečnosti velmi jednoduchý, jak je to ostatně patrné z následující sekvence screenshotů:
4.4 Ukázka použití pluginu snipMate pro céčko
Obrázek 18: Vytvoření počítané smyčky for v programovacím jazyce C pomocí modulu snipMate: zápis textu „for“.
Obrázek 19: Po stlačení klávesy Tab se smyčka vytvoří a kurzor se přesune na první variabilní (editovatelnou) položku.
Obrázek 20: Po dalším stlačení klávesy Tab lze přejmenovat řídicí proměnnou smyčky.
Obrázek 21: Po čtvrtém stlačení klávesy Tab se kurzor přemístí do těla smyčky.
4.5 Ukázka použití pluginu snipMate pro HTML
Na další pětici screenshotů je ukázána tvorba HTML stránky, přičemž uživatel napíše pouze čtveřici slov html, head, body a movie oddělených Taby:
Obrázek 22: Začátek tvorby HTML stránky – zápis prvního slova html.
Obrázek 23: Začátek tvorby HTML stránky – stlačení klávesy Tab a zápis druhého slova head.
Obrázek 24: Tvorba HTML stránky – stlačení klávesy Tab a zápis třetího slova body.
Obrázek 25: Tvorba HTML stránky – stlačení klávesy Tab a zápis čtvrtého slova movie.
Obrázek 26: Dokončení HTML stránky – stlačení klávesy Tab.
4.6 Ukázka použití pluginu snipMate pro Javu
Zkusme si ještě ukázat použití tohoto pluginu při tvorbě kódu v Javě:
Obrázek 27: Deklaraci třídy zajistí snippet cl, který automaticky doplní i její název.
Obrázek 28: Doplnění jména třídy odvozené od názvu souboru.
Obrázek 29: Deklaraci metody main zajišťuje snippet main.
Obrázek 30: Vytvoření kostry metody main.
Obrázek 31: Konstrukce try-catch-finally se tvoří snippetem tryf.
Obrázek 32: Vytvoření kostry konstrukce try-catch-finally.
5. Plugin vim-fireplace
5.1 Popis pluginu vim-fireplace
Předposlední dnes popisovaný plugin se jmenuje vim-fireplace. Tento zdánlivě jednoduchý, o to však užitečnější plugin je určen vývojářům programujícím v jazyku Clojure. Jednou z důležitých funkcí tohoto přídavného modulu je podpora připojení k běžícímu interpretru jazyka Clojure a obousměrná komunikace s tímto interpretrem, což vývojářům umožňuje vyzkoušet si prakticky každý řádek zdrojového kódu, snadno nalézt dokumentaci k funkcím a makrům, zobrazit si zdrojový kód vybraného symbolu apod. vim-fireplace přepdokládá, že se interpret programovacího jazyka Clojure spouští příkazem:
lein repl
Pokud je tento příkaz spuštěn z adresáře s projektem, automaticky se provede načtení všech potřebných knihoven. Bližší informace o nástroji Leiningen (představovaném příkazem lein) naleznete například zde:
- Leiningen: nástroj pro správu projektů napsaných v Clojure
http://www.root.cz/clanky/leiningen-nastroj-pro-spravu-projektu-napsanych-v-clojure/ - Leiningen: nástroj pro správu projektů napsaných v Clojure (2)
http://www.root.cz/clanky/leiningen-nastroj-pro-spravu-projektu-napsanych-v-clojure-2/ - Leiningen: nástroj pro správu projektů napsaných v Clojure (3)
http://www.root.cz/clanky/leiningen-nastroj-pro-spravu-projektu-napsanych-v-clojure-3/
Obrázek 33: Nápověda k plugunu vim-fireplace.
Obrázek 34: Interaktivní dialog pro připojení ke smyčce REPL (příkaz :connect).
5.2 Instalace pluginu vim-fireplace
Instalace tohoto přídavného modulu se nijak neliší od instalací většiny dříve popsaných pluginů, protože lze opět použít poslední verzi naklonovanou z GitHubu:
cd ~/.vim/bundle git clone https://github.com/tpope/vim-fireplace Cloning into 'vim-fireplace'... remote: Counting objects: 1550, done. remote: Total 1550 (delta 0), reused 0 (delta 0), pack-reused 1550 Receiving objects: 100% (1550/1550), 439.54 KiB | 372.00 KiB/s, done. Resolving deltas: 100% (650/650), done. Checking connectivity... done.
Tento plugin se automaticky inicializuje při otevření souborů s koncovkou .clj.
Obrázek 35: Nápověda k symbolu println.
Obrázek 36: Nápověda k symbolu for.
5.3 Použití pluginu vim-fireplace
Před využitím všech možností pluginu vim-fireplace je nutné provést dva kroky. Prvním z nich je spuštění smyčky REPL příkazem:
lein repl
Tento příkaz se spustí v jiném terminálu, než samotný Vim.
Dále je zapotřebí se ke smyčce REPL připojit z Vimu, a to konkrétně příkazem :Connect, který se zeptá na způsob připojení, adresu (localhost) a port (ten je vypsán na samostatný terminál).
Následně lze využívat například následující příkazy:
# | Příkaz | Popis |
---|---|---|
1 | :Doc symbol | nalezne a zobrazí dokumentaci k zadanému symbolu (funkci, makru…) |
2 | K | podobná funkce, ovšem využívá standardní Vimovský příkaz (velmi užitečné a současně i rychlé) |
3 | :Source symbol | zobrazí nápovědu k zadanému symbolu (funkci, makru) |
4 | [d | zobrazí nápovědu k zadanému symbolu (funkci, makru) |
5 | [Ctrl+D | skočí na definici symbolu, který je pod kurzorem |
6 | Ctrl+W Ctrl+D | dtto, ale definice se otevře v novém okně |
7 | :Eval | forma, na které se nachází kurzor, se pošle do REPL a tam se vyhodnotí |
8 | cp(příkaz pro pohyb) | podobné předchozímu příkazu, ale vyhodnotí se jen forma mezi starou a novou pozicí kurzoru |
Ve skutečnosti dává plugin vim-fireplace uživatelům k dispozici ještě mnohem více příkazů, ty si lze najít v nápovědě, která je součástí tohoto přídavného modulu.
Obrázek 37: Vyhodnocení formy.
Obrázek 38: Vyhodnocení formy.
Obrázek 39: Zobrazení zdrojového kódu symbolu print.
6. Plugin c.vim
6.1 Popis pluginu c.vim
Posledním pluginem, který si v dnešním článku popíšeme, je modul nazvaný c.vim, nebo též (poněkud s nadsázkou) C/C+±IDE, který lze nalézt na adrese http://vim.sourceforge.net/scripts/script.php?script_id=213 (nízké číslo pluginu vypovídá o tom, že jeho první verze vznikla již poměrně dávno). Jedná se o poměrně rozsáhlý modul naprogramovaný Fritzem Menherem, který obsahuje mnoho funkcí sloužících pro urychlení práce programátorů píšících aplikace v programovacích jazycích C a C++. Mezi implementované funkce patří například vkládání různých typů komentářů z připravených šablon, vkládání koster strukturovaných příkazů (podmínek i programových smyček) či často používaných idiomů, práce s dnes velmi populárními snippety (vytváření a vkládání snippetů do programového kódu, viz též výše zmíněný plugin snipMate), podpora pro přímý překlad programu a jeho následného spuštění atd. Některé možnosti nabízené tímto pluginem si ukážeme v podkapitole 6.3.
Obrázek 40: Do hlavního menu Vimu se po instalaci modulu c.vim přidal další list. Zde je zobrazeno podmenu s možností definice a vkládání snippetů.
6.2 Instalace pluginu c.vim
Instalace tohoto přídavného modulu se opět nijak neliší od instalací většiny dříve popsaných pluginů, protože je možné použít poslední verzi naklonovanou z GitHubu:
cd ~/.vim/bundle git clone https://github.com/WolfgangMehner/vim-plugins Cloning into 'vim-plugins'... remote: Counting objects: 3083, done. remote: Total 3083 (delta 0), reused 0 (delta 0), pack-reused 3083 Receiving objects: 100% (3083/3083), 2.15 MiB | 702.00 KiB/s, done. Resolving deltas: 100% (2091/2091), done. Checking connectivity... done.
Z níže uvedeného výpisu je patrné, že repositář vim-plugins ve skutečnosti obsahuje větší množství pluginů, nejenom pouze c.vim:
. ├── autoload │ ├── mmtemplates │ └── mmtoolbox ├── awk-support │ ├── codesnippets │ ├── doc │ ├── rc │ ├── scripts │ ├── templates │ └── wordlists ├── bash-support │ ├── codesnippets │ │ └── debugging │ ├── doc │ ├── rc │ ├── scripts │ ├── templates │ └── wordlists ├── c-support │ ├── codesnippets │ ├── doc │ ├── rc │ │ └── project │ ├── scripts │ ├── templates │ └── wordlists ├── doc │ └── internal ├── ftplugin ├── git-support │ ├── data │ ├── doc │ ├── git-doc │ └── rc ├── latex-support │ ├── codesnippets │ │ └── beamer │ ├── doc │ ├── rc │ ├── templates │ └── wordlists ├── lua-support │ ├── codesnippets │ ├── doc │ ├── html2doc │ ├── lua-doc │ ├── rc │ └── templates ├── matlab-support │ ├── codesnippets │ ├── doc │ ├── rc │ └── templates ├── perl-support │ ├── codesnippets │ │ └── RegularExpressions │ ├── doc │ ├── modules │ ├── rc │ ├── scripts │ ├── templates │ └── wordlists ├── plugin ├── project ├── syntax └── vim-support ├── codesnippets ├── doc ├── rc └── templates
Obrázek 41: Podmenu pro spuštění přeložené aplikace, zavolání linkeru a další podobné činnosti.
6.3 Použití pluginu c.vim
Vzhledem k velkému množství funkcí nabízených tímto modulem se při jeho načítání vytváří i samostatné menu obsahující jak všechny příkazy, tak i k nim příslušné klávesové zkratky. Tyto zkratky začínají implicitně znakem zpětného lomítka, ovšem to lze změnit příkazem (viz též předchozí část tohoto seriálu, kde jsme se tímto tématem podrobně zabývali):
:let maplocalleader=znak
Pokud není menu při startu editoru v grafickém režimu (příkazy gvim či vim -g) zobrazeno, lze použít následující příkaz:
:set guioption+=m
Všechny dostupné funkce i jejich klávesové zkratky jsou dostupné na adrese http://lug.fh-swf.de/vim/vim-c/c-hotkeys.pdf. Stejný soubor je ostatně součástí instalace tohoto přídavného modulu.
Po načtení přídavného modulu c.vim je možné si jeho funkci jednoduše vyzkoušet. Postačuje zadat příkaz:
\i0
Textový editor Vim se následně zeptá na název proměnné a na případné (nepovinné) další parametry počítané programové smyčky for. Pokud například jako odpověď na dotaz zadáme:
xx 10 20 2
Vygeneruje se správně zarovnaný zdrojový kód:
for ( xx = 10; xx < 20; xx += 2 ) { }
Ovšem při zadání pouhého názvu proměnné:
yy
Dostane vygenerovaná smyčka tvar:
for ( yy = 0; yy < n; yy += 1 ) { }
7. Odkazy na předchozí části článku
- Užitečné skripty a pluginy pro textový editor Vim
http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim/ - Užitečné skripty a pluginy pro textový editor Vim (2.část)
http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim-2-cast/ - Užitečné skripty a pluginy pro textový editor Vim (3.část)
http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim-3-cast/ - Užitečné skripty a pluginy pro textový editor Vim (4.část)
http://www.root.cz/clanky/uzitecne-skripty-a-pluginy-pro-textovy-editor-vim-4-cast/
8. Odkazy na Internetu
- Surround
http://www.bestofvim.com/plugin/surround/ - SnipMate
http://www.bestofvim.com/plugin/snipmate/ - Getting a Clojure REPL in Vim With VimClojure, Nailgun, and Leiningen
http://naleid.com/blog/2011/12/19/getting-a-clojure-repl-in-vim-with-vimclojure-nailgun-and-leiningen/ - The NERD Commenter : A plugin that allows for easy commenting of code for many filetypes.
http://www.vim.org/scripts/script.php?script_id=1218 - NERD Commenter na GitHubu
https://github.com/scrooloose/nerdcommenter - luarefvim : Lua reference manual
http://www.vim.org/scripts/script.php?script_id=1291 - lua.vim : Lua file type plug-in for the Vim text editor
http://www.vim.org/scripts/script.php?script_id=3625 - vim-lua-ftplugin
https://github.com/xolox/vim-lua-ftplugin - Vi Improved
https://wiki.python.org/moin/Vim - javacomplete : Omni Completion for JAVA
http://www.vim.org/scripts/script.php?script_id=1785 - SearchComplete
http://www.vim.org/scripts/script.php?script_id=474 - ShowMarks
http://www.vim.org/scripts/script.php?script_id=152 - ctrlp.vim
https://github.com/kien/ctrlp.vim - ctrlp.vim
http://kien.github.io/ctrlp.vim/ - vim-signature
https://github.com/kshenoy/vim-signature - Supertab
http://www.vim.org/scripts/script.php?script_id=1643 - Supertab (GitHub)
https://github.com/ervandew/supertab - Vim Essential Plugin: NERD Tree
http://code.tutsplus.com/tutorials/vim-essential-plugin-nerdtree–net-19692 - The NERD tree : A tree explorer plugin for navigating the filesystem
http://vim.sourceforge.net/scripts/script.php?script_id=1658 - NERD Tree Guide
http://usevim.com/2012/07/18/nerdtree/ - vcscommand.vim : CVS/SVN/SVK/git/hg/bzr integration plugin
http://www.vim.org/scripts/script.php?script_id=90 - vcscommand na GitHubu
https://github.com/vim-scripts/vcscommand.vim - Popis skriptu Vim Pathogen
http://www.vim.org/scripts/script.php?script_id=2332 - Poslední verze skriptu Vim Pathogen
https://tpo.pe/pathogen.vim - Nejlepší pluginy pro Vim
http://vimawesome.com/ - Nejlepší pluginy pro Vim
http://www.vim.org/scripts/script_search_results.php?order_by=rating - Vim-airline na GitHubu
https://github.com/bling/vim-airline - Vim-airline na www.vim.org
http://www.vim.org/scripts/download_script.php?src_id=22726 - Vim-fugitive na GitHubu
https://github.com/tpope/vim-fugitive - Vim-fugitive na www.vim.org
http://www.vim.org/scripts/script.php?script_id=2975 - Textový editor Vim jako IDE (seriál)
http://www.root.cz/clanky/textovy-editor-vim-jako-ide/ - Building Vim
http://vim.wikia.com/wiki/Building_Vim - Getting the Vim source with Mercurial
http://vim.wikia.com/wiki/Getting_the_Vim_source_with_Mercurial - Vim Perl Interface
http://vim.dindinx.net/vim7/html/if_perl.txt.php - Vim Perl Support
http://www.softpanorama.org/Editors/Vimorama/vim_perl_support.shtml - VIM as Python IDE
http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/ - Stack Overflow: VIM: Perl interface: passing a variable to Perl and reading a vim variable from Perl
http://stackoverflow.com/questions/4999902/vim-perl-interface-passing-a-variable-to-perl-and-reading-a-vim-variable-from - Stack Overflow: Getting started with vim scripting with Perl
http://stackoverflow.com/questions/2208618/getting-started-with-vim-scripting-with-perl - Python with a modular IDE (Vim)
http://www.sontek.net/python-with-a-modular-ide-vim - Getting to VIM's Python interface
http://zerokspot.com/weblog/2009/02/21/getting-to-know-vims-python-interface/ - Pretty-formatting XML
http://vim.wikia.com/wiki/Pretty-formatting_XML - Delete a pair of XML/HTML tags
http://vim.wikia.com/wiki/Delete_a_pair_of_XML/HTML_tags - Vim as XML Editor
http://www.pinkjuice.com/howto/vimxml/ - xmledit: A filetype plugin to help edit XML, HTML, and SGML documents
http://www.vim.org/scripts/script.php?script_id=301 - Poslední vývojová verze makra xmledit
http://github.com/sukima/xmledit/ - vim.wikia: Display date-and-time on status line
http://vim.wikia.com/wiki/Display_date-and-time_on_status_line - vim.wikia: Writing a valid statusline
http://vim.wikia.com/wiki/Writing_a_valid_statusline - vim.wikia: Statusline tab level ruler
http://vim.wikia.com/wiki/Statusline_tab_level_ruler - vim.wikia: Switching between different statuslines
http://vim.wikia.com/wiki/Switching_between_different_statuslines - X Selections, Cut Buffers, and Kill Rings
http://www.jwz.org/doc/x-cut-and-paste.html - Accessing the system clipboard
http://vim.wikia.com/wiki/Accessing_the_system_clipboard - xcutsel(1) – Linux man page
http://linux.die.net/man/1/xcutsel - snipMate : TextMate-style snippets for Vim
http://www.vim.org/scripts/script.php?script_id=2540 - msanders / snipmate.vim
https://github.com/msanders/snipmate.vim - snipMate.vim Introductory Screencast
http://vimeo.com/3535418 - Clewn home page
http://clewn.sourceforge.net/ - How to connect vim with gdb – using clewn
http://chunhao.net/blog/how-to-connect-vim-with-gdb-using-clewn - yavdb : Yet Another (Generic) Vim Debugger Integration
http://www.vim.org/scripts/script.php?script_id=1954 - Vim home page
http://www.vim.org/ - vim (man page)
http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=vim - Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
http://www.thegeekstuff.com/2009/01/tutorial-make-vim-as-your-cc-ide-using-cvim-plugin/ - c.vim : C/C++ IDE
http://vim.sourceforge.net/scripts/script.php?script_id=213 - c.vim : C/C++ IDE key mappings
http://lug.fh-swf.de/vim/vim-c/c-hotkeys.pdf - Základní základy editoru Vim
http://www.root.cz/clanky/zakladni-zaklady-editoru-vim/ - Jak si přizpůsobit Vim
http://www.root.cz/serialy/jak-si-prizpusobit-vim/ - Taglist (plugin)
http://www.vim.org/scripts/script.php?script_id=273 - The NERD tree: A tree explorer plugin for navigating the filesystem
http://www.vim.org/scripts/script.php?script_id=1658 - JavaBrowser : Shows java file class, package in a tree as in IDEs. Java source browser.
http://www.vim.org/scripts/script.php?script_id=588 - snippetsEmu : An attempt to emulate TextMate's snippet expansion
http://www.vim.org/scripts/script.php?script_id=1318 - Vim plugins for developers
http://www.linuxtoday.com/upload/vim-plugins-for-developers-140619094010.html