Portál AbcLinuxu, 24. května 2024 09:00

VIM ako užitočný pomocník pri písaní python kódu

9.3.2013 17:00 | Přečteno: 2477× | Linux | Výběrový blog | poslední úprava: 9.3.2013 16:59

V dnešnom blogu si ukážeme možnosti modulu python-mode pre editor VIM. Jeho pomocou pridáme do editoru VIM možnosti automatickej kontroly zdrojových kódov, lepšiu navigáciu v kóde a dopĺňanie kódu.

Inštalácia

Požiadavky pluginu sú relatívne štandardné. Je potrebné mať VIM vo verzii >= 7.0 s podporou pythonu. Okrem skutočne minimalistických inštalácii VIMu by mal fungovať prakticky všade.

Zdrojové kódy modulu sú dostupné github-e. Inštalovať modul je možné buď pomocou pathogenu, alebo manuálne. Používateľom pathogenu hádam nemusím vysvetľovať spôsob inštalácie, pre tých ostatných krátky návod ako pomerne bezbolestne pridať plugin do VIMu bez neporiadku v adresári ~/.vim ;-).

Zásuvný modul stiahneme príkazom git clone git://github.com/klen/python-mode.git. Následne stačí adresár python-mode presunúť do podadresára ~/.vim/bundle/ (ak neexistuje musí sa vytvoriť) a pridať riadok set runtimepath+=$HOME/.vim/bundle/python-mode/ do ~/.vimrc. Týmto je inštalácia prakticky hotová a pripravená na prípadnú migráciu na pathogen ;-).

Pri prvom spustení je vhodné vygenerovať tagy z dokumentácie aby VIM vedel korektne vyhľadávať pri zadaní príkazu :help. Tagy sa vygenerujú príkazom :helptags ~/.vim/bundle/python-mode/doc/.

Problémy s paste unicode znakov vo VIMe

Pri používaní pluginu som narazil na pomerne nepríjemný problém, kvôli ktorému nie je možné do editoru vkladať unicode znaky. Problém sa týka len konzolového editoru (GVIM teda funguje správne). V prípade použitia konzolového VIMu sa dá tento problém odstrániť nahradením riadku locale.setlocale(locale.LC_CTYPE, "C") riadkom locale.setlocale(locale.LC_CTYPE, "en_US.UTF-8") v ~/.vim/bundle/python-mode/pylibs/pymode/lint.py.

Dopĺňanie kódu

Pre dopĺňanie kódu nie je potrebné väčšinou nič nastavovať. Podpora virtuálneho prostredia (virtualenvwrapper) je štandardne zapnutá, stačí len spustiť VIM vo virtuálnom prostredí. Kód sa dopĺňa skratkou <Ctrl-Space>. Plugin nepoužíva štandardné omnicomplete (<Ctrl-x>o resp. <Ctrl-x>u). Medzi nasledujúcim a predchádzajúcim výsledkom sa dá prechádzať štandardnými skratkami <Ctrl-n> a <Ctrl+p>.

Dopĺňanie kódu má na starosti knižnica rope. Nastavenia rope je možné upraviť v adresári .ropeproject/config.py, ktorý sa automaticky vytvoril v podadresári s projektom.

Doplňanie kódu

Kontrola kódu

Kontrola kódu prebieha štandardne pri uložení. Kód kontrolujú nástroje pyflakes, pep8, mccabe, pylint a code-checkers. V štandardnom nastavení sa používa len prvá trojica. Nástroje, ktoré kontrolujú kód sa dajú zapnúť / vypnúť nastavením premennej g:pymode_lint_checker v .vimrc. Pomocou nej je možné napríklad úplne vyradiť niektorý z nástrojov na kontrolu kódu (minimálne pep8 je dosť ukecaný a občas vyhadzuje nezmyselné chyby). Nasledujúci kód vo .vimrc vyradí z činnosti pep8:

let g:pymode_lint_checker = "pyflakes,mccabe"

Jednotlivé hlásenia je možné vypínať aj individuálne a to nastavením premennej g:pymode_lint_ignore. Nasledujúci kód potlačí chybu E302 (2 voľné riadky zo definíciou funkcie / triedy) a všetky varovania:

let g:pymode_lint_ignore = "E302,W"
Kontrola kódu

