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了。
我有这个 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了。