Vim

為 1 個會話提供單獨的 vimrc 文件的任何方式

  • March 15, 2022

我想知道,vim/vi 中是否有辦法提供不同的 vimrc 文件。我正在考慮管理 2 個不同的 vimrc 文件。對於我在版本控制中籤出/簽入的內容,我想使用不同的命令集,而不是.vimrc文件中的普通命令

例如。

我的.vimrc文件包含一個命令,用於在保存文件時自動刪除任何尾隨空格。但是,我不希望為特定文件啟動此功能。

那麼有什麼方法可以提供不同的 vimrc 文件(可能在命令行中,每次都將其作為參數作為 vim –vimrc=somefile file-to-open)?

請參閱手冊頁:

-u {vimrc} 使用文件 {vimrc} 中的命令進行初始化。跳過所有其他初始化。使用它來編輯特殊類型的文件。它還可以通過命名為“NONE”來跳過所有初始化。更多細節參見 vim 中的 “:help initialization”。

那麼有什麼方法可以提供不同的 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

引用自:https://unix.stackexchange.com/questions/121922