Vim: используйте globpath для получения разных типов файлов

У меня есть три файла в моем Desktop: foo.py, foo.tex а также foo.pdf, Я хочу использовать globpath() функция для получения полного пути python а также tex файлы, но не pdf файл. Я знаю, что могу сделать

:echo globpath('C:\Users\Pedro\Desktop', 'foo.tex')

или же

:echo globpath('C:\Users\Pedro\Desktop', 'foo.py')

чтобы получить полный путь для tex или python. Как получить полный путь к обоим файлам? то есть я ищу что-то вроде

:echo globpath('C:\Users\Pedro\Desktop', 'foo.(tex|py)')

1 ответ

Решение

glob[path]() функции поддерживают только ограниченный набор :help wildcards, Вы не можете делать чередование, как с регулярными выражениями. Вместо этого просто вызовите функцию несколько раз и объедините результаты:

:echo globpath('C:\Users\Pedro\Desktop', 'foo.tex') . globpath('C:\Users\Pedro\Desktop', 'foo.py')

Последние версии Vim поддерживают , {list} флаг, с помощью которого вы можете сделать globpath() возвращать списки (которые объединяются с + вместо .).


Обратите внимание, что ваш пример без реальных подстановочных знаков глуп; если вам просто нужно преобразовать спецификацию файла в абсолютную форму, лучше использовать fnamemodify(path, ':p'),

Другие вопросы по тегам