如何加载 ~/.vimrc 然后加载另一个本地 .vimrc

Gch*_*rly 2 vi vim

我想加载带有常规配置(颜色、行号等)的 ~/.vimrc,然后加载本地文件中的另一个 .vimrc(例如 python 文件的特定配置)。

Ama*_*dan 6

本地配置将在您的.vimrc

source ~/.vim/local.vim
Run Code Online (Sandbox Code Playgroud)

例如,您可以放入特定于您的计算机的文件设置。

但特定于 Python 的设置应该进入.vim/syntax/python.vim, 或(更有可能).vim/after/syntax/python.vim。您不需要获取它们,只要您的 中至少有以下内容,只要您打开 Python 文件,它们就会自动获取.vimrc

filetype plugin on
Run Code Online (Sandbox Code Playgroud)

(尽管我建议你filetype plugin indent on改为这样做。)


Ing*_*kat 5

整理/构建过长的 vimrc

比如说,您有很多自定义和调整,并且您想要更多的结构。对于:set:map、 和:autocmd,您可以将它们放入插件脚本中,例如~/.vim/plugin/personal_customization.vim. 对于插件自定义(例如let g:PluginName_Frobnize = 1),您会导致执行顺序问题(除非您选择plugin较早出现的目录或使用首先读取的'runtimepath'特殊文件名( )。00plugin_customization.vim

文件类型特定的设置

Vim 已经为您提供了帮助,但有些人并没有意识到这一点;:help usr_43.txt解释特定于文件类型的设置。

简而言之,如果您只想启用某些文件类型的选项,请使用:setlocal option=value,并将相应的:setlocal命令放入~/.vim/after/ftplugin/{filetype}.vim,其中{filetype}是实际文件类型(例如java)。(这要求您有:filetype plugin on;使用after目录允许您覆盖由 完成的任何默认文件类型设置$VIMRUNTIME/ftplugin/{filetype}.vim。)

:autocmd FileType {filetype} setlocal option=value或者,您可以直接在您的 中定义~/.vimrc,但是一旦您进行了许多自定义,这往往会变得笨拙 - 这可能只是将您带到这里。

文件特定设置

为了仅为单个文件定义特殊的自定义,我的ModelineCommands 插件可以将模型行扩展到默认情况下可以指定的内置选项之外。

对于更广泛的自定义,最好获取foo.java.vim位于文件 ( ) 旁边的随附 Vimscript 文件(例如foo.java):

function! s:AutoSource()
    let l:testedScripts = [expand('<afile>') . '.vim']
    if expand('<afile>:e') !=# 'vim'    " Don't source the edited Vimscript file itself.
        call add(l:testedScripts, expand('<afile>:r') . '.vim')
    endif

    for l:filespec in l:testedScripts
        if filereadable(l:filespec)
            execute 'source' fnameescape(l:filespec)
        endif
    endfor
endfunction
augroup AutoSource
    autocmd! BufNewFile,BufRead * nested call <SID>AutoSource()
augroup END
Run Code Online (Sandbox Code Playgroud)

或者,以下本地配置方法也可以应用于单个文件(通过打开当前文件名)。

本地/项目特定配置

这通常以使用不同的工作配置和私人配置、不同的项目等形式出现。有不同的方法:

本地配置-集中配置

如果可以集中配置特定命令/本地异常,您可以将此类自动命令放入您的~/.vimrc

:autocmd BufRead,BufNewFile /path/to/dir/* setlocal ts=4 sw=4
Run Code Online (Sandbox Code Playgroud)

重要的是使用:setlocal代替:set, 以及同样的:map <buffer> ...:command! -buffer ...

另一方面,如果您希望将特定配置与项目一起存储(并且不想通过modelines将其嵌入到所有文件中),您有以下两个选项:

具有内置功能的本地配置

如果你总是从项目根目录启动 Vim,内置的

:set exrc
Run Code Online (Sandbox Code Playgroud)

.vimrc允许从当前目录读取文件。您可以将:set ts=4 sw=4命令放在那里。

通过插件进行本地配置

否则,你需要插件的帮助;vim.org 上有几个;我可以推荐localrc 插件(尤其是我自己的增强功能),它甚至允许本地文件类型特定的配置。

请注意,从文件系统读取配置具有安全隐患;你可能想要:set secure