Skip to content

itchyny/bed

Repository files navigation

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.