使用fzf增强zsh的自动补全

本文参考自:4 Useful fzf Tricks for Your Terminal | Pragmatic Pineapple 🍍

fzf是什么?fzf是一个按行搜索文本的工具,本质上和grep差不多。但它相比grep的优势在于:

  1. 交互式。你可以实时看到输入的字符串筛选出来的结果。
  2. 默认支持模糊匹配。不需要敲正则表达式,就可以做到类似VSCode里的自动补全效果
Basic usage of the fzf command

安装

新版Ubuntu可以直接从apt安装。老版的系统也可以从官网下载二进制文件然后放到PATH里。

1
sudo apt install fzf

zsh自带fzf插件,直接启用即可。以oh my zsh为例,把fzf加到.zshrc的插件列表里:

1
plugins=( ...一堆其他插件...  fzf)

Ctrl+R:fzf + 历史搜索命令

在bash/zsh里按Ctrl+R会启动历史命令搜索。不过默认的搜索机制比较简陋,只匹配连续字符串。启用fzf插件后,zsh会调用fzf来搜索历史命令。这对于命令很长而我又只记得其中某几个单词的情况特别有用。

Search command history with fzf ctrl-r

Ctrl+T:fzf + 补全路径名

Ctrl+T,fzf会搜索当前目录下的子文件。你可以输入字符筛选,方向键选择,然后Enter补全。

Peek 2022-11-09 19-00

Alt+C:fzf + 改变工作路径

Alt+C,fzf会搜索当前目录下的所有子目录。你可以从中选择一个目录,然后zsh就会chdir到这个目录里。命令行里已经输入的命令不会发生变化。

Using fzf alt-c feature

使用fzf增强zsh的自动补全
https://yalandhong.github.io/2022/11/03/shell/zsh-fzf/
作者
Yaland Hong
发布于
2022年11月3日
许可协议