Я ищу элегантный способ в Vimscript проверить, существует ли файл в текущем каталоге.
Я придумал приведенный ниже код, но не уверен, что это самое элегантное решение (я установлю параметр Vim, если файл существует). Есть ли способ избежать повторного сравнения имени файла?
Может быть, использовать другую встроенную функцию от Vim?
:function! SomeCheck()
: if findfile("SpecificFile", ".") == "SpecificFile"
: echo "SpecificFile exists"
: endif
:endfunction
vim
file-exists
СтефанБ
источник
источник
filereadable
упоминаниям можно использовать,glob
если вас не волнует удобочитаемость.Некоторые комментарии выражают озабоченность по поводу
filereadable
использованияglob
вместо этого. Это решает проблему наличия файла, который существует, но разрешения не позволяют его прочитать. Если вы хотите обнаружить такие случаи, сработает следующее:источник
E116: Invalid arguments for function
. Как указать файл относительно домашнего каталога для проверки наличия плагина? (См. Также здесь )~
, но я не уверен. Какие аргументы вы привели, когда получили эту ошибку?~
, и он дал эту ошибку. Теперь я попробовал еще раз, и это работает ... :-)Добавляем больше наглядности метафическому комментарию к принятому ответу:
filereadable
это то, что требуется, но есть дополнительный удобный шагexpand
, если вы используете~
на своем пути:Например
:echo filereadable('~/.vimrc')
дает0
,:echo filereadable(expand('~/.vimrc'))
дает1
источник