Заставить команды работать только для выбранных типов файлов
Я хочу сопоставить F2 для компиляции текстовых файлов и F3 для просмотра текстовых файлов.
Это то, что я положил в .vimrc
:
if &filetype == "tex"
nnoremap <F2> :Latexmk<cr>
inoremap <F2> <Esc>:Latexmk<cr>a
nnoremap <F3> :LatexView<cr>
inoremap <F3> <Esc>:LatexView<cr>a
endif
Эти Latex*
Команды из плагина LaTeX-Box. Я могу выполнить их вручную без проблем. Typing :echo &filetype
в любом *.tex файле возвращается tex
,
2 ответа
Решение
У вас есть два метода...
Создайте самоочищающуюся группу в своем
vimrc
и добавьте столько автокоманд по мере необходимости:augroup Tex autocmd! autocmd FileType tex nnoremap <buffer> <F2> :Latexmk<cr> autocmd FileType tex nnoremap <buffer> <F3> :LatexView<cr> autocmd FileType tex inoremap <buffer> <F2> <Esc>:Latexmk<cr>a autocmd FileType tex inoremap <buffer> <F3> <Esc>:LatexView<cr>a augroup END
Используйте ftplugin:
Поместите следующее в
after/ftplugin/tex.vim
:nnoremap <buffer> <F2> :Latexmk<cr> nnoremap <buffer> <F3> :LatexView<cr> inoremap <buffer> <F2> <Esc>:Latexmk<cr>a inoremap <buffer> <F3> <Esc>:LatexView<cr>a
Второй метод рекомендуется, потому что он намного чище и дешевле, чем первый.
Я заменил код выше с этим:
autocmd FileType tex nnoremap <buffer> <F2> :Latexmk<cr>
autocmd FileType tex nnoremap <buffer> <F3> :LatexView<cr>
autocmd FileType tex inoremap <buffer> <F2> <Esc>:Latexmk<cr>a
autocmd FileType tex inoremap <buffer> <F3> <Esc>:LatexView<cr>a