>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Rust

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"]

什么时候特别有用?

  1. 代码重构 — 批量重命名变量/函数
  2. 迁移 — API 变更、依赖更新
  3. 在远程服务器上工作 — 没有 GUI 但需要便捷搜索时
  4. 快速代码探索 — 查找某个函数的所有使用位置

技术内幕

  • 使用 Rust 构建,性能卓越
  • 使用 ratatui.rs 构建 UI
  • 集成 ripgrep 和 ast-grep
  • 支持 5 种配置格式(JSON、JSON5、YAML、TOML、INI)

Serpl 不仅仅是 grep/sed 的替代品,更是为深度使用终端的开发者准备的专业工具。如果你:

  • 热爱 CLI 工具
  • 经常在远程服务器上工作
  • 注重速度和便捷性

那么 Serpl 绝对值得加入你的工具箱。该项目正在积极开发中(GitHub 上 700+ 星),欢迎贡献者。

额外赠送——试试组合使用 Ctrl+o 在所有文件中进行批量替换。节省时间,毋庸置疑!

相关项目