我想知道 vim/vi 中是否有办法提供不同的 vimrc 文件。我正在考虑管理 2 个不同的 vimrc 文件。对于我在版本控制中签出/签入的内容,我想使用不同的命令集,而不是.vimrc
文件中的普通命令
例如。
我的.vimrc
文件包含一个在保存文件时自动删除任何尾随空格的命令。但是,我不希望为特定文件激活此功能。
那么有什么方法可以提供不同的 vimrc 文件(可能在命令行中,每次将其作为参数作为 vim --vimrc=somefile file-to open)?
答案1
请参阅联机帮助页:
-u {vimrc} 使用文件 {vimrc} 中的命令进行初始化。跳过所有其他初始化。使用它来编辑特殊类型的文件。它还可用于通过指定名称“NONE”来跳过所有初始化。有关更多详细信息,请参阅 vim 中的“:help初始化”。
答案2
那么有什么方法可以提供不同的 vimrc 文件(可能在命令行中,每次将其作为参数作为 vim --vimrc=somefile file-to open)?
是的,使用-u
参数:
vim -u ~/.my-custom-vimrc
从man vim
:
-u {vimrc} Use the commands in the file {vimrc} for initializations.
All the other initializations are skipped. Use this to
edit a special kind of files. It can also be used to skip
all initializations by giving the name "NONE". See ":help
initialization" within vim for more details.
我的 .vimrc 文件包含一个在保存文件时自动删除任何尾随空格的命令。但是,我不希望为特定文件激活此功能。
如果您需要对某些已知文件类型进行特殊处理,可以使用不同的解决方案;使用autocmd
vimrc 中的命令。例如,这是我的与文件类型相关的配置:
" Mapping of filetypes to options
au FileType freerad setl noexpandtab sts=0 sw=8
au FileType make setl noexpandtab sts=0
au FileType php let php_sql_query=1
au FileType php let php_htmlInStrings=1
au FileType python setl shiftwidth=2 expandtab
au FileType sql setl noexpandtab sts=0 sw=8
" global options I do not want any filetype to override
au FileType * setl formatoptions-=ro " don't continue comments
如果您需要将选项应用于 vim 不会自动分配特定文件类型的内容,您可以添加自己的映射(在使用命令之前执行此操作autocmd
):
" mapping of filenames to filetypes
au FileReadPost,BufReadPost,BufNewFile /etc/freeradius/* setl ft=freerad
au FileReadPost,BufReadPost,BufNewFile *.xt setl ft=xt
答案3
您还可以set exrc
在主 .vimrc 中让 vim 自动从当前目录加载 .vimrc。
答案4
如果你将 Vim 配置目录存储在 Git 下(我希望如此) - 你可以使用不同的分支,并在它们之间进行签出。