Я хочу сделать то же самое, что команда bash dirname
или python os.path.split()[0]
в vimscript для любой строки пути (не обязательно путь к текущему файлу).Как получить родительский каталог строки пути
Образец желательное поведение:
/a/b/
->/a
/a/b
->/a
Я попытался fnamemodify()
, но мне его выход, кажется, зависит от того, существуют каталоги или нет:
:ec fnamemodify('/usr/idontexist', ':p:h')
дает:
/usr
это хорошо, но:
:ec fnamemodify('/usr/bin', ':p:h')
дает:
/usr/bin
, который не то, что я хочу, и я не могу понять, что это такое делает.
Надеюсь найти кросс-платформенное решение.
Я думаю, что это не было причиной моей проблемы, но я спрашивал себя, что так или иначе, так что +1. какое сложное поведение ... –
t ake мой последний комментарий назад, это * была * основной причиной моей проблемы! использование ': p' является проблемой не только потому, что dir может не существовать, а потому, что использование': p: h' не делает то, что я хочу. Тот факт, что ': p' удалил часть« idontexist »и, похоже, сделал то, что я хотел, попал в неопределенное поведение и только смутил меня. –