[英]Use FZF to list git files sorted by date (and set default in bash)
我想使用fzf列出git中的所有文件,並按修改日期排序。 (我在vim中使用此輸出)
此命令似乎有效:
(while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- $file) $file; done < <(git ls-tree -r --name-only HEAD) | sort -k1,1n | awk {"print \$3"}) 2> /dev/nul
但是,如何將其作為默認的FZF命令呢? 我試過了,但是變量FZF_DEFAULT_COMMAND仍然為空:
export FZF_DEFAULT_COMMAND='
(while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- $file) $file; done < <(git ls-tree -r --name-only HEAD) | sort -k1,1n | awk {"print \$3"}) 2> /dev/null'
也許我需要逃脫嗎?
編輯:這是我現在使用的命令:
export FZF_DEFAULT_COMMAND='(git ls-tree -r --name-only HEAD)|(while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- "$file") $file; done | sort -r | awk {"print \$3"}) 2> /dev/null'
fzf
使用/bin/sh
(Posix shell)執行命令。 即使/bin/sh
鏈接到/bin/bash
它也將在非posix功能上失敗(例如您的情況下的進程替換)。 您可以強制執行GNU / bash支持:
export FZF_DEFAULT_COMMAND='set +o posix
(while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- $file) $file; done < <(git ls-tree -r --name-only HEAD) | sort -k1,1n | awk {"print \$3"}) 2> /dev/null'
如果您沒有將bash
符號鏈接到/bin/sh
,則必須擺脫進程替換:
export FZF_DEFAULT_COMMAND='
(git ls-tree -r --name-only HEAD)|(while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- $file) $file; done | sort -k1,1n | awk {"print \$3"}) 2> /dev/null'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.