У меня в библиотеке есть функция lh#path#join()
, но, честно говоря ... я никогда ею не пользуюсь. В конце концов, все сводится к конкатенации строк, и /
всегда работает, даже на Windows. Когда мне нужно взаимодействовать с внешними процессами, у меня есть другие функции, которые правильно защищают пути.
" Function: lh#path#join(pathparts, {path_separator}) {{{3
function! lh#path#join(pathparts, ...) abort
let sep
\ = (a:0) == 0 ? '/'
\ : type(a:1)==type(0) && (a:1) == 0 ? '/'
\ : (a:1) == 1 ? '\'
\ : (a:1) =~ 'shellslash\|ssl' ? (&ssl ? '\' : '/')
\ : (a:1)
return join(a:pathparts, sep)
endfunction