# hjkl
Vim-modal terminal editor. Standalone TUI built on the hjkl engine.
[](https://github.com/kryptic-sh/hjkl/actions/workflows/ci.yml)
[](https://crates.io/crates/hjkl)
[](../../LICENSE)
[](https://hjkl.kryptic.sh)
Native vim-modal editor. Single static binary, no plugins, no config files.
Built on the [hjkl-engine](https://crates.io/crates/hjkl-engine) + rope buffer.
## Install
```bash
cargo install hjkl
```
Or grab a pre-built binary from the
[releases page](https://github.com/kryptic-sh/hjkl/releases).
## Usage
```bash
hjkl # empty buffer
hjkl file.txt # open file
hjkl -R file.txt # read-only
hjkl +42 file.txt # jump to line 42
hjkl +/foo file.txt # search for "foo" on open
```
## What works (v0)
- Normal / Insert / Visual / Command modes with full mode-indicator cursor shape
- All standard motions, operators, and text objects (free from the engine FSM)
- Status line: filename, mode, cursor position, dirty marker
- `:w` save, `:q` quit, `:wq` / `:x` write-quit, `:e` open file
- `:set` options, `:%s` search-and-replace with confirmation prompt
- `:!cmd` shell exec, `:r !cmd` / `:r file` read-into-buffer
- `/` / `?` incremental search with match highlighting
- Undo / redo, marks, registers
- Terminal resize handled mid-frame
- Read-only guard (`-R` flag + engine-level mutation block)
- Jump to line (`+N`) and search-on-open (`+/pattern`)
## What's deferred
- Splits / tabs / multiple buffers
- Syntax highlighting
- Plugins / config files
- LSP
## Related crates
- [`hjkl-buffer`](https://crates.io/crates/hjkl-buffer) — rope-based buffer
- [`hjkl-engine`](https://crates.io/crates/hjkl-engine) — modal-editing FSM
- [`hjkl-editor`](https://crates.io/crates/hjkl-editor) — ex commands, search,
shell exec
- [`hjkl-ratatui`](https://crates.io/crates/hjkl-ratatui) — ratatui rendering
adapters
See [SPEC.md](../../crates/hjkl-engine/SPEC.md) for the frozen 0.1.0 trait
surface.
## Links
- Website: <https://hjkl.kryptic.sh>
- Repository: <https://github.com/kryptic-sh/hjkl>
## License
MIT.