ConTeXt-Nutzer, die die neueste Version des Transliterator-Moduls installiert haben, können mit wenig Aufwand alle Transliterationsschemata auch in ihrerm Editor verfügbar machen. Das folgende Snippet, anzuhängen an ~/.vimrc, bindet das Transliterieren der aktuellen Zeile an Tasten F9 (insert mode), sowie Lt (normal und visual, wobei sich L auf den aktuellen Mapleader bezieht). Zudem kann mit F10 durch die verschiedenen Transliteration-Modi gewechselt werden. Der Modus defaultet zu all (vgl. das Manual). Mit F11 kann er direkt wieder auf diesen Wert zurückgesetzt werden.
" TRANSLITERATOR PLUGIN
"===============================================================================
let g:trl_mode = "all"
let g:trl_mode_list = [ "all", "ru_old", "ru", "ru_transcript_de", "ru_transcript_de_exp", "ru_transcript_en", "ru_transcript_en_exp", "ru_cz", "ocs_cz", "iso9_ocs", "iso9_ocs_hack", "ocs", "ocs_gla", "sr_tocy", "sr_tolt", "bg_de", "gr", "gr_n" ]
let g:trl_mode_dict = { }
let b:modecnt = 1
for mode in g:trl_mode_list
let g:trl_mode_dict[mode] = b:modecnt
let b:modecnt = b:modecnt + 1
endfor
function! TRL_transliterate(mode, str)
let result = system(printf("/usr/bin/env mtxrun –script transliterate –mode=%s –s=\"%s\" –silent 2> /dev/null", a:mode, a:str))
if result =~ "\n$"
return strpart(result, 0, strlen(result) - 1)
end
return result
endfunction
function! TRL_do_line()
let current = getline(".")
let trled = TRL_transliterate(g:trl_mode, current)
call setline(".", trled)
endfunction
function! TRL_do_selection()
normal gv"ty
let @t = TRL_transliterate(g:trl_mode, @t)
normal gvd
normal "tP
endfunction
function! TRL_set_mode(mode)
if get(g:trl_mode_dict, a:mode)
let g:trl_mode = a:mode
endif
echo "Set transliteration mode to: “\" . g:trl_mode . "”."
endfunction
function! TRL_cycle_modes()
let next_mode = get(g:trl_mode_dict, g:trl_mode)
if len(g:trl_mode_list) == next_mode
let next_mode = 0
endif
let g:trl_mode = get(g:trl_mode_list, next_mode)
echo "Set transliteration mode to: “\" . g:trl_mode . "”."
endfunction
nmap <Leader>t :call TRL_do_line()<CR>
imap <F9> <ESC>:call TRL_do_line()<CR>a
vmap <Leader>t :call TRL_do_selection()<CR>
nmap <F10> :call TRL_cycle_modes()<CR>
imap <F10> <ESC>:call TRL_cycle_modes()<CR>a
nmap <F11> :call TRL_set_mode("all")<CR>
imap <F11> <ESC>:call TRL_set_mode("all")<CR>a
"===============================================================================
" END TRANSLITERATOR PLUGIN
"===============================================================================
Ein Trackback
[...] Capanei paginae nvgae Zum Inhalt springen LICENSEqvae ad hanc paginam pertineant « Automatische Transliteration in Vim [...]