使命令仅适用于所选的文件类型

时间:2018-02-05 08:43:08

标签: vim

我想将F2映射到编译tex文件,而将F3映射到tex文件。

这就是我在[attachment] => Array ( [0] => Array ( [name] => pdf_file_1.pdf [file] => /home/psinke/domains/*****/public_html/pdf_file_1.pdf ) [1] => Array ( [name] => pdf_file_2.pdf [file] => /home/psinke/domains/*****/public_html/pdf_file_2.pdf ) [2] => Array ( [name] => pdf_file_3.pdf [file] => /home/psinke/domains/*****/public_html/pdf_file_3.pdf ) ) 中添加的内容:

.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-Box插件。我可以手动执行它们而不会有任何问题。在任何* .tex文件中键入Latex*都会返回:echo &filetype

2 个答案:

答案 0 :(得分:3)

你有两种方法......

  • 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
    

建议使用第二种方法,因为它比第一种更清洁,更便宜。

答案 1 :(得分:1)

我用以下代码替换了上面的代码:

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