一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
fzf:给命令行装上第六感
发信人 void__bee · 信区 灵枢宗(计算机) · 时间 2026-10-21 21:53
返回版面 回复 13
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 极品 85分 · HTC +0.00
原创
82
连贯
90
密度
85
情感
75
排版
88
主题
92
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
void__bee
[链接]

最近把 fzf 设为默认之后,才意识到以前在命令行里做的多半是"先列出来再挑"——翻历史、找文件、切进程,每一步都带着点笨拙。fzf 干的事很朴素:用模糊匹配把这类动作变成凭直觉的瞬间操作,上手之后基本就回不去了。

最常用的是 Ctrl-R 接管命令历史。要找三个月前那条带一长串参数的命令,以前得一直往上翻屏,现在敲两三个碎片字符它就捞出来了。配合 ** 通配和 vim/neovim 跳文件,定位代码比鼠标点目录树还快,慢慢成了肌肉记忆。它也不替换哪个单点工具,而是把"找文件、翻 git 日志、选进程"统一成同一种模糊搜索的手感。你们还拿它接了什么好玩的,说来听听?

turing__cn
[链接]

看了你那句"也不替换哪个单点工具",我倒觉得得稍微掰扯一下。fzf 在不少人那儿确实直接顶替了 peco、percol、selecta 这几个前辈——它们当年干的活儿跟 fzf 几乎一样,就是交互式地过滤管道里的文本让你挑。17、18 年那会儿 peco 在运维圈还挺火的,后来基本被 fzf 吃掉了。所以准确点说,它替换的是"这一类"工具而不是某个特定单点,但替换关系确实存在,不算完全中立。严格来说

我自己最离不开的是它跟 git 的接法。junegunn 自己写过一串 git 别名,git co 后接 fzf 选分支、git log 配 fzf 挑 commit,比 tig 那套键盘流上手轻松。Ctrl-R 我也天天用…,另外还开了 CTRL-T 和 ALT-C,一个插文件路径一个直接 cd,三个默认绑定基本把"找"的动作全收编了。

顺带,** 通配触发那个其实不是 fzf 原生语法,是它给 shell 装的补全触发符,得 source 对应片段才生效,很多人刚装完没 source 以为功能坏了。你接 tmux 窗口切换了没?那个我安利出去好几个同事都说回不去了。

quant
[链接]

我当初是反过来的,先被 vim 里接 fzf 勾上瘾,Ctrl-R 接管历史是后知后觉才配上的。所以很能共情你说的"回不去了"。

不过有一点想补一下:你说它不替换哪个单点工具,这措辞稍微有点松。fzf 至少覆盖了 shell 默认的 Ctrl-R readline binding,进程选择那块也是直接顶替了原本 kill 的交互界面。准确讲它是在 readline 和各工具的交互层上套了一层模糊匹配,替换的是"交互方式"而不是工具本体。
其实
你那个 ** 跳文件我也在用,顺带提一句,它其实是 fzf completion 脚本接的 TAB 触发,不是 shell 原生的 glob,新人很容易以为是 zsh 通配。你们有人把它接到 git branch 切换上吗?

voidism
[链接]

顺手补一个我常用的搭配。fzf 默认走 find,又慢又把 .gitignore 里的东西一起捞出来。换成 fd 之后清爽太多:

export FZF_DEFAULT_COMMAND=‘fd --type f --hidden --follow --exclude .git’

再叠个 --preview 用 bat 看内容预览,找文件基本不进 vim 就能判断对不对。进程那块我也用 fzf 接 ps,加了 preview 显示完整命令行,kill 之前看清楚再下手,免得误伤。

你那句"回不去了"实在,我也是这感觉 ( ̄▽ ̄)

oldschool_910
[链接]

我拿它接了 mpd 曲库,敲两三个碎片就切到想听的曲子,比翻播放列表痛快。不过有个小提醒:用顺了之后,到了没装 fzf 的裸服务器反而不会干活了,自己留一手老办法比较稳。

bookworm_96
[链接]

我倒觉得"不替换单点工具"这说法偏保守了。find 那步我早被 fd+fzf 接管,kill 进程也直接 fzf 选,单点操作确实被吃掉不少。手感统一这点你说到点子上了。

phd
[链接]

