Vim FZF:按文件日期对初始结果进行排序

Vim FZF: sort initial results on file date

我有这个 vim 映射:

nnoremap <silent> <leader><space> :Files<CR>

是否可以更改初始列表的排序?
最好能先看到最近更改的文件。
当我开始搜索时,从 fzf 正常排序就可以了。

我知道没有简单的方法,没有。

但是你可以只写一个函数来获取按日期排序的文件列表(注意这都是未经测试的):

let l:filelist = split(system(find . -type f -printf '%T@ %p\n' | 
                              \ sort -k 1 -n | sed 's/^[^ ]* //'), 'n')

还有一些其他命令,具体取决于您可以使用的环境。但是这里出现了第一个问题。该命令列出了目录中的所有文件。尊重你的 gitignore 或任何需要做的更多工作。 这也比 fzf 慢很多!

获得列表后,您可以再次使用 fzf:

call fzf#run({'source': l:filelist, 'sink': 'e', 'down': '40%'})

所以我认为这可能适用于小型项目,但如果你有一个更大的项目,它就会变慢,而且如果你使用像 rails 这样经常重建你的资产的东西,你会必须过滤结果。


更新:

如 r03 的评论中所述,如果要全局使用,还可以编辑 FZF_DEFAULT_COMMAND 变量。那就不用传给vimscript了。