No project system, no extension store, no account. Tabs, search, compare and the tools you reach for when a file is strange, large or not quite text.
- Encodings
- UTF-8, UTF-16, UTF-32 and legacy encodings such as Shift_JIS, EUC-JP, GBK, Big5 and Windows-1252. Bytes you did not edit are saved exactly as they were, even malformed ones.
- Line endings
- LF, CRLF and classic Mac CR are kept when you edit and save, shown in the status bar, and converted on request.
- Find and replace
- Case, whole word, regex and in-selection. Find in Files searches a folder; replace in files shows a preview first, and you untick the files you want to leave alone.
- Compare
- Two files, or a file against its saved version, side by side with word highlights. Unchanged regions fold away; F7 jumps to the next change.
- Hex editor
- Edit bytes in the hex or text column, go to an offset, search for a byte sequence and copy as hex, with undo, in both the desktop app and the terminal.
- Compressed files
- gzip, zstd, bzip2 and xz files open as text and save back in the same format. Kwil decompresses to disk, not into memory.
- Log files
- Follow a growing log, filter by text, regex or level, mark lines, go to a time range and add your own highlight rules.
- Markdown
- Text, preview or split view, with headings, lists, tables, code and local images.
- Sessions
- Quit with unsaved changes and untitled tabs; they come back on the next start. Opening a file while Kwil runs adds a tab to the open window.
- Keymaps
- VS Code, Notepad++ or Vim presets, your own bindings on top, and a command palette that shows every shortcut.
- Formatting
- Built-in formatters for JSON, XML, HTML, YAML, TOML, CSS and SQL, and rustfmt, black or prettier when they are installed.
- Screen readers
- Menus, tabs, palette, dialogs, settings, the status bar and the visible text with caret and selection are exposed to assistive technology.