Ahoj, zajímalo by mě, jestli někdo nemáte skript, nebo nějaké makro, které mi spraví styl odsazování a odřádkování ve zdrojáku. Lidi často chtějí poradit, ale kódy mají šíleně odsazované a nedá se v tom pořádně vyznat.
Názory k článku
Textový editor Vim jako IDE (automatické formátování textů: dokončení)
Přeformátování zdrojového kódu
celé vláknoRe: Přeformátování zdrojového kódu
celé vláknoS odsazováním by měl pomoci příkaz =, za kterým se udává operátor přesunu, stejně jako u "y", "d", "c" atd. Takže například jsem s kurzorem na otevírací závorce funkce a zadám příkaz:
=%
což mě indentuje celou funkci až po pravou párovou závorku.
Je zapotřebí správně nastavit konfigurační parametry "cindent" popř. "smartindent", podle toho, o jaký jazyk se jedná.
Nebo zavolat externí formátovač. Když mi napíšete konkrétní jazyk, mohl bych možná poradit.
Re: Přeformátování zdrojového kódu
celé vláknoKonkrétně jazyky PHP a C#. Ale mě by bohatě stačilo něco jednoduchého. Otevířací složenou závorku { dát na následující řádek než je příkaz a odsadit na jeho úroveň. Ukončující složenou závorku } odsadit také na stejnou úroveň. Blok kódu mezi nimi odsadit o tab, nebo pár mezer doprava. Určitě to nebude nic složitého, ale nechce se mi to psát, protože určitě někdo máte něco podobného.
To znamená když mi někdo pošle (a jakože bohužel posílá):
......function mojeFunkce()
..{
příkaz 1;
--->--->...příkaz2;
}
Abych to protáhl tím skriptíkem a dostal
function mojeFunkce()
{
--->příkaz 1;
--->příkaz 2;
}
*Poznámka - pro ilustraci tečky reprezentují mezery a ---> tab.
Re: Přeformátování zdrojového kódu
celé vláknoPro PHP existuje makro ulozene ve skriptu $VIMRUNTIME/indent/php.vim (pokud mate nainstalovany vim-enhanced).
Bud se natahuje automaticky, nebo lze zadat:
:so $VIMRUNTIME/indent/php.vim
a potom pouzivat uz zmineny prikaz =, treba gg=G (skok na zacatek dokumentu a zarovnani az po jeho konec)
Funguje to dobre, pokud je zapnuto:
:syntax on
:set syntax=php
(coz by opet melo byt, pokud neni pouzita volba "compatible" coz moc nedoporucuji :-)
Re: Přeformátování zdrojového kódu
celé vláknoPro C# existuje podobne makro $VIMRUNTIME/indent/cs.vim, ale osobne jsem ho nezkousel.
Re: Přeformátování zdrojového kódu
celé vláknoMoc děkuji. Určitě vyzkouším
Re: Přeformátování zdrojového kódu
celé vláknoMuzete jeste vyzkouset prikaz indent. To neni soucast vim, ale da se do Linuxu doinstalovat jako balicek, pokud neni v zakladni distribuci. Bohuzel uz nevim, v jakem balicku se nachazi a ted nejsem schopen to zjistit. Pak byste mel reseni nezavisle na editoru. Prikaz ma spoustu voleb, man indent budete urcite potrebovat.
Re: Přeformátování zdrojového kódu
celé vláknoindent funguje uplne korektne jen na ceckovske zdrojaky. Zkousel jsem na nej postvat Javovsky kod a nektere konstrukce spatne pochopil - ono je to vlastne logicke, syntaxe je sice podobna cecku, ale ne stejna. Takze na PHP a C# moc nevim nevim...

