Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
itchyny/bed: Binary editor written in Go

itchyny/bed: Binary editor written in Go

6 hours ago

bed

CI Status</a> MIT License</a> release</a> pkg.go.dev</a>

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], [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)

Bug Tracker

Report bugs at Issues - itchyny/bed - GitHub.

Author

itchyny ()

License

This software is released under the MIT License, see LICENSE.
Chat with me