Bed
Binary editor written in Go
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. The project is written primarily in Go, distributed under the MIT License license, first published in 2018. It has gained significant community traction with 1,348 stars and 51 forks on GitHub. Key topics include: binary, golang, hex-editor.
bed
Binary editor written in Go
Screenshot

Motivation
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
shbrew install bed
Build from source
bashgo 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],<C-w>[nohjkltbpHJKL]
- Cursor motions
h,j,k,l,w,b,^,0,$,
<C-[fb]>,<C-[du]>,<C-[ey]>,<C-[np]>,
G,gg,:{count},:{count}goto,:{count}%,
H,M,L,zt,zz,z.,zb,z-,
<TAB>(toggle focus between hex and text views)
- Mode operations
i,I,a,A,v,r,R,<ESC>
- 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),<C-a>(increment),<C-x>(decrement)
- Undo and redo
:undo,u,:redo,<C-r>
- Search
/,?,n,N,<C-c>(abort)
Bug Tracker
Report bug at Issues・itchyny/bed - GitHub.
Author
itchyny (https://github.com/itchyny)
License
This software is released under the MIT License, see LICENSE.
Contributors
Showing top 6 contributors by commit count.
