任何方法都可以為 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 下(我希望如此) - 你可以使用不同的分支,並在它們之間進行簽出。

相關內容