Bạn có thể sử dụng :exe
, nhưng điều này cực kỳ cồng kềnh khi sử dụng và bạn sẽ cần phải thoát khỏi một vài điều.
Tôi đã từng sử dụng chức năng sửa đường dẫn của riêng tôi. Nó trông giống như:
exe 'set rtp+='.lh#path#fix(somevariable)
" with standard tools, may be it'd be (untested)
exe 'set rtp+='.escape(somevariable, ' \|,')
let &rtp = expression
thực sự là bạn của chúng tôi
Nhưng thực sự, nó không chơi tốt với +=
. Đó là lý do tại sao tôi nghĩ ra lh#path#munge()
điều đó phụ thuộc vào chức năng khác lh#list#add_if_new()
. Nói đúng ra set +=
là giả lập bởi lh#list#add_if_new()
. munge()
giữ các tên đường tồn tại hoặc các mẫu hình thực sự phù hợp với sự vật.
" Function: lh#path#munge(pathlist, path) {{{3
function! lh#path#munge(pathlist, path) abort
if type(a:pathlist) == type('str')
let pathlist = split(a:pathlist, ',')
return join(lh#path#munge(pathlist, a:path), ',')
else
" if filereadable(a:path) || isdirectory(a:path)
if ! empty(glob(a:path)) " support '/**' for &tags
call lh#list#push_if_new(a:pathlist, a:path)
endif
return a:pathlist
endif
endfunction
" Function: lh#list#push_if_new(list, value) {{{3
function! lh#list#push_if_new(list, value) abort
if index(a:list, a:value) < 0
call add (a:list, a:value)
endif
return a:list
endfunction
Chúng được định nghĩa và duy trì trong lh-vim-lib .