VIM a ctags
- 30. Září 2009
- Publikováno v Vim
- Napište komentář
Také by se vám líbilo, kdyby vám VIM napovídal názvy knihovních funkcí, nebo názvy metod objektů? Taky byste ve VIMu uvítali code insight, nebo IntelliSense? Pokud je vaše odpověď kladná, pak vzhůru do stahování a instalování exuberant ctags. Pokud pracujete na linuxu, tak ho již pravděpodobně nainstalovaný máte.
Jak a k čemu ho tedy využít?
Program ctags slouží pro generování souboru tagů. Soubor tagů obsahuje názvy proměnných, funkcí, tříd a podobně a k nim přiřazené názvy souborů ve kterých se vyskytují. Důležité je, že VIM s tímto souborem umí pracovat a umí ho využít právě pro napovídání kódu.
Vygenerování souboru tagů
Nejdříve se přesuneme do adresáře s naším softwarovým projektem a vygenerujeme si soubor tagů. (Ctags umí zpracovat 41 jazyků, takže je pravděpodobné, že umí i ten, ve kterém pracujete vy.) V adresáři projektu do příkazové řádky napíšeme toto
Tím jsme vygenerovali soubor tags obsahující identifikátory z celého našeho projektu.
VIMu by jsme mělí říct, že má tento soubor hledat v aktuálním adresáři. To provedem v koniguračním souboru .vimrc řádkem
Nyní však musíme otevírat soubory projektu z jeho kořenové složky, jinak si VIM tagy nenajde a celá práce by byla k ničemu. Takže asi takhle
A konečně si můžeme užívat výhod souboru tagů.
První výhoda je, že pokud máme kurzor nad voláním funkce a stiskneme ctrl-], tak nás editor přenese do místa, kde je funkce definována a to i kdyby to bylo v jiném souboru. Pokud se chceme dostat zpět, musíme stisknout ctrl-t.
Omni-doplňování
No a druhou výhodou je ona autokompletace kódu. Napíšeme prvních pár písmen názvu funkce, stiskneme ctrl-x ctrl-o a VIM nám napoví možnosti, jak název funkce dokončit. Pokud programujeme v objektově orientovaném jazyku a stiskneme ctrl-x ctrl-o po . nebo -> pak nám VIM nabídne členské proměnné a metody, po new nám zase nabídne názvy tříd.
Omni-doplňování je závislé na typu editovaného souboru. Něco jiného napovídá v programech jazyka C, něco jiného v PHP skriptech a něco jiného v souborech stylů CSS.
Dosud žádný komentář.