假设我有两组设置,一组用于写作,一组用于编程。我如何修改我的.vimrc
文件,使得第一组设置在处理.md
后缀的文件时被加载,而第二组设置在处理html/js/css
后缀的文件时被加载?
假设我有两组设置,一组用于写作,一组用于编程。我如何修改我的.vimrc
文件,使得第一组设置在处理.md
后缀的文件时被加载,而第二组设置在处理html/js/css
后缀的文件时被加载?
使用自动命令。例如,这是我~/.vimrc
文件的设置:
autocmd BufRead,BufNewFile *.js,*.html
\ setlocal indentkeys=!^F,o
autocmd BufRead,BufNewFile *.md
\ setlocal filetype=markdown | syntax clear
setlocal
而不是set
,以便仅影响与文件名模式匹配的缓冲区。否则,对于像shiftwidth
这样的选项更改将在每次加载*.foo
文件时影响所有缓冲区。
\
是行续字符,它允许您将单个命令拆分成多行以增加可读性。
|
字符是bar,用于在一行中链接多个命令。
setlocal
吗?它们可以只是设置为set
吗?抱歉我不太熟悉vimscript。需要在条件块中包装那些设置吗? - alexchencoset
命令来设置expandtab
。 - alexchencosetlocal
,则该设置将应用于所有缓冲区,如果您打开了多个文件,则会非常令人讨厌。请参阅:he :setlocal
。您不需要将其包装在块或任何内容中;只有当文件名与模式匹配时,相应的设置才会被应用。 - andrewdotnsetlocal
如何与autocmd BufRead,BufNewFile
“连接”起来。它似乎被“嵌套”在里面了?你能否扩展示例以包括一个或多个设置? - alexchencoautocmd BufRead,BufNewFile *.js,*.html setlocal indentkeys=!^F,o
是相同的,只是使用行首的“\”更易读和更习惯。请注意,vimscript语法实际上是在eval.html
中定义的。 - andrewdotn