S 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.
Konkré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.
Pro 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 :-)
Muzete 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.