unix 如何使glob()函数也匹配Vim中隐藏的点文件?

ukqbszuj  于 2023-02-08  发布在  Unix
关注(0)|答案(1)|浏览(164)

在Linux或Mac环境中,Vim的glob()函数不匹配点文件,如.vimrc.hiddenfile。有没有办法让它匹配 * 所有 * 文件,包括隐藏文件?
我使用的命令:

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

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

nbewdwxp

nbewdwxp1#

这是由于glob()函数的工作方式:单星模式与隐藏文件不匹配,在大多数shell中,默认的globbing样式可以更改(例如,通过Bash中的shopt -s dotglob),但不幸的是,这在Vim中是不可能的。
然而,我们仍然有几种可能性来解决这个问题。首先,也是最明显的是,分别对隐藏文件和非隐藏文件进行glob,然后将结果连接起来:

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

(Be注意不要将...条目与隐藏文件沿着提取。)
另一种可能更方便但移植性较差的方法是在glob()调用中使用反勾扩展:

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

这将迫使Vim在反引号内执行命令以获取文件列表。find shell命令列出指定目录中的所有文件(-type f),包括隐藏文件(-maxdepth 1禁止递归)。

相关问题