使用`FileType`事件时是否可以包含多种文件类型?

xzh*_*zhu 12 vim latex

例如,我想在一个类似文件中映射一个键,该tex文件包含许多不同类型的tex文件.我必须使用这样的多个命令吗?

au FileType tex nm <C-H> <Plug>IMAP_JumpForward
au FileType latex nm <C-H> <Plug>IMAP_JumpForward
au FileType context nm <C-H> <Plug>IMAP_JumpForward
au FileType plaintex nm <C-H> <Plug>IMAP_JumpForward
...
Run Code Online (Sandbox Code Playgroud)

Pet*_*ker 24

绝对:

au FileType tex,latex,context,plaintex nm <C-H> <Plug>IMAP_JumpForward
Run Code Online (Sandbox Code Playgroud)

一些想法:

  • 应该使用缓冲区本地映射而不是全局映射
  • 使用短名称只有缺点和专业.别.
  • 此autocmd应该在一个组中
  • Autocmd应该被清除(在一个组内),以便重新采购不是问题
  • 也许使用一个ftplugin脚本.例如,~/.vim/after/ftplugin/tex.vim而不是:autocmd因为他们更容易管理
  • 调查romainl的惯用vimrc以获取更多vimrc do/s

清理版本:

augroup tex_mappings
    autocmd!
    autocmd FileType tex,latex,context,plaintex nmap <buffer> <c-h> <Plug>IMAP_JumpForward
augroup END
Run Code Online (Sandbox Code Playgroud)

或者将以下内容添加到~/.vim/after/ftplugin/txt.vim:

nmap <buffer> <c-h> <Plug>IMAP_JumpForward
Run Code Online (Sandbox Code Playgroud)

注意:使用ftplugin方法,您需要为每个FileType(或使用:source)添加此行

有关更多帮助请参阅:

:h :au
:h :aug
:h :map-local
:h after-directory
Run Code Online (Sandbox Code Playgroud)