Releases: dd86k/ddhx
0.6
This release focuses on quality of life improvements.
Featured changes include a search command, selection capabilities, and
configuration file support.
Warning
quit has been remapped from Q to Ctrl+Q as a default key, to really confirm quitting as an action (you can still bind it back to Q).
Find Data
What's a hex editor without a search function?
You're now able to search by pattern. A pattern is made up of a prefix and data.
For example, x:00 01 will search for [0x00, 0x01].
It is possible to compound patterns: find o:33 s:hi x:dd 00 will search for
[0x1b, 0x68, 0x69, 0xdd, 0x00].
Syntax: find PATTERN...
Patterns:
x:,0x: 8-bit unsigned hexadecimal.d:: 8-bit unsigned decimal.o:: 8-bit unsigned octal.s:,"...": UTF-8 string.- Quotes have to be escaped (
\"...\") due to prompt processing. - Future update: Transcode to current character set.
- Quotes have to be escaped (
Commands implemented:
find(Ctrl+F),find-back(Ctrl+B)find-backsimply initiates the search backwards, meaning towards start of document.
find-next(Ctrl+N),find-prev(Shift+N)- Allows traversing results forward and backward.
Selecting Data
Selection has to be my new favourite feature for this version.
Using the Shift modifier and navigation keys, it's possible to select data and
perform shortcuts and commands directly with it.
Example flow (skip forward):
- Select bytes, this will be used as a search needle.
- Either hit Ctrl+RightArrow or use command
skip-front.
That's it! The command will automatically detect if there is a selection and
use it.
Commands supporting selection:
move-skip-front,move-skip-back- Selection allows skipping data by this pattern.
- e.g., Selecting [0x01, 0x02, 0x03, 0x04] will skip all of this pattern or to EOF, like a word.
find,find-back- Selection allows searching for this same needle by selected pattern.
- e.g., Selecting [0x01, 0x02, 0x03, 0x04] will search for the same instance.
goto- Selection allows performing an absolute seek to this position.
- e.g., Selecting [0x01, 0x02, 0x03, 0x04] will go to this position (0x04030201 on little systems).
Commands implemented:
select-left(Shift+LeftArrow)select-right(Shift+RightArrow)select-up(Shift+UpArrow)select-down(Shift+DownArrow)select-home(Shift+Home)select-end(Shift+End)
Bind Key
Prefer your current code editor keybinds?
The bind command allows you to dynamically rebind keys.
Example of binding keys to match vim navigation keys:
bind h leftbind j downbind k upbind l right
It's also possible to map new default parameters:
bind shift+p goto +32will map Shift+P togoto +32(jump 32 bytes ahead).
Keys set within a session are only valid for the session.
The unbind command either unbinds the key or resets it to its default keymap.
Syntax:
bind KEY COMMAND [PARAMETERS...]unbind KEYreset-keys
Config File
If you want EBCDIC by default, you can!
Configuration files are now supported.
It's now possible to set default configuration values and remap keys.
Example format:
# Comments uses '#'
# For "address", "d", "dec", and "decimal" are all valid!
address decimal
columns 10
# Imitate vim navigation
bind h left
bind j down
bind k up
bind l right
# Add command parameters to command!
bind ctrl+p goto +32
# Older quit behavior
bind q quit
# Imitate nano
bind ctrl+x quit
bind ctrl+g find-next
Here are example paths that will be tried, in order. Only the first config path
found is loaded. Command-line parameters still take priority.
Windows:
%LOCALAPPDATA%\ddhx\.ddhxrc- e.g.,
C:\Users\dd\AppData\Local\ddhx\.ddhxrc
- e.g.,
%USERPROFILE%\.ddhxrc- e.g.,
C:\Users\dd\.ddhxrc
- e.g.,
POSIX:
$XDG_HOME_CONFIG/ddhx/.ddhxrc- e.g.,
/home/dd/.config/ddhx/.ddhxrc
- e.g.,
~/.ddhxrc- e.g.,
/home/dd/.ddhxrc
- e.g.,
To avoid loading configs, use -I or --norc.
To use a specific config file, use -f or --rcfile with a specified file.
Changelog
- Added: Config file support.
- Added:
select-right(Shift+RightArrow),select-left(Shift+LeftArrow),select-up(Shift+UpArrow),select-down(Shift+DownArrow),select-home(Shift+Home),select+end(Shift+End) selection commands. - Added:
find(Ctrl+F),find-back(Ctrl+B),find-next(Ctrl+N),find-prev(Shift+N) search commands. - Added:
bindcommand. - Added:
unbindcommand. - Added:
reset-keyscommand. - Added:
autoresizeconfiguration. - Improved: VT220 input scanning, and other general improvements to terminal handling.
- Improved: Command prompt handles embedded quote escapes.
- Removed: "start" and "end" aliases for
goto, since we havetop(Ctrl+Home) andbottom(Ctrl+End) commands.
0.5.1
This release fixes cursor-skip-front and cursor-skip-back. No idea how I did not notice that while testing.
Changelog since 0.5:
- Added:
--help-commands,--help-configs, and--help-debug. - Changed
--addressto--addressingand-A.--addressing=oand--addressing=octalmeans the same thing.-Aoand-Aoctalmeans the same thing.
- Fixed:
cursor-skip-back(Ctrl+LeftArrow) andcursor-skip-front(Ctrl+RightArrow).
0.5
And it's official, the 0.5 version release.
This release is a focus on getting basic stuff working (byte overwrite and append operations) with an emphasis on navigation.
Not all features from older releases made it back (e.g., searching). It will eventually.
Code is somewhat horrible and should work reliably at the moment to edit existing and new files.
Changelog from 0.5.0-rc.1:
- Added:
--help-keysas a help page for default shortcuts. - Fixed: View camera not adjusting to the very last line to EOF.
- Fixed: Skip bytes forward/backward not going its search buffer.
- Other various unimportant tweaks, like how edit chunks are aligned by page size.
Notes:
- The linux-static released was built on Alpine 3.20.
- It was tested successfully on Ubuntu 20.04 and Ubuntu 24.04.
- A thankful person validated that 0.5.0-rc.1 works on macOS.
0.5 Release Candidate 1
Considered mostly stable and ready to be used for light editing.
Changelog since v0.5.0-beta.1:
- Added: "report-name" (Ctrl+N) to report the name of the document on-screen (or "(new buffer)" if unnamed).
- Added: "autosize" (Alt+R) to automatically adjust the number of columns according to screen size.
- Fixed: Inconsistent behaviour across C runtimes (affects static builds primarily).
Notes:
- Linux static version compiled against Alpine 3.20 (Musl 1.2.5) using GDC 13.2.1.
0.5 Beta 1
Changelog:
- Added: "refresh" (Ctrl+L) command.
- Added: "view-up" (Ctrl+UpArrow) and "view-down" (Ctrl+DownArrow) to move the view, not the cursor.
- Added: Navigation by percentage. "goto" now accepts %n arguments where n is a number between 0 and 100.
- "goto %50" will move the cursor halfway through the document.
- Fixed: Rendering when base document overlapped chunk ahead.
- Fixed: "cursor-skip-back" when cursor is at end of buffer.
0.5 Alpha 3
Changelog:
- Added: "cursor-skip-back" (Ctrl+LeftArrow) and "cursor-skip-front" (Ctrl+RightArrow) to skip same bytes.
- Added: "save-as" (Ctrl+O) to save as another name.
- Added: "report-position" (Ctrl+P) to report the position of the cursor in the buffer.
- Added:
--address-spacingCLI option to set left address column spacing, in characters. - Added:
--chunksizefor debugging purposes. - Added: Support for stdin. Data can be piped to the application.
- Fixed: Saving without edits.
- Fixed: Performance when jumping across gigabytes.
No builds because I'm lazy.
0.5 Alpha 2
Changelog since alpha.1:
- Added: "goto" command with shortcut ^G (Ctrl+G).
- Added: "set" command. Sets session and rc settings.
- Separated from command prompt to set clearer intent.
- Fixed: Android (Bionic) compilation.
- Remapped command prompt key to Enter.
- Undo/redo properly moves cursor to edit location. (As observed in vscodium, for example)
- Added build info in version page.
Commands can now prompt for a parameter if it wasn't provided to it via the command prompt.
Notes:
- ddhx-0.5.0-alpha.1-glibc-amd64.tar.xz was built against Ubuntu 20.04 (Glibc 2.31) as I couldn't get static builds going.
- ddhx-0.5.0-alpha.1-musl-amd64.tar.gz was build against Alpine 3.20 (Musl 1.2.5). Same as above.
0.5 Alpha 1
First test release of ddhx 0.5.
Rewritten from scratch (too many times) to support editing. Currently, it only supports overwriting empty buffers and from existing files. One element at a time, with undo/redo.
Notes:
ddhx-0.5.0-alpha.1-glibc-amd64.tar.xzwas built against Ubuntu 24.04 (Glibc 2.39) as I couldn't get static builds going.ddhx-0.5.0-alpha.1-musl-amd64.tar.gzwas build against Alpine 3.20 (Musl 1.2.5). Same as above.
0.4.2
EDIT: Version 0.5 is planned to make ddhx a hex editor with a new engine. 0.4.2 is still just a viewer, it cannot edit data.
It's usable, I swear.
Changelog
- Improved: Small tweak in the statusbar to be a little more readable.
- Improved: IEC/SI inconsistencies, introduced
--si. - Fixed: Where the terminal module would unconditionally reset itself on exit, impacting
--dump. - Fixed: Input system would mess up under Linux, particularly for the menu using
--stdin. - Fixed: Where
--dumpwould output greater numbers than one specified with--length. - Fixed: Where
--dumpkept resetting the position numbers on its left.