假设我有两组设置,一组用于写作,一组用于编程。如何修改我的文件.vimrc
,以便在处理具有扩展名的文件时加载第一组,.md
而处理带有扩展名的文件时html/js/css
加载后者?
虽然:autocmd
s based onFileType
对你来说是一种快速而简单的方法~/.vimrc
(正如 @andrewdotn 所建议的),但 Vim 对此有一个适当的抽象:filetype plugins。
将设置和缓冲区本地映射放入~/.vim/after/ftplugin/{filetype}.vim
. (这要求您有:filetype plugin on
;使用after目录允许您覆盖由 完成的任何默认文件类型设置$VIMRUNTIME/ftplugin/{filetype}.vim
。)
使用自动命令。例如,以下是我的设置~/.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 。