任何方法都可以为 1 个会话提供单独的 vimrc 文件

任何方法都可以为 1 个会话提供单独的 vimrc 文件

我想知道 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 文件包含一个在保存文件时自动删除任何尾随空格的命令。但是,我不希望为特定文件激活此功能。

如果您需要对某些已知文件类型进行特殊处理,可以使用不同的解决方案;使用autocmdvimrc 中的命令。例如,这是我的与文件类型相关的配置:

" 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 下(我希望如此) - 你可以使用不同的分支,并在它们之间进行签出。

相关内容