如何在 Vim 中根据文件类型加载设置?

ale*_*nco 5 vim

假设我有两组设置,一组用于写作,一组用于编程。如何修改我的文件.vimrc,以便在处理具有扩展名的文件时加载第一组,.md而处理带有扩展名的文件时html/js/css加载后者?

Ing*_*kat 7

虽然:autocmds based onFileType对你来说是一种快速而简单的方法~/.vimrc(正如 @andrewdotn 所建议的),但 Vim 对此有一个适当的抽象:filetype plugins

将设置和缓冲区本地映射放入~/.vim/after/ftplugin/{filetype}.vim. (这要求您有:filetype plugin on;使用after目录允许您覆盖由 完成的任何默认文件类型设置$VIMRUNTIME/ftplugin/{filetype}.vim。)


and*_*otn 5

使用自动命令。例如,以下是我的设置~/.vimrc

autocmd BufRead,BufNewFile *.js,*.html
      \ setlocal indentkeys=!^F,o
autocmd BufRead,BufNewFile *.md
      \ setlocal filetype=markdown | syntax clear
Run Code Online (Sandbox Code Playgroud)

setlocal使用而不是set仅影响与文件名模式匹配的缓冲区。否则,每次加载文件时对选项的更改shiftwidth都会影响所有*.foo缓冲区。

行继续字符\,它允许您将单个命令拆分为多行以提高可读性。

|字符是用于将多个命令链接在一行中的栏。

有关更多信息,请参阅vim 文档中的 autocmd.txt 。