在Linux或Mac环境中,Vim的glob()函数与.vimrc
或.hiddenfile
等点文件不匹配。有没有办法让它匹配包括隐藏文件在内的所有文件?
我正在使用的命令:
let s:BackupFiles = glob("~/.vimbackup/*")
我甚至尝试将神秘的{flag}
参数设置为1
,但它仍然不会返回隐藏文件。
更新:谢谢 ib !以下是我一直在努力的结果:delete-old-backups.vim
答案 0 :(得分:3)
这是因为glob()
函数的工作原理:单个星形字符
与设计不匹配的隐藏文件。在shell中,默认为globbing样式
可以更改为(Bash中的shopt -s dotglob
),但这是不可能的
在Vim。
然而,人们有几种可能解决问题。第一也是最重要的 显而易见的是将glob隐藏而不是隐藏文件分开然后连接 结果
:let backupfiles = glob(&backupdir.'/*')."\n".glob(&backupdir.'/.[^.]*')
(小心不要提取.
和..
以及隐藏文件。)
使用另一种可能更方便的方法(但不太便携)
glob()
电话中的反引号扩展。
:let backupfiles = glob('`find '.&backupdir.' -maxdepth 1 -type f`')
这迫使Vim在反引号内执行命令以获取列表
文件。 find
命令列出包含隐藏文件的所有文件(-type f
),
在指定的目录中(-maxdepth 1
禁止递归)。