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

mtk*_*mtk 10 vim vimrc

我想知道,vim/vi 中是否有办法提供不同的 vimrc 文件。我正在考虑管理 2 个不同的 vimrc 文件。对于我在版本控制中签出/签入的内容,我想使用不同的命令集,而不是.vimrc文件中的普通命令

例如。

我的.vimrc文件包含一个命令,用于在保存文件时自动删除任何尾随空格。但是,我不希望为特定文件激活此功能。

那么有什么方法可以提供不同的 vimrc 文件(可能在命令行中,每次都将它作为参数作为 vim --vimrc=somefile file-to-open)?

cha*_*aos 13

请参阅联机帮助页:

-u {vimrc} 使用文件 {vimrc} 中的命令进行初始化。跳过所有其他初始化。使用它来编辑一种特殊类型的文件。它还可用于通过指定名称“NONE”来跳过所有初始化。更多细节参见 vim 中的 ":help 初始化"。


Mar*_*ich 12

那么有什么方法可以提供不同的 vimrc 文件(可能在命令行中,每次都将它作为参数作为 vim --vimrc=somefile file-to-open)?

是的,使用-u参数:

vim -u ~/.my-custom-vimrc
Run Code Online (Sandbox Code Playgroud)

来自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.
Run Code Online (Sandbox Code Playgroud)

我的 .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
Run Code Online (Sandbox Code Playgroud)

如果您需要将选项应用于 vim 不会自动分配特定文件类型的内容,您可以添加自己的映射(在使用autocmd命令之前执行此操作):

" mapping of filenames to filetypes
au FileReadPost,BufReadPost,BufNewFile /etc/freeradius/* setl ft=freerad
au FileReadPost,BufReadPost,BufNewFile *.xt              setl ft=xt
Run Code Online (Sandbox Code Playgroud)