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