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.
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.
brew install bed
go install github.com/itchyny/bed/cmd/bed@latest
- Basic byte editing
- Large file support
- Command line interface
- Window splitting
- Partial writing
- Text searching
- Undo and redo
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)
Report bug at Issues・itchyny/bed - GitHub.
itchyny (https://github.com/itchyny)
This software is released under the MIT License, see LICENSE.