Vimscript
Vimscript (nebo Vim script) je dynamicky typovaný imperativní skriptovací jazyk textového editoru Vim. Vychází z příkazového jazyka editoru ex. Uživatel pomocí Vimscriptu může do editoru nadefinovat nové schopnosti, zefektivnit často prováděné úlohy, pozměnit chování standardních schopností editoru či je zcela nahradit svými algoritmy. Pluginy a makra Vimu jsou psána ve Vimscriptu. Podobá se ostatním skriptovacím jazykům jako je například Perl. Vimscript může být zapisován přímo v prostředí Vimu ve formě příkazů nebo (běžnější) uložen v obyčejném textovém souboru s koncovkou .vim. Ukázka Vimscriptufunction Minimum ( cislo1, cislo2 )
if a:cislo1 < a:cislo2
let mensi = a:cislo1
else
let mensi = a:cislo2
endif
return mensi
endfunction
Tento kód napsaný ve Vimscriptu definuje novou funkci se jménem "Minimum", která bere dva argumenty (cislo1 a cislo2). Funkce obsahuje jednu podmínku, dvě přiřazení a jeden návratový příkaz. Vlastnosti Vimscriptu
PříkazyPoznámka: jedná se o příkazy použitelné v režimu ex; při interaktivním zadávání v základním režimu je nutné před příkazy napsat dvojtečku. Přiřazovací příkaz:
Výpis hodnoty do stavového řádku:
– lze použít pro zkoušení, jak fungují funkce – například Volání procedury:
Provedení příkazu v normálním (základním, příkazovém) režimu:
– například Provedení dvojtečkového příkazu:
– příkaz ProměnnéLokální proměnné jsou identifikátory bez prefixu, parametry mají prefix Funkce
PříkladNásledující příklad definuje příkazy set nocompatible
function! WholeWordPut(put_before)
if a:put_before == 0
" vložení za kursor
" pozice znaku, za který se vkládá
let lpos = col('.')-1
" příkaz l posune kursor o pozici doprava
execute "normal" "l"
" pozice znaku, před který se vkládá
let rpos = col('.')-1
execute "normal" "l"
" pozice dalšího znaku
let xpos = col('.')-1
if xpos == rpos
let xpos = col('$')-1
else
execute "normal" "h"
endif
if rpos == lpos
let rpos = col('$')-1
else
execute "normal" "h"
endif
else
" vložení před kursor
let rpos = col('.')-1
execute "normal" "h"
let lpos = col('.')-1
if rpos != lpos
execute "normal" "l"
endif
execute "normal" "l"
let xpos = col('.')-1
if xpos == rpos
let xpos = col('$')-1
else
execute "normal" "h"
endif
endif
" znak, za který se vkládá
let lchar = strpart(getline('.'), lpos, rpos-lpos)
" znak, před který se vkládá
let rchar = strpart(getline('.'), rpos, xpos-rpos)
if lchar == '' || match(lchar, '[(\[{< ]') == 0
" na začátku řádku a za otevírací závorku nevkládat před vložený text mezeru
let put_string = substitute(@@, '^ *', '', '')
else
let put_string = substitute(@@, '^ *', ' ', '')
endif
if rchar == '' || match(rchar, '[)\]}> \.,?!:;]') == 0
" na konci řádku, před zavírací závorku a interpunkci nevkládat za vložený text mezeru
let put_string = substitute(put_string, ' *$', '', '')
else
let put_string = substitute(put_string, ' *$', ' ', '')
endif
" Vložení textu
call setline('.', strpart(getline('.'), 0, rpos) . put_string . strpart(getline('.'), rpos))
" Umístění kursoru
call cursor(line('.'), rpos+strlen(put_string))
endfunction
noremap cp :call WholeWordPut(0)<CR>
noremap cP :call WholeWordPut(1)<CR>
Externí odkazy |
Portal di Ensiklopedia Dunia