TL; DR : использовать execute 'cd' fnameescape(pathname)
Объяснение : множество базовых команд, которые принимают имена файлов в качестве аргумента, поддерживают синтаксис обратной косой черты:
command `shell command`
или
command `=vim_expression`
, поэтому ваш пример может быть записан как
cd `=pathname`
, если вы запускаете его в контролируемой среде.Вы не должны использовать этот вариант в плагинах , потому что a) есть настройка &wildignore
, которая может помешать вам: set wildignore=*|cd <code>=pathname
приведет к сбою cd
независимо от того, что хранится в pathname
и b) если путь содержит символы новой строки, он будет разбит на два или более каталогов.Таким образом, то, что вы должны использовать для любого фрагмента кода, которым вы намереваетесь поделиться, это
execute 'cd' fnameescape(pathname)
Обратите внимание, что вы не должны использовать execute "cd" pathname
, поскольку он не заботится о специальных символах в имени пути (например, пробел).