Сделать так, чтобы Vim's glob () также совпадал со скрытыми точечными файлами - PullRequest
4 голосов
/ 29 сентября 2010

В среде Linux или Mac функция glob () Vim не соответствует точечным файлам, таким как .vimrc или .hiddenfile.Есть ли способ заставить его соответствовать ВСЕМ файлам, включая скрытые?

Используемая мной команда:

let s:BackupFiles = glob("~/.vimbackup/*")

Я даже пытался установить для загадочного параметра {flag} значение1 и все же он по-прежнему не возвращает скрытые файлы.

ОБНОВЛЕНИЕ: Спасибо ib !Вот результат того, над чем я работал: delete-old-backups.vim

1 Ответ

3 голосов
/ 29 сентября 2010

Это связано с тем, как работает функция glob(): одиночный символ звезды не соответствует скрытым файлам по дизайну. В оболочке стиль по умолчанию можно изменить на это (shopt -s dotglob в Bash), но это невозможно в Vim.

Однако есть несколько возможностей решить проблему. Первый и самый очевидно, чтобы скрыть скрытые и не скрытые файлы по отдельности, а затем объединить Результаты.

:let backupfiles = glob(&backupdir.'/*')."\n".glob(&backupdir.'/.[^.]*')

(будьте осторожны, чтобы не получить . и .. вместе со скрытыми файлами.)

Другой и, возможно, более удобный способ (но менее переносимый) заключается в использовании расширение backtick в вызове glob().

:let backupfiles = glob('`find '.&backupdir.' -maxdepth 1 -type f`')

Это вынуждает Vim выполнять команду внутри обратных кавычек, чтобы получить список файлы. Команда find выводит список всех файлов (-type f), включая скрытые, в указанном каталоге (-maxdepth 1 запрещает рекурсию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...