to vypada zajimave... hodne zajimave...
Názory k článku
VIM na plný výkon (4)
preklep
celé vláknona konci prvniho odstavce je preklep - "FileFype Plugins."
Praxe
celé vláknoA fakt v tom někdo píšete složitější html stránky? Nic proti VIMu, ale tohle se mi zdá trochu silná káva. :-)
Re: Praxe
celé vlákno:-))
pisu jen ve vimu a k podobnym makrum jsem dospel uz pred dlouhou dobou. Zakladni vec kterou fakt musis mit je closetag makro, jinak se fakt html neda psat :-)
Re: Praxe
celé vláknoco se vam na tom nezda? proc by se v tom nedaly psat slozitejsi html stranky? rad bych videl nejaky editor ve kterem to jde snaze a rychleji
Re: Praxe
celé vláknoNo jasne, v emacsu a PSGML modu:-) Umi treba kontextove vkladani znacek (podle DTD), validaci a potom "skakani" primo na chyby a spoustu jinych veci:-)
Re: Praxe
celé vláknoJa pisu www stranky pouze ve vimu. Ta jednoduchost pri tvorbe vlastniho mapovani je genialni. Z toho clanku to vypada mozna slozite ale staci si stahnout z netu par souboru jak to delaji jini a snadno to pochopis.
Mimochodem clanek byl super, vice takovych!
Re: Praxe
celé vláknoJiste, vsechno, vcetne zdrojaku, HTML a TeXu pisu ve vimu. Silna kava to neni, naopak me stvou omezeni, ktera maji jine textove editory a procesory. Pouze si to chce chvili zvykat, ze zacatku to moc nejde :-(
Re: Praxe
celé vláknoVim je bezesporu super editor. Bohuzel pro
programování uz to zas tak super neni.
Radeji pouzivam JEdit, nebo ted se zacinam
divat co umi Eclipse. JEdit ma nekolik vlastnosti
z VIMu, a i neco navic - dokáže udržovat stromovou
strukturu dokumentu(dobre u Texu). Eclipse ma přímo vim plugin.
Zatim jsem ho nezkousel.
Pri praci v ssh - příkazové řádce je pro me bezesporu Vim ta nejlepsi alternativa.
Re: Praxe
celé vláknoSouhlasim s tim, ze JEdit je velmi dobry editor, pro me je to vsak ponekud tezkotonazni nastroj :-) a ne
vsude je dostupny. Celkem casto pres den presedam na ruzne pocitace (vetsinou na dalku), kde jsou ruzne Unixy, Linux i Windows NT/9x/2000 XP a ne na vsech mam moznost instalace JVM apod.
Nicmene kdyz pisu v TeXu, tak si logicke casti oddeluji pomoci fold-markeru (mam tam defaultne tri slozene zavorky, ktere jednoduse dam do poznamky):
\section{Nejaka cast}%{{{ toto budu videt pri slozeni
text tex
\subsection{Podsekce}%{{{ zase si ji slozim
text text
%}}} konec podsekce
%}}} konec cele sekce
Re: Praxe
celé vláknoDůvody proc VIM vim:)). Vzdálená správa 100%.
U toho TeXu myslím zvláštní okno, kde je graficky
znázorněn strom Kapitola/sekce/podsekce...
je to specialni pugin pro jedit uz presne nevim
jak se jmenuje. Diplomku o velikosti cca 2000 řádků
bych ve Vimu taky napsal, ale v JEdit to bylo mnohem
pohodlnejsi. Ideal by byl JEdit s možností zapnout
chování jako vim:))) To by mohl splnovat
plugin v Eclipse.
Re: Praxe
celé vláknoAha, tak tohle vim primo neumi, to je pravda. Vsechny tyhle vychytavky jsou docela navykovou zalezitosti, takze si to v JEditu vyzkousim a potom mi to bude ve vimu chybet ;-)
Z pluginu vimu jsem zkousel pouze plugin do Visual Studia a bylo to nic moc - vim se spoustel pouze pro psani kodu, ale uz to neumelo zvyraznovani chyb po kompilaci, ladeni bylo pouze ve VS okne atd.
Eclipse neznam, treba to v nem bude vic provazane.
Re: Praxe
celé vláknoNevíte jestli to má taky WYSYWIG režim, případně jestli to hlídá a doplňuje syntaxi jazyka? Mám na mysli, když napíšu třeba <a tak mi to nabídne href, ..., nebo když vložím obrázek, tak mi to doplní jeho velikost do elementu img. Tak nějak jsem pochopil, že spousty se toho dá udělat a že to není myšoidní, ale jsou někde k dispozici nějaké prověřené konfiguráky, něco jako lisp soubory v Emacsu?
Re: Praxe
celé vláknokdyz zmacknes F8 tak ti to nabidne link na lokalni soubor nebo muzes napsat treba www.cosi.cz a ono to doplni co ma. Velikost obrazku to umi taky ale musis mit nainstalovany tusim ImageMagick. Tady to je (kdysi jsem to kdesi obslehl a mirne upravil):
map <F8> :call VlozOdkaz()<CR>
imap <F8> <Esc>:call VlozOdkaz()<CR>
function! VlozOdkaz()
let ConfPrompt="Link nebo obrazek?"
let ConfChoices="&Link\n&Obrazek"
let ConfChoices=ConfChoices."\n&ZRUSIT"
let choice = confirm(ConfPrompt, ConfChoices, 2)
if choice == 1
:call HTML_insertHref()
elseif choice == 2
:call HTML_loadImg()
elseif choice == 3
return
endif
endfunction
function HTML_loadImg()
if(a:0>0)
let path=a:1
else
if(has("browse"))
let path=browse('', 'Vyber obrazek pro <img>', '.', '')
else
echo "Vas VIM nepodporuje prikaz :browse, cestu k obrazku zadejte rucne"
return
endif
endif
let data=system('identify ' . path)
let old_x=@x
let @x=substitute(data, '\([^ ]*\) [^ ]* \([0-9]*\)x\([0-9]*\).*', '<img src="\1" width="\2" height="\3" alt="">', '')
if(data==@x)
echo "VIM: Chyba extrakce rozmeru obrazku!\n" . @x
return
endif
normal "xph
let@x=old_x
startinsert
endfunction
function HTML_insertHref()
if(a:0>0)
let path=a:1
else
if(has("browse"))
let path=browse('', 'Get file for <a href="">', '.', '')
else
echo "Your VIM not supported cmd :browse, insert file path manualy."
return
endif
endif
if(path[0]=='/')
let path=Absolute2Relative(path)
endif
let old_x=@x
let @x='<a href="'.path.'">'.path.'</a>'
normal "xp4hT>vt
Re: Praxe
celé vláknoJo tak tohle hodne vypada jako moje dilo. Udrzuji takovou pokrocilejsi konfiguraci pro lidi, co se s tim nechteji konfigurovat VIMConfig na http://iglu.cz/wraith/odkaz.html?/s_vim/vimconfig-2_download.html
Co se tyce insertu odkazu a obrazku, tak to mam i jako samostatny kod http://iglu.cz/wraith/odkaz.html?/s_vim/rozsireni-html-insert.html
a taktez bych upozornil na makra pro odsazovani textu, je to hned v dalsi polozka v menu. Krome toho ze to mam na strankach, tak je to take k nalezeni na vim.org ve skriptech.
Re: Praxe
celé vláknoMimochodem, vyse uvedeny kod je nekompletni a nebude tedy fungovat. Kdo to chce, muze si to stahnout ode mne.
Re: Praxe
celé vláknoomlouvam se za zverejneni Vaseho dila. Me to ale funguje i takto nekompletni :-))
Re: Praxe
celé vláknoZverejneni mi nevadi, i kdyz bych odkaz na zdroj uvital :-).
Fungovat to nemuze, protoze se z toho vola jeste jedna moje funkce, ktera slouzi k prekladu absolutnich cest na relativni a tu jste nekde zasantrocil :-).
XML-plugin
celé vláknoNa uzatvaranie XML ( aj HTML ) tagov pouzivam http://vim.sourceforge.net/scripts/script.php?script_id=301
V tom plugine sa mi osvecilo najma uzatvorenie tagu okamzite (automaticky) po napisani '>'. V pripade ze sa '>' stlaci 2x, bude urobene odriadkovanie.
vim-latex
celé vláknoNektere ftpluginy uz jsou hotove a prakticky dokonale -- tohle je muj oblibeny:
http://vim-latex.sourceforge.net
filetype plugins vs .vimrc
celé vláknoClanek je vyborny, gratuluji.
Jinak ja jsem taky zacinal vytvaret konfiguraci pomoci pluginu, ale postupem casu jsem mel spoustu konfiguracnich souboru, ktere nebylo snadne prenaset z mista na misto. Celkem casto totiz v praci prechazim na pocitace uzivatelu a jedine co potrebuji mit stejne, je prikazova radka a "ten muj" vim.
Tak jsem to nakonec flakl do jednoho .vimrc souboru (resp. _vimrc na MS Windows), ktery tak ma kolem 40kB a ten soubor si nosim na diskete a take ho mam na netu.
V jednom konfiguracnim souboru se muzou konfigurace pro ruzne typy souboru psat napriklad takto:
augroup __C__
au!
au BufRead,BufNewFile *.cpp,*.c,*.h highlight Statement guifg=white guibg=#0000aa
au BufRead,BufNewFile *.cpp,*.c,*.h syn keyword cConstant nil
au BufRead,BufNewFile *.cpp,*.c,*.h set tabstop=4 nowrap
au BufRead,BufNewFile *.cpp,*.c,*.h set formatoptions=croq nocindent comments&
au BufRead,BufNewFile *.cpp,*.c,*.h set cindent comments=sr:/*,mb:*,el:*/,://
au BufRead,BufNewFile *.cpp,*.c,*.h set foldmethod=syntax foldclose=all foldnestmax=1
au BufRead,BufNewFile *.cpp,*.c,*.h syn region myFold start="{" end="}" transparent fold
au BufRead,BufNewFile *.cpp,*.c,*.h hi cConstant guifg=#ffa0a0
au BufRead,BufNewFile *.cpp,*.c,*.h imap \fo for () {<CR><CR>}<ESC>kk5li
au BufRead,BufNewFile *.cpp,*.c,*.h imap \if if () {<CR><CR>}<ESC>kk4li
au BufRead,BufNewFile *.cpp,*.c,*.h imap \sw switch () {<CR>case a:<CR>break;<CR>case au BufRead,BufNewFile *.cpp,*.c,*.h imap \in #include
augroup END
Vyborny !
celé vláknoVyborny clanek, pouzivam taky primarne vim, ale pokazde se dozvim neco noveho, to je neuveritelne silny editor.
tabulkty
celé vláknoJa mam podobne makro pro tabulky jako bylo vyse uvedeno. Ale jsou problemy, pokud je nastaveno automaticke formatovani. Proste odsazeni pak nedela uplne dobrotu. Mozna by vyresilo napred (1) "spravne" nastavit autoindent, cindent, ... , pak (2) automaticky napsat kod a (3) vratit nastaveni odsazovani.
To je ale za domaci ukol :-)
vice souboru v jednom okne
celé vláknoTohle pouzivam uz delsi dobu, ale jsou s tim problemy kdyz ma clovek otevreno vice souboru RUZNEHO typu a v nich ma nastavene stejne imap prikazy.
Napr v C:
imap ,c /* */<Esc>3hi
a v HTML:
imap ,c <!-- --><Esc>3hi
(nevim, jak to ted vezme
Re: vice souboru v jednom okne
celé vláknoimap <buffer> ,c atd.
viz též :help map-local
Re: vice souboru v jednom okne
celé vláknoBTW, mapování z ft pluginů by mělo být automaticky lokální k bufferu, či ne?
Re: vice souboru v jednom okne
celé vláknoja to resim funkci... treba pro php soubory...
fun! LoadPHP()
imap <? <?php?><C-O>F?<CR><CR><ESC>ki
imap /** /**<CR> * <CR>* <CR><BS>**/<ESC>kka
atd...
endfun
" pro TeX
fun! LoadTeX()
set wrap
map 1\ gg:%s/^[0-9]*\. \(.*\)$/\\item{\1}/g<CR>
map >} ^i{<ESC>$a}<ESC>^
map >s <<>}i\subsection<ESC>
... atd
endfun
a potom
au BufReadPre *.tex call LoadTEX()
au BufNewFile *.tex call LoadTEX()
au BufReadPre *.php call LoadPHP()
au BufNewFile *.php call LoadPHP()
Tradičně
celé vláknoNemít ten vim, tak nevim ... :-)))
Hezký článek.
No nevím...
celé vláknojako bych to už někde četl...
Pavel S.
:D
off topic
celé vláknoOmlouvám se za off-topic, nicméně neuměl by někdo poradit, jestli je vim schopen z regulárního výrazu vygenerovat všechny řetězce, které mu vyhovují?
např.: [aA][bB] -> ab,Ab,aB,AB
Díky
Re: off topic
celé vláknoTreba a* -> ,a,aa,aaa,aaaa,aaaaa,aaaaaa,aaaaaaa,aaaaaaaa,aaaaaaaaa
:)
Re: off topic
celé vláknoTeď si nejsem zcela jist, ale nechybí Vám tam "aaaaaaaaaa"?
Re: off topic
celé vláknoa proč vlastně ne? To, že by výpis byl nekonečný ještě neznamená, že někdo takový soft napsal.
Já osobně bych se bez hvězdičky obešel, defacto i bez tečky.
Nevíte tedy někdo?
Re: off topic
celé vlákno"naspal" nahradit "nenapsal" :-)
Pomale pripojeni nebo lagujici sit
celé vláknoOboji zpusobi, ze makra nebudou fungovat jak byste cekali. Protoze na cilovy pocitac dorazi paket s druhym znakem makra o dost pozdeji nezli byl ve skutecnosti stisknut a vim situaci nevyhodnoti jako makro.
Takze: Bacha na pomalou linku, je to velmi iritujici.

