itchyny/bed

Binary editor written in Go

Go

1,344

915 commits

updated Dec 1, 2024

See the code

README

bed

CI Status Go Report Card MIT License release pkg.go.dev

Binary editor written in Go

Screenshot

bed command 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

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], <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.

binary
golang
hex-editor

Significant stargazers

TJ

52,081 followers · starred Apr 2018

Toru Nagashima

1,165 followers · starred Apr 2018

Florian Lehner

176 followers · starred Apr 2018

Peter Waller

260 followers · starred Feb 2020

itchyny/bed

Binary editor written in Go

Go

1,344

915 commits

updated Dec 1, 2024

See the code

README

bed

CI Status Go Report Card MIT License release pkg.go.dev

Binary editor written in Go

Screenshot

bed command 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

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], <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.

binary
golang
hex-editor

Significant stargazers

TJ

52,081 followers · starred Apr 2018

Toru Nagashima

1,165 followers · starred Apr 2018

Florian Lehner

176 followers · starred Apr 2018

Peter Waller

260 followers · starred Feb 2020

Languages

Go

99.5%