hjkl-0.4.0 is not a library.
hjkl
Vim-modal terminal editor. Standalone TUI built on the hjkl engine.
Native vim-modal editor. Single static binary, no plugins, no config files. Built on the hjkl-engine + rope buffer.
Status
0.4.0 — multi-buffer editing, fuzzy file/buffer/grep pickers with
syntax-highlighted preview, tree-sitter highlighting + comment-marker overlay,
smart indent, .editorconfig, softtabstop, and clipboard via our in-house
hjkl-clipboard (sync + async, OSC
52 SSH fallback). See SCOPE.md for the full feature roadmap.
Install
Or grab a pre-built binary from the releases page.
Usage
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;
REC@rbadge while recording a macro; pending count + operator; search count[n/m] - Cursor-line background (subtle blue-grey; suppressed during
://prompts) :wsave,:qquit,:wq/:xwrite-quit,:eopen file:setoptions,:%ssearch-and-replace with confirmation prompt:!cmdshell exec,:r !cmd/:r fileread-into-buffer:reg,:marks,:jumps,:changes— output shown as a centered info popup//?incremental search with match highlighting- Undo / redo, marks, registers (shared across buffer slots)
- Terminal resize handled mid-frame
- Read-only guard (
-Rflag + engine-level mutation block) - Jump to line (
+N) and search-on-open (+/pattern) - Multi-buffer: open many files (
hjkl a.rs b.rs c.rs); tab line at top when more than one buffer is open; switch with:bn/:bp/:bd[!]/:bfirst/:blast/:b N/:b name/:ls/:buffers; alt buffer (Ctrl-^/:b#); cycle withShift-H/Shift-Landgt/gT/]b/[b; bulk save/quit with:wa/:qa[!]/:wqa[!]; helix-style:qcloses the active slot when more than one buffer is open - Fuzzy file picker (
<Space><Space>/<Space>f/:picker/hjkl +picker) with syntax-highlighted preview - Buffer picker (
<Space>b/:bpicker) - Grep picker (
<Space>//:rg <pattern>) — ripgrep-backed content search with grep / findstr fallback; preview jumps to and highlights the match line - Tree-sitter syntax highlighting (Rust, Markdown, JSON, TOML, SQL bundled)
- Comment marker overlay —
TODO/FIXME/FIX/NOTE/INFO/WARNmarkers highlighted; consecutive single-line comments inherit the marker - Smart indent — Enter /
o/Oauto-indent after{/(/[; close brace on a new line auto-dedents .editorconfigsupport —indent_style,indent_size,tab_width, andmax_line_lengthapplied on file open- Tab settings:
tabstop,softtabstop,expandtab(defaults: 4-space soft tabs); tabs render as visually aligned spaces; Backspace deletes a soft tab as a unit;:set tabstop=Nupdates rendering end-to-end - Per-buffer git diff signs (
+/~/_in the gutter) and tree-sitter diagnostic signs
What's deferred
- Splits / multiple windows
- Plugins / config files
- LSP
Related crates
hjkl-buffer— rope-based bufferhjkl-engine— modal-editing FSMhjkl-editor— ex commands, search, shell exechjkl-tree-sitter— bundled tree-sitter grammars + Neovim-flavoured highlight themeshjkl-clipboard— system clipboard adapterhjkl-form— single-line form input built on the engine (used by pickers,://prompts)hjkl-picker— fuzzy picker subsystem (Picker,PickerLogic,FileSource,RgSource, scorer)hjkl-ratatui— ratatui rendering adapters + shared spinner
See docs.rs/hjkl-engine for the engine trait reference.
Links
- Website: https://hjkl.kryptic.sh
- Repository: https://github.com/kryptic-sh/hjkl
License
MIT. See LICENSE.