#hex-editor #tui #cross-platform #ascii #data #ui #modifying

bin+lib heh

一个用于修改文件十六进制或ASCII数据的跨平台终端UI

10个版本 (5个破坏性更新)

新版本 0.6.1 2024年8月20日
0.6.0 2024年7月31日
0.5.0 2024年4月8日
0.4.1 2023年7月31日
0.1.1 2022年8月8日

33文本编辑器

Download history 12/week @ 2024-05-17 7/week @ 2024-05-24 5/week @ 2024-05-31 6/week @ 2024-06-07 3/week @ 2024-06-14 4/week @ 2024-06-21 3/week @ 2024-06-28 3/week @ 2024-07-05 143/week @ 2024-07-26 64/week @ 2024-08-02 12/week @ 2024-08-09 163/week @ 2024-08-16

每月382次 下载

MIT 许可证

150KB
2.5K SLoC

heh

Crates.io Codecov Dependency status

HEx Helper 是一个跨平台终端 十六进制编辑器,用于修改文件的十六进制或ASCII数据。它旨在复制 hexyl 的一些外观,同时功能上类似于 GHex 的终端UI版本。

[!警告] heh 目前处于 alpha 阶段 - 它尚未准备好用于任何生产方式。它缺少各种生活质量特性,并且在崩溃或被终止时不会存储备份。

screenshot of heh

安装和用法

heh 通过 cargo 提供

cargo install heh

heh --help

...
Terminal UI Commands:
    ALT=                Increase the stream length by 1
    ALT-                Decrease the stream length by 1
    CNTRLs              Save
    CNTRLq              Quit
    CNTRLj              Jump to Byte
    CNTRLe              Change endianness
    CNTRLd              Page Down
    CNTRLu              Page Up
    CNTRLf or /         Search
    CNTRLn or Enter     Next Search Match
    CNTRLp              Prev Search Match

Left-clicking on a label will copy the contents to the clipboard.
Left-clicking on the ASCII or hex table will focus it.

Zooming in and out will change the size of the components.

USAGE:
    heh <FILE>

ARGS:
    <FILE>
            

OPTIONS:
    -h, --help
            Print help information

    -V, --version
            Print version information

发行版软件包

软件包状态

Packaging status

如果您的发行版已打包 heh,您可以使用该软件包进行安装。

Arch Linux

您可以使用 pacmanextra 仓库 安装

pacman -S heh

Alpine Linux

heh 可在 Alpine Edge 上使用。在启用 测试仓库 之后,可以通过 apk 安装。

apk add heh

作为 Ratatui 小部件使用

heh 可作为库嵌入到使用 Ratatuicrossterm 的其他 TUI 应用程序中。

Cargo.toml 中添加 heh

[dependencies]
ratatui = "0.24"
crossterm = "0.27"
heh = "0.4"

创建应用程序

use heh::app::Application as Heh;
use heh::decoder::Encoding;

let file = std::fs::OpenOptions::new().read(true).write(true).open(path).unwrap();
let heh = Heh::new(file, Encoding::Ascii, 0).unwrap();

然后您可以按如下方式渲染一个框架

terminal.draw(|frame| {
    heh.render_frame(frame, frame.size());
});

处理按键事件

heh.handle_input(&ratatui::crossterm::event::Event::Key(/* */)).unwrap();

请参阅 binsider 项目以获取示例用法。

贡献

请参阅 CONTRIBUTING.md

依赖关系

~8–23MB
~286K SLoC