Я настроил свои отображения следующим образом:
"Set up mappings for LaTeX files
let b:myEngine=0
let g:myEngineList=["pdflatex","texexec"] "pdflatex or context
function! ToggleEngine()
if b:myEngine == "pdflatex"
let b:myEngine = "context"
execute "imap <F5> :! pdflatex %;<CR>"
execute "map ;new \begin{document}<CR><CR>\end{document}"
else
let b:myEngine = "pdflatex"
execute "imap <F5> :! context %;<CR>"
execute "map ;new \starttext<CR><CR>\stoptext"
fi
echo "compilation engine:" g:myEngineList[b:myEngine]
endfunction
Однако это не ведет себя так, как я ожидаю; он отказывается переназначать ключи. Изначально ключи не сопоставлены, а после сопоставления они остаются сопоставленными. Как это исправить?
Я вызываю ToggleEngine () следующим образом: nmap <silent> <F7> :call ToggleSpell()<CR>
Основанное на lh-vim-lib , вот еще одно решение, которое определяет меню и команду (добавление сопоставления становится таким же простым, как вызов команды из сопоставления).
В вашем случае это будет выглядеть так:
Примечание. Его можно расширить для поддержки любого количества альтернатив.
источник