Bine - A terminal binary editor
( English / Japanese )

Key Features
-
Fast startup with asynchronous loading The viewer launches instantly and loads data in the background, allowing immediate interaction even with large files.
-
Supports both files and standard input
binecan read binary data not only from files but also from standard input, making it easy to use in pipelines. -
Vi-style navigation Navigation keys follow the familiar
vikeybindings (h,j,k,l, etc.), allowing smooth movement for experienced users.
(Note: File name input uses Emacs-style key bindings.) -
Split-view with hex and character representations The screen is divided approximately 2:1 between hexadecimal and character views. Supported encodings include UTF-8, UTF-16 (LE/BE), and the current Windows code page. You can switch encoding on the fly with key commands.
-
Smart decoding with character annotations Multi-byte characters are visually grouped based on byte structure. Special code points such as BOMs and control characters (e.g., newlines) are annotated with readable names or symbols, making it easier to understand mixed binary/text content and debug encoding issues.
-
Minimal screen usage
bineonly uses as many terminal lines as needed (1 line = 16 bytes), without occupying the full screen. This makes it easy to inspect or edit small binary data while still seeing the surrounding terminal output. -
Cross-platform Written in Go,
bineruns on both Windows and Linux. It should also build and work on other Unix-like systems.
Install
Manual installation
Download the binary package from Releases and extract the executable.
Use eget installer (cross-platform)
brew install eget # Unix-like systems
# or
scoop install eget # Windows
cd (YOUR-BIN-DIRECTORY)
eget hymkor/bine
Use scoop-installer (Windows only)
scoop install https://raw.githubusercontent.com/hymkor/bine/master/bine.json
or
scoop bucket add hymkor https://github.com/hymkor/scoop-bucket
scoop install bine
Use "go install" (requires Go toolchain)
go install github.com/hymkor/bine/cmd/bine@latest
Note: go install places the executable in $HOME/go/bin or $GOPATH/bin, so you need to add this directory to your $PATH to run bine.
Usage
$ bine [FILES...]
or
$ cat FILE | bine
Key-binding
Cursor Movement
h,BACKSPACE,ARROW-LEFT,Ctrl-B
Move the cursor leftj,ARROW-DOWN,Ctrl-N
Move the cursor downk,ARROW-UP,Ctrl-P
Move the cursor upl,SPACE,ARROW-RIGHT,Ctrl-F
Move the cursor right0(zero),^,Ctrl-A
Move the cursor to the beginning of the current line (0is available in command mode only; see below)$,Ctrl-E
Move the cursor to the end of the current line<
Move the cursor to the beginning of the file>,G
Move the cursor to the end of the file (as far as data has been loaded at that point)&
Jump to a specified address
Editing
r
Edit the byte under the cursor (the current value is shown at the bottom of the screen; enter a new value via readline)i
Insert data to the left of the cursor (e.g.,0xFF,U+0000,"string")a(command mode only)
Insert data to the right of the cursor (e.g.,0xFF,U+0000,"string")I
Insert0x00to the left of the cursorA
Insert0x00to the right of the cursorx,DEL
Delete the byte under the cursor and save it to the internal bufferp
Insert the byte from the internal buffer to the right of the cursorP
Insert the byte from the internal buffer to the left of the cursorR
Toggle direct edit mode. In this mode, pressing0–9ora–fdirectly overwrites the high nibble and then the low nibble of the byte under the cursor. PressRagain to return to command mode.
Display
Meta-U
Change the character encoding to UTF-8 (default)Meta-A
Change the character encoding to ANSI (the current Windows code page)Meta-L
Change the character encoding to UTF-16LEMeta-B
Change the character encoding to UTF-16BE
Meta- means either pressing Alt together with the key, or pressing Esc followed by the key.
Miscellaneous
u
Undo the last change. Press repeatedly to undo further changes in sequence.w
Save changes to fileq
Quit. If there are unsaved changes, you will be prompted to save before exiting.
Changelog
Contributing
- Bug reports and improvement suggestions are welcome. You may write them in either English or Japanese.
- Please write comments in the code and commit messages in English.
- If a
developbranch exists at the time of your pull request, please target it. Otherwise,masteris fine. - Test code and documentation updates that accompany code changes are appreciated, but not required. They can be added later if necessary.