Предлагаемый способ объединения путей к файлам в vim - PullRequest
0 голосов
/ 18 июня 2020

В python я часто делаю что-то вроде:

os.path.join('/some/path/', 'something', 'file.mov')

Или это можно сделать с помощью Path(...). Какой предлагаемый способ сделать это в vim? Например, в настоящее время я создаю файл журнала в том же каталоге, что и сценарий:

let log_file = expand('%:p:h') . '/file.log'

Есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 19 июня 2020

У меня в библиотеке есть функция 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
...