# bed [![CI Status](https://b612.me/apps/b612/bed/actions/workflows/ci.yaml/badge.svg?branch=main)](https://b612.me/apps/b612/bed/actions?query=branch:main) [![Go Report Card](https://goreportcard.com/badge/b612.me/apps/b612/bed)](https://goreportcard.com/report/b612.me/apps/b612/bed) [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://b612.me/apps/b612/bed/blob/main/LICENSE) [![release](https://img.shields.io/github/release/itchyny/bed/all.svg)](https://b612.me/apps/b612/bed/releases) [![pkg.go.dev](https://pkg.go.dev/badge/b612.me/apps/b612/bed)](https://pkg.go.dev/b612.me/apps/b612/bed) Binary editor written in Go ## Screenshot ![bed command screenshot](https://user-images.githubusercontent.com/375258/38499347-2f71306c-3c42-11e8-926e-1782b0bc73f3.png) ## 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 ```sh brew install bed ``` ### Build from source ```bash go install b612.me/apps/b612/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 bug at [Issues・itchyny/bed - GitHub](https://b612.me/apps/b612/bed/issues). ## Author itchyny () ## License This software is released under the MIT License, see LICENSE.