ukotvit menu |
Já osobně nejradši při psaní programů používám editor VIM [1]. Proto mám pár tipů, jak si v něm programování pythoních programů zpříjemnit. U těchto rad předpokládám, že jste dobře obeznámeni s editorem VIM a nemusím vysvětlovat základní věci, jako do jakých souborů psát příslušná konfigurační nastavení a podobně.
Individuální nastavení pro Python je docela dobré, takže si nezapomeňte nastavit jeho automatické načítání volbami:
syntax on filetype plugin on filetype indent on
Cílem tohoto nastavení je umožnit spuštění právě editovaného souboru stisknutím klávesy F12. Po ukončení spuštěného programu přejde interpret do interaktivního režimu, takže je umožněno prohlédnout si případná chybová hlášení po pádu programu a/nebo následné interaktivní zkoumání obsahu proměnných, spouštění naprogramovaných funkví a podobně. Po dalším stisknutí klávesy F12 dojde k novému spuštění programu s tím, že předchozí sezení se automaticky ukončí.
Je potřeba si k tomu napsat malý prográmek v Pythonu, který jsem pojmenoval killargs.py a který funguje jenom v Linuxu. Jestli někdo napíše jeho Win variantu, rád ji zveřejním.
#!/bin/env python import os, re, sys procesy = os.popen('ps -Af').readlines() vzor = re.compile('.*%s.*'%sys.argv[1]) selfpid = os.getpid() for proc in procesy: if vzor.match(proc): pid = int(proc.split()[1]) if pid == selfpid: continue os.kill(int(pid), 15)
Do Vimu pak stačí dát tento příkaz (je to jeden dlouhatanský řádek):
map <F12> :silent !killargs 'xterm .* -e python'<cr> :silent !xterm -geom 120x20 -e python -i % $PYARGS &<CR>
Když zadáte na příkazovém řádku příkaz gvim soubor.py, spustí se nová instance programu Vim a soubor se v ní otevře. Když to uděláte několikrát pro různé soubory, máte Vim spuštěný taky několikrát. Možná byste byli radši, kdyby se nové soubory otvírali v první instanci Vimu, takže by Vim byl spuštěný jen jednou a všechny soubory by byly otevřeny v něm. To lze snadno zařídit.
Každou instanci Vimu lze pojmenovat a za pomocí tohoto jména pak určit, kde se mají otevírat další soubory. Abyste nemuseli vypisovat na příkazovém řádku složité příkazy, je vhodné si na to udělat spouštěcí skript.
Pojmenujte si jej třeba pvim (python vim), dejte si ho do adresáře ~/home/bin a nastavte mu právo spuštění (chmod a+x pvim). Jeho obsah bude:
#!/bin/sh gvim --servername PYTHON --remote-silent $@
Jestliže chcete soubor otvírat v nové záložce (funguje od vimu verze 7.0), použijte:
#!/bin/sh gvim --servername PYTHON --remote-tab-silent $@
Pojmenujte si jej třeba pvim.bat a dejte si ho do runtime adresáře Vimu. Tedy do adresáře kde se nalézá soubor gvim.exe. Tento adresář musí být uveden v systémové proměnné PATH. Obsah skriptu bude:
@ECHO OFF gvim.exe --servername PYTHON --remote-silent %*
Jestliže chcete soubor otvírat v nové záložce (funguje od vimu verze 7.0), použijte:
@ECHO OFF gvim.exe --servername PYTHON --remote-tab-silent %*
Mělo by to fungovat od Windows 2000. Ve starších verzích je potřeba
nahradit:
%* za %1 %2 %3 %4 %5 %6 %7 %8 %9 a při spouštění půjde
předávat jen devět parametrů.
Nyní už místo příkazu gvim stačí používat příkaz pvim a soubory se budou otevírat v jedné instanci Vimu. Příkaz pvim se samozřejmě nemusí používat jen na příkazovém řádku, můžete si ho asociovat s příponou py, nebo v Midnight (Linux) či Total Commanderu nadefinovat jako editor pro otevírání souborů a podobně.
V Linuxu je možno spouštěcí skript upravit tak, že na každém virtuálním desktopu bude název instance Vimu automaticky originální. To způsobí, že se Vim spustí zvlášť na každém desktopu. V rámci tohoto desktopu ale opět jen jednou. Jak to udělat se blíže dočtete mých stránkách věnovaných Vimu [2]. Jestli vám stačí samotný spouštěcí skript, pak je zde:
#!/bin/sh # stary zpusob / icewm DESKTOP=`xprop -root | \ grep '_WIN_WORKSPACE(CARDINAL) =' | \ sed 's/\(.* \)\(.*\)/\2/'` if [ "$DESKTOP" = "" ]; then # novy zpusob / gnome DESKTOP=`xprop -root | \ grep '_NET_CURRENT_DESKTOP(CARDINAL) =' | \ sed 's/\(.* = \)\(.*\)/\2/'` fi SSN="SRV$DISPLAY.$DESKTOP" gvim --servername $SSN --remote-tab-silent $@
Jednou z řady užitečných věcí je, když editor ukazuje seznam funkcí, tříd, metod a podobně, které se nachází v editovaném souboru. Umožňuje to rychlejší orientaci v souboru. Ve Vimu se to dá zařídit pomocí pluginu taglist [3], který ke své činnosti potřebuje program ctags [4]. Tento program je běžnou součástí linuxových distribucí, do Windows se musí doinstalovat. Vypadá to takto: