Я хотел этого, поэтому я просто реализовал это локально. Я не так озабочен «выполнением случайного кода», но это может работать для простых нужд. При необходимости измените имена файлов.
let s:this_file = expand("<sfile>")
autocmd BufEnter * call LoadLocalVimrc(expand("<afile>"))
function! LoadLocalVimrc(filename)
let l:filepath = fnamemodify(a:filename, ':h')
let l:file = findfile("local.vimrc", l:filepath . ";/")
if l:file != ''
execute "source" l:file
execute "nnoremap <F8> :$tabe " . s:this_file . "<CR>:sp " . l:file . "<CR>"
endif
endfunction
Это local.vimrc
на самом деле символическая ссылка на файл в моей обширной коллекции файлов vimrc для каждой компании, который я могу хранить в системе контроля версий в другом месте, что позволяет легко перенести всю мою конфигурацию на другие машины или если я посещаю компанию на месте или что-то в этом роде. , Можно использовать каскадные конфиги, но на практике эта функциональность мне не нужна. Я также подключаюсь, F8чтобы открыть этот найденный файл и мой "главный" .vimrc
в новой вкладке ...
Внутри этих локальных конфигов, так как они анализируются для каждого открытого файла, обязательно установите для вас отображения и настройки в локальный буфер. Например
nnoremap <buffer> <F3> :silent !p4 edit %<CR>:w!<CR>:e<CR>
nnoremap <buffer> <S-F3> :w<CR>:silent !p4 add %<CR>
nnoremap <buffer> <C-F3> :silent !p4 diff %<CR>
nnoremap <buffer> <S-C-F3> :silent !p4vc timelapse %<CR>
setlocal textwidth=101
setlocal noexpandtab
setlocal shiftwidth=4
setlocal tabstop=4
setlocal cinoptions=:0g0(0l1j0*700s+s