Tak trochu nadrzo vyuziji tento clanek, abych upozornil na sve stranky, kde se VIMu take trochu venuji a kde mam ukazku pokrocilejsi konfigurace, ktera by se mohla mnohym libit. Napr. prepinani kodovani a prekodovani dokumentu z menu, vcetne trvale indikace, jake kodovani je zrovna zapnuto a pod.
mam oatzku k diakritice.
pracuji na win, putty a nastaveni cp1250. Edituji soubor na serveru (je zakodovan v 1250) a vse je ok az na tech 6 znaku (myslim s,z,d s hackem ze). Ostatni veci napr. u s krouzkem a jine jsou na obrazovce OK a take v souboru. Nevite cim to je? Spravi to vas plugin?
Podle toho, co to dělá. Pokud je problém v tom, že ve vašem locale nejsou znaky v rozsahu 128-159 vůbec považována za písmena, tak si nastavte set termencoding=iso-8859-2, v putty překódování do téhož a set fileencoding=windows-1250.
Jedině, že byste editoval různě kódované soubory a/nebo v různých prostředích, pak je třeba to řešit flexibilněji ... já jsem např. vim nahradil skriptem, který zjistí kódování pomocí enca (http://trific.ath.cx/software/enca/) a podle toho se zařídí (např. pro UTF-8 používám jiný font, kde je i azbuka ;-) Milovníci bloatware by si mohli detekci přidat do nějakého autocommandu.
nastavenim putty to nemuze byt, protoze v joe a v bash je vsechno OK pri jednom a to samem putty nastaveni.
Ve vim-u se misto 'z s hackem' objevi '~N'. Vim tyto znaky rozumi take spravne (napr. pri kopirovani bufferu) a ve vyslednem filu jsou spravne znaky odpovidajici sade. Vypada to tak, jak uvedl Yeti, ze znaky z nezobrazitelneho rozsahu vim patrne konvertuje jak od putty tak k ni.
Vypada to halt jenom blbe na obrazovce a nevim proc tam neni nekde prepinac, ktery by zamezil, aby vim s tema znakama nic nedelel.
Já tedy nevím, ale zkoušel jsem se na tuhle úžasnou diskusi na mageu už podívat mockrát, ale odkazy, co tu občas někdo plácne, mi vrací 403-Forbidden, včetně pokusu přístupu na www.mageo.cz (Dnes je to už změna - taky 403. Dříve nenalezena vůbec). Ještě jsem nenarazil na odkaz, skrze který bych se tam mohl dostat... Řekne mi někdo, o co tu jde? Nebo je nějaká chyba na židli? Jaká?
Nevim, jaky pouzivate OS a typ VIMu (graficky nebo bez grafiky). Ja pouzivam VIM bez grafiky (terminalovy) v okne xterm nebo rxvt na Linuxu. V tomto pripade pouzivam na prekodovani nasledujici postup (popsany v helpu):
let &tenc=&enc
set enc=utf-8
Coz po rade znamena: nastav promennou terminalencoding na soucasnou hodnotu encoding (kdyz se nelisi, je tenc vypnute, proto se musi rucne nastavit) a pote nastav encoding (kodovani, ktere vim pouziva pri praci s timto souborem) na utf-8.
Zasadni rozdil mezi encoding a fileencoding je v tom, ze fileencoding se pouziva jen pri vystupu (:w), zatimco kdyz mate rozdilne tenc a enc, tak se "preklad" dela interaktvne pri vstupu z klavesnice a vystupu na obrazovku - podobny system jako kdyz takovy preklad dela napr. emulator terminalu (PuTTY na windows apod.)
Jedina chybka, na kterou jsem pri takove praci narazil, je pri otevreni dalsiho souboru v novem okne (mysleno vim okno, ne okno xterm-u). Promenne se tvari nastavene spravne, ale prekodovani je provedeno chybne, na obrazovce je rozsypany caj. Pomuze v takovem okne zadat
:e!
a soubor se "reloadne" uz se spravnym prekodovanim na terminal.
Clanek dobrej. Zkousel jsem langmap, ale jelikoz mojim default kodovanim je UTF-8 tak mi to moc nepomuze (nebo mi to aspon nefunguje).
Dale jsem se chtel zeptat, jestli nejde nejak ve Vimu nastavit, aby se pri editaci souboru vetsich nez nejaka mez (MAX) nevytvarel swap soubor (ci backup). Strasne to zdrzuje a dost casto to vede k vycerpani prostredku systemu a k ZZZPPPPPOOOOOMMMMAAAALLLLLEEEENNNNIIIII :-).
Diky Dave
Ak potrebujete vkladat diakritiku v iso8859-2, cp-1250, TeXu, alebo unicode kodovani (so specialnym prepisom hexa kodov znakov pre WML), tak odporucam vyskusat imap.vim plugin (insert map plugin), ktory je zaintegrovany do mojej volne pristupnej konfiguracie vimu na adrese:
http://platon.sk/projects/vimconfig/ s CVS rozhranim na
http://platon.sk/cvs/cvs.php/vimconfig/
Proste sa uz netrapite tym, ze ci ste na MS platforme alebo na Linuxe (X alebo konzola), aku klavesnicu pouzivate a ako sa vam zobrazuju fonty, proste iba pisete a viete, ze to bude OK. ;-)
tyto editory jsou obvzlast vyhodne, kdyz poslete firemniho technika k zakaznikovi a po telefonu mu reknete, aby udelal crontab -e a prepsal nejake nastaveni. Pote se z takoveho vyletu k zakaznikovi stava okamzite i interni skoleni. A take kdyz clovek administruje ruzne systemy, (SUN) kde se vi editor normalne nevyskytuje ale mcedit je na kazdem pocitaci ze zakona nainstalovan.
S automatickým skokem na pozici kurzoru uloženou v okamžiku zavření bufferu či ukončení VIMu jsem měl jisté problémy. V některých verzích mi to fungovalo, v jiných (či na jiných platformách) nikoliv, až jsem nakonec někde našel tento příkaz do .vimrc:
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g'\"z." | endif
(na jeden řádek). Od té doby mi to šlape všude bez problémů. Možná to jde i nějak elegantněji, ale nevím o tom.
vim je fakt totalny humus. farby, zvyraznovanie a vseljake zbytocnosti, ktore len komplikuju pracu.
navyse vo vim funguju odporne kurozorove klavesove sipky, ktore cloveka odnaucia normalne pracovat s hjkl! potom taky clovek sadne za solaris,hpux a pod. a nevie editovat lebo nefunguju sipky. katastrofalna degradacia celeho it odvetvia!
skratka, klasici pouzivaju nvi.
Pracuji ve vimu už dlouho, ale stále jsem nepřišel na to, jak ukládat historii (undo) pro každý editovaný soubor zvlášť. Typický příklad použití je práce na projektu: opravuji první bug a edituji soubory A, B a C, pak je zavřu, kouknu (třeba až zítra) na další bug, edituji soubory B,C a D a v souboru C si všimnu, že bych se rád vrátil - i k nějakému mezistavu neuloženém v CVS. Máte někdo tip?
Myslim, ze v skutocnosti chcete to, co je popisane
v :help session-file. Plus samozrejme by asi bolo treba nejake tie premapovania a aliasy.
Per file history sa mi ale zda dost overkill, nestaci Vam per-working-directory history? To sa da vyriesit jednoducho, stacit spustat vim takto
vim -i ".viminfo" ...
a je to.
Skvělý článek, jen malý návrh: myslím, že mapovací dvojice typu:
nmap <F5> :make<CR>
imap <F5> <Esc>:make<CR>
je lepší psát jako:
nmap <F5> :make<CR>
imap <F5> <Esc><F5>
či - je-li příkaz dostatečně atomický - ještě lépe:
nmap <F5> :make<CR>
imap <F5> <C-o><F5>
pochopitelně kvůli snadnějším změnám.
Vim používám každý den, ale zatím se mi nepodařilo zjistit následující nastavení:
Ve vizuálním režimu chci označit/zkopírovat třeba dvě slova. Použiji tedy příkaz w, jenže ten mi označí i první písmeno následujícího slova. Při označování zpět (b) je samozřejmě vše OK.
Díky za radu.
Pavel Hofman.
<flame> skutecni programatori pouzivaji TECO </flame>
<reality> 30 let stary TECO je lepsi, nez M$ notepad </reality>
Dobra vec je zkusit zmacknout v insert modu Ctrl a k nemu 'x', pak 'f' a pak pustit Ctrl ... hadejte, co to udela, treba v tomto miste (dvojznak [] nahrazuje kurzor):
/etc/pass[]
ostatne Ctrl-xl ma take sve vyhody
kdybych tento text psal ve vimu a na nasledujici radce bych ho pouzil, dostal bych kopii teto
kdybych tento tex[]
muzete 3x hadat proc :-).
int this_is_better_function_which_can_do_nothing_in_six_different_ways(){
//some code
return -1;
}
...
nothing=this_is_bet[]
//o radek vyse zmackni ctrl-p, mezi alternativami - vybira z predchoziho textu - se rozhoduje ctrl-p a ctrl-n
V kazdem pripade dekuji autorovi za vyborny clanek
Jeee, cekal jsem kdo tu zmini muj oblibeny editor. A zrovna nekdo s tak peknym nickem, zkus hadat co udela kdyz ho napises jako prikaz :-) A kdyz uz jsme u toho, celni panel procesoru jakozto editor je uplne nejlepsi, nic genialnejsiho snad neni a ani uz nikdo nevymysli.
-djz
zdravim,
cetl jsem tady v diskusi, ze nektere editory jsou lepsi nez vim a co tady pouzivaji skutecni programatori.
nicmene, nez tady zacne nekdo flamesit, tak by me zajimalo, proc je jejich editor lepsi nez ty ostatni.
tak panove, tady jsou moje argumenty:
http://abclinuxu.cz/clanky/ViewRelation?rid=24013
http://abclinuxu.cz/clanky/ViewRelation?rid=43196
a nevidim jeste ty vase.
bye goldenfish
Díky za moc pěkný článek. Už jsem si myslel, že vim znám dokonale, ale ta informace o langmap mě přesvědčila o opaku. Hodně mi to pomůže, taky často přepínám CZ/EN klávesnici.
btw: já si v command režimu přepínám příkazy : a ; Častěji se používá : a nebaví mě pořád mačkat Shift
btw2: schválně si zkuste otevřít ve vimu http://www.df.lth.se/~lft/vim/mandelbrot
a spustit; to je prostě bomba...
No ten Mandelbrot je teda neco pro windousy. Bezi to tedka zhruba tak deset minut, gvim ma alokovano 70 MB RAM a celkova alokace pameti je 730 MB a linearne roste s casem. Nevim, co to je, asi swap ci co. Vytizeni 2G6 celerona peknych 100 procent. No co, ale uz mam vykreslenou tretinu fraktalu :o)
Mně připadá, že už to vim pěkně BFU-nesní --- barvičky, menu pro výběr souboru, grafické rozhraní...
Používám verzi 4.5 a novou ani instalovat nebudu, protože se mi ty hračičky nelíbí.
Mimochodem, nevíte, jak v nové verzi vim způsobit, aby po stisku 'o' se zapnutým autoindent bylo možno odsazení rušit pomocí backspace? Ve starém 4.5 to jde a v novýchg verzích ne.
A jak se dá vypnout modrá barva pro zobrazování ~ za koncem souboru?
Jo, asi VIM opravdu bude BFU-nesni - zalezi ovsem na meritcich. Nabubrelym statnim urednicim se jiste podbizive libivy zdat nebude.
Pokud se ti nove verze zdaji preplacane, zaalias si "vim -u NONE -U NONE" a budes mit ciste berkeleyovske poteseni z klofani.
K dotazum: nevim, priznam se, jestli to bude behat ve 4.5, stale stahovani dev-patchu pro vim mi uz vygumovalo pamet, ale zkus si dat :set bs=indent
~ lze prebarvit zmenou skupiny v barevnem schematu.
Cest praci, VIMu zdar,
_J
"I'm tired of using vi. I get really bored."
-- Bill Joy
Co se tyce onoho "o", tak set bs=2 (hm, ted se divam, ze v novejsich verzich mi to zjevne funguje i pri bs=1), pripadne lze pouzit Ctrl-D a Ctrl-T (myslim) pro zmenseni/zvetseni indentu kdekoli na radku.
Ad BFU: Menu apod. neni problem vypnout (guioptions - ja mam v konfiguraku vypnuti amT, ted nevim, co je co ;) ), pripadne zcela vyhodit pri kompilaci. Co se tyce barvicek apod., tak syntax-highlight je IMHO docela pouzitelna vec, to, ze to ma GUI taky, protoze na barevnou konsoli se neda divat... (if !have(gui_running) syntax off rulez...).