让Vim的glob()也匹配隐藏的点文件

时间:2010-09-28 23:28:00

标签: unix vim file

在Linux或Mac环境中,Vim的glob()函数与.vimrc.hiddenfile等点文件不匹配。有没有办法让它匹配包括隐藏文件在内的所有文件?

我正在使用的命令:

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

我甚至尝试将神秘的{flag}参数设置为1,但它仍然不会返回隐藏文件。

更新:谢谢 ib !以下是我一直在努力的结果:delete-old-backups.vim

1 个答案:

答案 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禁止递归)。