はじめに
七尾百合子さん、お誕生日 256日目 おめでとうございます! nikkieです。
LT登壇報告です。
目次
fzfと履歴の話
この後の発表資料です #terminalnighthttps://t.co/XbZCdyhu3W
— nikkie(にっきー) / にっP (@ftnext) 2025年11月28日
あなたの履歴は幸せですか?
fzfで幸せにしてあげる!
先日記事にしたこちらを深堀って LT にしました。
履歴検索の Ctrl-R だけでなく
- ファイルパス補完の
Ctrl-T(コマンド入力中に使うと便利!) - ディレクトリ移動できる
Alt-C
も紹介しています。
Ctrl-Rに感銘を受けた私は、その実装についても共有しました。
fzfのオプションをいっぱい知れました!
FZF_DEFAULT_OPTS=$(__fzf_defaults "" "-n2..,.. --scheme=history --bind=ctrl-r:toggle-sort,alt-r:toggle-raw --wrap-sign '\t↳ ' --highlight-line ${FZF_CTRL_R_OPTS-} --query=${(qqq)LBUFFER} +m")
--highlight-line:行全体がハイライトされる。履歴のような長い行に便利+m:複数選択できない--nth(-n):検索対象のフィールドを表現- 現状
-n2..,..だけど、-n..でもいいのでは(未解決)
- 現状
--query:コマンド入力してCtrl-Rで入力をクエリにできる--scheme=history:履歴向けのscoring指定--bindCtrl-Rでsort順切り替えAlt-Rでクエリにマッチしない履歴も表示に切り替え
- 紹介しきれませんでしたが、
--wrap-signも指定しています- ただ私の環境で表示が見られなくて未解決です
- こちらも紹介しきれませんでしたが、
FZF_CTRL_R_OPTS環境変数でオプションを追加できます
ということは、fzf の Ctrl-R を作れる?
ばーん!(※下位互換です)
% history 0 | fzf --tac -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort,alt-r:toggle-raw --wrap-sign '\t↳ ' --highlight-line +m

--tacは「Reverse the order of the input」。
history | fzf --tac --no-sortという例がmanに載っています。
gpt-5.1-codex に読んでもらったところ、上の自作コマンドからさらに進んで、履歴から重複を排除(=一意に)していました
https://github.com/junegunn/fzf/blob/v0.67.0/shell/key-bindings.zsh#L136-L145
perlが使えるならば、使って重複削除perlが使えないならば、fc -rl 1をawkで重複削除
感想など
エンジニアニメで幸せを話した pixiv さん会場で、技術ネタで幸せを話せて感無量です
#エンジニアニメ nikkieのアニメから得た学びの資料はこちらです!(20:20〜話す予定)
— nikkie(にっきー) / にっP (@ftnext) 2024年5月7日
『#アイの歌声を聴かせて』をきっかけに考え始めた幸せ
マインドセットの学びと技術面での学びがあったのです!https://t.co/jm4VnoOoKG
もずますさん、ありがとうございました!
bindkeyを知ったので、その後 fzf のCtrl-Rを知ったときに、「これbindkeyだ。一歩踏み込んで、実装覗いてみようかな」となりました
神楽坂ターミナルでbindkeyを教えたのは私です!!!!!
— もずます@Software Design6月号をよろしく! (@mozumasu) 2025年11月28日
#terminalnight
反応たくさんありがとうございました!
善は急げとも言いますからね #terminalnight
— わたすけ (@watasuke1024) 2025年11月28日
update: zshrc>use `fzf --zsh` instead of zsh-fzf-history-search · watasuke102/dotfiles@e58429b https://t.co/F8r5T1WcdD
(2025/11/29 追記)
熱い気持ちで話されている!w
— スー | MOSHエンジニア (@suguru_ohki) 2025年11月28日
(こういうオタクな話大好き)
#terminalnight
人生の全てを zsh の history と fzf に賭けているのに history の手入れだったり fzf の細かいオプションの精査が全然できてなくて自分大丈夫か⁉️という気持ちになってきたんですが、特に zsh history を最高プラクティスだったりプラグインだったりがよくわからん。オタクのおすすめ教えろください
— しゅんけー「📕Pythonで学ぶ画像生成」発売中! (@shunk031) 2025年11月28日
(2025/11/29 追記 終わり)
理解したい内容の積ん読としても貼っておきます
ちなみに履歴の話で言うと、zshではC-rの履歴に昔すぎる履歴が出てこないので、そういう履歴を検索するための関数をこういう感じ↓で定義している #terminalnight
— わたすけ (@watasuke1024) 2025年11月28日
histgrep() {
grep -P $@ ~/.histfile | sort | uniq
}
zeno.zshのhistory絞りこみ機能もいいぞ(定期)
— もずます@Software Design6月号をよろしく! (@mozumasu) 2025年11月28日
#terminalnight pic.twitter.com/4a6cIEfCRL
(2025/11/29 追記)
#terminalnighthttps://t.co/KbD0ioI7eZ
— ysaito (@ysaito8015) 2025年11月28日
わたし mcfly で履歴あそびしてる
履歴はatuin派です #terminalnight https://t.co/BBk96kD5xq
— のばら (@0x11FE) 2025年11月28日
(2025/11/29 追記 終わり)
終わりに
Terminal Night #1、いろんな切り口のテックトークが聞けてめちゃめちゃ楽しかったです!
開催ありがとうございました。
本体の感想ブログも書きたいな
LTをご清聴いただきありがとうございました。
対面や Twitter での感想、とても嬉しかったです!
会場や Twitter でお話しした方々、ありがとうございました。
fzf --zsh(など)で幸せになりましょう〜

変更履歴
- 2025/11/29 「感想など」にツイートを追加