Dokumentácia a navigácia

Dokumentácia sa prezerá klávesovou skratkou <Ctrl-c>d. Po jej stlačení sa zobrazí dokumentácia k aktuálnemu symbolu pod kurzorom. Pre dokumentáciu knižníc je stále možné použiť klávesovu skratku <Shift-k>. Krátky popis funkcií sa zobrazuje aj automaticky pri používaní dopĺňania kódu.

Navigácia v kóde nie je o nič zložitejšia než prezeranie dokumentácie. Opäť stačí presunúť kurzor na symbol a klávesovou skratkou <Ctrl-c>g sa presunieme na jeho definíciu. Vyhľadať použitia symbolu je možné klávesovou skratkou <Ctrl-c>f <Enter>.

Prezeranie dokumentácie

Ďalšie možnosti

Hlavným zdrojom informácií o tomto plugine je súbor README.rst. Dokumentácia integrovaná do VIMu bola v čase písania blogu neaktuálna. Ďalšie príkazy sa dajú zistiť príkazom :help ropevim.txt.

Záver

Python-mode síce nie je najlepším pluginom na dopĺňanie kódu, prezeranie dokumentácie, kontrolu kódu a mnoho ďalšieho, ale patrí medzi najkompletnejšie moduly (riešenie všetko v jednom). V súčasnosti nie je repozitár na github-e aktívny. V kóde je pomerne veľké množstvo neopravených chýb (týkajú sa hlavne neaktualizovaných knižníc rope a ropevim).

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

9.3.2013 18:14 smazáno | skóre: 18 | blog: smazáno
Rozbalit Rozbalit vše Re: VIM ako užitočný pomocník pri písaní python kódu
Odpovědět | Sbalit | Link | Blokovat | Admin
Pekne detailni zapis, s vimem jako python IDE jsem taky spokojenej. Rozhodne zkoukni jedi-vim - vyhovuje mi mnohem lip nez rope.
mirec avatar 9.3.2013 19:03 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: VIM ako užitočný pomocník pri písaní python kódu
Poznám, dokonca som dnes aj skúšal ;-) V podstate doplňovanie je detailnejšie, ale zároveň je u väčších projektov znateľne pomalšie. Rope síce mám tiež menej rád, ale beží pekelne rýchlo. Teoreticky by sa možno dali vybrať črevá zo snaked a napchať do rope pre lepší type hinting.
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
10.3.2013 09:56 martin
Rozbalit Rozbalit vše Re: VIM ako užitočný pomocník pri písaní python kódu
Také používám vim jako primární python ide. Ještě bych doporučil plugin Gundo a nejaký TaskList.
11.3.2013 09:48 hanoj
Rozbalit Rozbalit vše Re: VIM ako užitočný pomocník pri písaní python kódu
Odpovědět | Sbalit | Link | Blokovat | Admin
Zkousel jsem to rozchodit na Win7x64 s Gvim 7.3. Instalaci a opravu dle "paste unicode" jsem provedl, ale nic z popisovaneho z kapitol "Doplneni kodu" a nize mi nefunguje. Nemate prosim nejaky napad co delam blbe? můj vimrc: http://gis.templ.net/_vimrc
mirec avatar 11.3.2013 10:35 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: VIM ako užitočný pomocník pri písaní python kódu

Pod win som plugin neskúšal, teoreticky tam môže nastať mnoho problémov od nenájdenia cesty ku knižniciam pythonu až po nekompatibilné volania dlopen. V konfigurácii som nič zlé nenašiel, možno niečo rozumné vypíše nasledujúci príkaz:

:call pymode#troubleshooting#Test()
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
16.1.2014 13:44 Matěj Cepl
Rozbalit Rozbalit vše Re: VIM ako užitočný pomocník pri písaní python kódu
Odpovědět | Sbalit | Link | Blokovat | Admin
Jenom bych si dovolil poznamenat, že rope (původní projekt, ne python-mode, ale včetně ropemod a ropevim, které umožňují pohodlnou práci s vimem; samozřejmě pathogen-compatible) je teď “under new management” (se svolením autora, nejedná se o divoký fork na githubu). Více na https://github.com/python-rope/.

Matěj

Založit nové vláknoNahoru

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