bed
Binary editor written in Go
Screenshot
!bed command screenshotMotivation
I wanted to create a binary editor with Vim-like user interface, which runs in terminals, fast, and is portable. I have always been interested in various binary formats and I wanted to create my own editor to handle them. I also wanted to learn how a binary editor can handle large files and allow users to edit them interactively.While creating this binary editor, I leaned a lot about programming in Go language. I spent a lot of time writing the core logic of buffer implementation of the editor. It was a great learning experience for me and a lot of fun.
Installation
Homebrew
brew install bed
Build from source
go install github.com/itchyny/bed/cmd/bed@latest
Features
- Basic byte editing
- Large file support
- Command line interface
- Window splitting
- Partial writing
- Text searching
- Undo and redo
Commands and keyboard shortcuts
This binary editor is influenced by the Vim editor.- File operations
:edit, :enew, :new, :vnew, :only
- Current working directory
:cd, :chdir, :pwd
- Quit and save
:quit, ZQ, :qall, :write,
:wq, ZZ, :xit, :xall, :cquit
- Window operations
:wincmd [nohjkltbpHJKL], [nohjkltbpHJKL]
- Cursor motions
h, j, k, l, w, b, ^, 0, $,
, , , ,
G, gg, :{count}, :{count}goto, :{count}%,
H, M, L, zt, zz, z., zb, z-,
(toggle focus between hex and text views)
- Mode operations
i, I, a, A, v, r, R,
- Inspect and edit
gb (binary), gd (decimal), x (delete), X (delete backward),
d (delete selection), y (copy selection), p, P (paste),
< (left shift), > (right shift), (increment), (decrement)
- Undo and redo
:undo, u, :redo,
- Search
/, ?, n, N, (abort)