#replace #regex #patch #find #expression #search #text-processing

应用 repatch

一个具有类似 git add --patch 接口的正则表达式查找和替换工具

2 个版本

0.1.1 2024 年 6 月 23 日
0.1.0 2024 年 2 月 4 日

#177文件系统

Download history 56/week @ 2024-06-17 71/week @ 2024-06-24 2/week @ 2024-07-01

每月 68 次下载

MIT 许可证

145KB
1K SLoC

re:patch

Latest Version

re:patch 是一个面向行的查找和替换工具,具有类似 git add --patch 的界面。支持正则表达式和捕获组,re:patch 可以用于文件和目录。目前支持 Linux 和 MacOS(基于合理努力的 MacOS)。

[!警告]
此工具仍在开发中。虽然它对我有用™,但它还没有很多测试。建议只在受版本控制的目录中使用。

安装

您可以从源代码或通过 crates.io 进行安装。您必须安装最新的 rust/cargo 工具链。

# install the latest release from crates.io
cargo install repatch

# install the latest development version
git clone https://github.com/stevenengler/repatch.git
cargo install --path repatch

示例

Command-line usage example.

注意

ripgrep 类似,gitignore 规则被尊重,隐藏的文件/目录被忽略。

用于编辑补丁的编辑器可以通过环境变量或 git 配置进行配置。搜索优先级为 VISUALEDITORGIT_EDITORgit config core.editor。否则使用 vim。与 sudo -e 类似,编辑器值由空白字符分割并执行,不会被 shell 解释。

终端中显示的补丁将替换 ANSI 转义序列为安全版本。

像大多数文本编辑器一样,文件是替换而不是原地编辑。这意味着文件所有者或其他元数据可能在编辑后更改。新文件将具有与原始文件相同的读/写/执行权限。您还需要足够的临时磁盘空间来存储第二个文件。例如,如果您正在编辑一个10 GB的文件,您必须至少有10 GB的空闲磁盘空间,以便在删除原始文件之前写入新文件。

只要文件行数足够多,就支持大文件(大于可用内存)。例如,一个10 GB的文件有10,000行应该可以正常工作,但一个10 GB的文件只有一行可能会耗尽系统内存,并且终端中看起来可能不太美观。

致谢

大部分繁重的工作是由ripgrep系列crate、clapdiffy完成的。

依赖项

约10–21MB
约368K SLoC