Serpl — VS Code 风格的搜索和替换工具,就在终端里
想象一下这种场景:你正在处理一个大型项目,需要在几十个文件中重命名一个变量。逐个在编辑器中打开?使用繁琐的 sed 脚本?现在有了一个优雅的解决方案——serpl。
什么是 Serpl?
Serpl 是一个用 Rust 编写的终端应用程序,它将 VS Code 便捷的搜索和替换功能直接带到你的终端。它不仅仅是一个 grep/sed 工具,而是一个功能完整的 TUI(文本用户界面),具有交互式预览和灵活的配置选项。
为什么值得一试?
- 功能完整的界面 — 不仅仅是控制台输出,而是便捷的面板式导航
- 处理大型项目 — 与 ripgrep 集成,搜索速度飞快
- AST 搜索 — 支持 ast-grep,可进行精确的语法树查询
- 灵活配置 — 支持 JSON/TOML/YAML
- 集成 — 可与 Neovim 和 Helix 配合使用
一分钟安装
Rust 用户:
cargo install serpl
或通过包管理器安装:
- Homebrew:
brew install serpl - Arch Linux:
pacman -S serpl - NixOS:
nix profile install nixpkgs#serpl
核心功能
1. 带预览的交互式搜索
Serpl 实时显示搜索结果,并高亮匹配内容。你可以在文件之间导航,查看上下文,所有操作都无需离开终端。
2. 智能替换
支持多种替换模式:
- 简单替换
- 保留大小写
- 基于 AST(通过 ast-grep)
3. 灵活的搜索模式
- 纯文本
- 区分大小写
- 全词匹配
- 正则表达式
- AST 搜索(适用于编程语言)
4. 与终端编辑器的完整集成
Neovim 有现成的配置可用:
return {
"akinsho/toggleterm.nvim",
cmd = { "ToggleTerm", "TermExec" },
-- ... конфигурация ...
}
对于 Helix,只需添加:
[keys.normal.ret]
t = [":write-all", ":insert-output serpl >/dev/tty", ":redraw", ":reload-all"]
什么时候特别有用?
- 代码重构 — 批量重命名变量/函数
- 迁移 — API 变更、依赖更新
- 在远程服务器上工作 — 没有 GUI 但需要便捷搜索时
- 快速代码探索 — 查找某个函数的所有使用位置
技术内幕
- 使用 Rust 构建,性能卓越
- 使用 ratatui.rs 构建 UI
- 集成 ripgrep 和 ast-grep
- 支持 5 种配置格式(JSON、JSON5、YAML、TOML、INI)
Serpl 不仅仅是 grep/sed 的替代品,更是为深度使用终端的开发者准备的专业工具。如果你:
- 热爱 CLI 工具
- 经常在远程服务器上工作
- 注重速度和便捷性
那么 Serpl 绝对值得加入你的工具箱。该项目正在积极开发中(GitHub 上 700+ 星),欢迎贡献者。
额外赠送——试试组合使用 Ctrl+o 在所有文件中进行批量替换。节省时间,毋庸置疑!
相关项目