在 Linux 或 Mac 环境中,Vim\xe2\x80\x99sglob()函数不匹配点文件,例如.vimrc或.hiddenfile. 有没有办法让它匹配所有文件,包括隐藏文件?
命令 I\xe2\x80\x99m 使用:
\nlet s:BackupFiles = glob("~/.vimbackup/*")\n我\xe2\x80\x99ve甚至尝试将神秘{flag}参数设置为\xc2\xa0 1,但它仍然不\xe2\x80\x99t返回隐藏文件。
更新:谢谢ib!这里\xe2\x80\x99是我\xe2\x80\x99一直在努力的结果:delete-old-backups.vim。
\n这是由于该glob()函数的工作原理所致:单星模式在设计上与隐藏文件不匹配。在大多数 shell 中,可以更改默认的通配符样式来执行此操作(例如,shopt -s dotglob
Bash 中的 via),但不幸的是,在 Vim 中这是不可能的。
然而,仍然有多种可能性来解决这一问题。首先也是最明显的是分别 glob 隐藏文件和非隐藏文件,然后连接结果:
:let backupfiles = glob(&backupdir..'/*').."\n"..glob(&backupdir..'/.[^.]*')
(小心不要将.和..条目与隐藏文件一起获取。)
另一种可能更方便但可移植性较差的方法是在调用中使用反引号扩展glob():
:let backupfiles = glob('`find '..&backupdir..' -maxdepth 1 -type f`')
这会强制 Vim 执行反引号内的命令来获取文件列表。shellfind命令列出-type f指定目录中的所有文件 ( ),包括隐藏文件(-maxdepth 1
禁止递归)。