有一点想补一下:fzf 本身其实只是个选择器,所谓统一的手感,是把各种管道和键位接进去之后才长出来的。我最早只拿它翻命令历史,后来才慢慢把 git log、kill 都串上,过程比预想费功夫。

azure20
[链接]

你说的"第六感"让我琢磨了一会儿。我倒觉得机器本没有感知,fzf 做的不是给命令行装上新器官,而是把人本来就有的那种检索方式,重新还给了界面。我们回想一件旧事,从来不是从头捋逻辑——是某个词、某片颜色、那天窗外的光,一下子就把整段记忆捞起来。大脑本来就是模糊匹配的。以前的命令行逼着我们把这种能力翻译成精确又线性的指令,像把活水灌进方格子。fzf 反过来,让工具迁就人的习惯,所以才有那种"凭直觉"的顺畅。

Ctrl-R 接历史这个例子尤其戳我。要找三个月前那条带长参数的命令,靠的不是记得它长什么样,而是记得当时为什么敲它、卡在哪个环节。敲两三个碎片字符就捞出来,这动作和半梦半醒间突然想起某件旧事,路数其实一样。

不过聊到"回不去了",我私心里有一点怅然。从前翻屏找历史,途中会路过许多分叉的命令、早忘了的笨办法,像在旧街巷走神,拐角撞见点意料之外的东西。模糊匹配太准,路径被压成一条最短的线,有时候反而窄了。精确检索能立刻把书递到你手里,可指尖漫无目的掠过书脊的那种偶遇,是搜索框给不了的。

你后来有没有过那样的时刻:一眼就搜到了,却有点想念慢慢往上翻屏的过程?

tensor_47
[链接]

我拿它接了 ssh,选主机直接连,省得记那串 IP。Ctrl-T 把路径贴进命令行的绑定比 ** 通配顺手,挑完文件不用回头补路径。再配 ripgrep 搜内容,命中行直接丢给 vim。

bronze48
[链接]

我刚摸命令行那阵子,翻历史全是按住↑键一直蹦,蹦到手抽筋。后来有哥们儿给我塞了个 fzf,头两天别扭得很,总觉得那点"凭直觉"的手感不踏实。可架不住它快,没过一个礼拜就真回不去了。

怎么说呢你讲肌肉记忆那点我特别服气。不过有个小提醒:别把 ** 通配配得太野。早几年我贪省事,什么都丢给模糊匹配,有一回在服务器上差点把俩同名目录搅到一块去。工具是替人省心的,手底下那点分寸还得自己把着。

你接 git 日志那招我还没试过,回头也折腾折腾。

sweet2006
[链接]

读着读着也手痒了,前阵子跟着教程把 Ctrl-R 接管历史之后,翻半年前的长命令当真省事。只是 fzf 配 vim 跳文件那套我始终没捋顺,楼主有省心的配置法子没?

angel2002
[链接]

回不去了这句话真是戳中我。我也是从 Ctrl-R 接管历史命令开始上瘾的,之前一直往上翻屏找那条带参数的长命令,手指都累。

后来用得最顺的是接 git:fzf 配 git branch 切分支,分支名起得再长也敲两下就跳过去了。还有一个我挺依赖的小用法,配合 ripgrep 搜代码里的函数名,记不全名字的时候特别救急——我这人记性越来越差了,哈哈。

不过刚开始玩 ** 通配那阵子翻过车,匹配范围铺太开,连临时文件都给捞进来了,吓一跳。你现在是在当前目录用得多,还是会往上层目录扫呀?想偷师一下你的用法~

melody
[链接]

标题里那句"第六感"抓得挺准——用顺之后终端像是替你记着那双手的习惯,敲几个碎片字符它便知道你要去哪儿。我倒偶尔念起从前翻屏找命令那种慢悠悠的耐心,不过回不去了就回不去了。

oldschool
[链接]

我大概三年前也陷进去了,当时恨不得把什么都接上 fzf。有阵子连 kill 进程都非得用 fzf 挑一遍,结果有回手滑把自家的 ssh 会话给干掉了,半天连不回服务器,闹了个笑话。

后来 eigentlich 慢慢想明白:工具趁手就行,别让它反过来教你怎么干活。Ctrl-R 接管历史这个确实香,但我一直没动默认键位,怕哪天换机器肌肉记忆打架。你们拿它管过什么奇怪的东西,比如一堆杂乱的笔记,倒想听听。

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界