我想使用常规配置(颜色,行号等)加载〜/ .vimrc,然后加载本地文件中的另一个.vimrc(例如,针对python文件的特定conf)。
答案 0 :(得分:2)
说,您有许多自定义项和调整项,并且您想要更多的结构。对于:set
,:map
和:autocmd
,您可以将它们放在~/.vim/plugin/personal_customization.vim
之类的插件脚本中。对于插件自定义(例如let g:PluginName_Frobnize = 1
),可能会导致执行顺序问题(除非您选择plugin
开头的'runtimepath'
目录或使用特殊文件名({{ 1}}),先阅读。
Vim在这里已经报道过了,但是有些人不知道。 :help usr_43.txt
解释了特定于文件类型的设置。
简而言之,如果只想为某些文件类型启用选项,请使用00plugin_customization.vim
,并将相应的:setlocal option=value
命令放入:setlocal
,其中~/.vim/after/ftplugin/{filetype}.vim
是实际的文件类型(例如{filetype}
)。 (这要求您拥有java
;使用 after 目录允许您覆盖:filetype plugin on
完成的任何默认文件类型设置。)
或者,您可以直接在$VIMRUNTIME/ftplugin/{filetype}.vim
中定义一个:autocmd FileType {filetype} setlocal option=value
,但是一旦您进行了许多自定义,这往往变得很笨拙-这可能只是将您带到这里。
要仅针对单个文件定义特殊的自定义设置,我的ModelineCommands plugin可以将modelines扩展到默认情况下可以在此处指定的内置选项之外。
要进行更广泛的自定义,最好在文件(~/.vimrc
)旁边提供一个随附的Vimscript文件(例如foo.java.vim
):
foo.java
或者,以下本地配置方法也可以应用于单个文件(通过打开当前文件名)。
这通常以使用不同配置进行工作而不是私人物品,不同项目等形式出现。有不同的方法:
如果可以集中配置特定的命令/本地异常,则可以将此类autocmd放入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
:
~/.vimrc
使用:autocmd BufRead,BufNewFile /path/to/dir/* setlocal ts=4 sw=4
代替:setlocal
,同样使用:set
和:map <buffer> ...
很重要。
另一方面,如果您希望将特定配置与项目一起存储(并且不想通过 modelines 将其嵌入所有文件中),则可以使用以下两个选项:>
如果您总是从项目根目录启动Vim,则内置
:command! -buffer ...
启用从当前目录读取:set exrc
文件的功能。您可以在其中放置.vimrc
命令。
否则,您需要插件的帮助; vim.org上有几个;我可以推荐localrc plugin(尤其是my own enhancements),它甚至允许本地文件类型特定的配置。
请注意,从文件系统读取配置具有安全隐患。您可能要:set ts=4 sw=4
。
答案 1 :(得分:1)
您的.vimrc
中将在本地配置中加载如下行:
source ~/.vim/local.vim
例如,您可以输入特定于计算机的文件设置。
但是特定于Python的设置应输入.vim/syntax/python.vim
或(更可能是).vim/after/syntax/python.vim
中。您无需获取它们,只要您在.vimrc
中至少有此文件,只要您打开Python文件,它们就会自动获取:
filetype plugin on
(尽管我建议您改用filetype plugin indent on
。)