KISS — keep it simple, stupid.
A small terminal editor built with Textual. It opens files and folders, with syntax highlighting, a file tree and undo/redo. Just an editor — no LSP, no plugins, no ambitions to become an IDE.
About & status
KISS is early-stage software. It's not a replacement for nano or vim — just a small editor that tries to stay simple and useful. It's for learning, and for the moments where a tiny no-nonsense editor is enough. Some things are still missing (see TODO).
Install
for unix systems:
curl -fsSL https://raw.githubusercontent.com/levk-m/kiss/main/install.sh | bash
via package managers:
[uv tool / pipx] install kiss-editor
or from source (requires Python 3.12+ and uv):
git clone https://github.com/levk-m/kiss.git
cd kiss
uv sync
uv run kiss
Or run directly without cloning:
uvx kiss-editor
Usage
kiss <file> Edit a file
kiss <dir> Browse a directory
kiss . Open current directory
Features
The usual editor essentials are here — undo/redo, clipboard, line numbers, word wrap, cursor line highlight. On top of that KISS adds:
- File tree — browse and open files with custom icons per file type
- Syntax highlighting — auto-detected from the file
- Go to line (
Ctrl+G) — enter a number, jump straight there - Command palette (
Ctrl+P) — fuzzy-find files, switch themes - Image viewer — open images directly in the terminal (requires Kitty, Sixel or iTerm support)
- Config —
~/.kiss_conf.json, open withCtrl+O - Help dialog —
Ctrl+H - Splash screen — ASCII logo on startup
- Update check — notifies when a newer version is available on exit
- Enter handling — auto-indent to match the current line on newline
Keybindings
Navigation
| Key | Action |
|---|---|
| Arrows | Move cursor |
Home / Ctrl+A |
Go to line start |
End / Ctrl+E |
Go to line end |
PgUp / Ctrl+PgUp |
Page up |
PgDn / Ctrl+PgDn |
Page down |
Ctrl+Left / Ctrl+Right |
Page left / right |
Alt+Left |
Word start |
Alt+Right |
Word end |
Ctrl+G |
Go to line |
Selection
| Key | Action |
|---|---|
Shift+Arrows |
Select character / line |
Shift+Home |
Select to line start |
Shift+End |
Select to line end |
Shift+PgUp / Shift+PgDn |
Select page up / down |
F6 |
Select current line |
F7 |
Select all |
Editing
| Key | Action |
|---|---|
Backspace / Ctrl+Backspace |
Delete char before cursor |
Delete / Ctrl+D |
Delete char under cursor |
Alt+Del |
Delete to start of word |
Ctrl+U |
Delete to line start |
Ctrl+K |
Delete to line end |
Ctrl+Left / Ctrl+Right |
Decrease / increase indent |
Ctrl+X / Super+X |
Cut |
Ctrl+C / Super+C |
Copy |
Ctrl+V |
Paste |
Ctrl+Z |
Undo |
Ctrl+Y |
Redo |
Interface
| Key | Action |
|---|---|
Tab / Shift+Tab |
Focus next / previous element |
Ctrl+S |
Save |
Ctrl+P |
Command palette (files, themes) |
Ctrl+H |
Help dialog |
Ctrl+O |
Open config (~/.kiss_conf.json) |
Ctrl+Q |
Quit |
Configuration
JSON config file at ~/.kiss_conf.json. Open it with Ctrl+O — changes take effect after restart.
A copyable example lives at examples/kiss_conf.json.
{
"kiss": {
"theme": "tokyo-night",
"editor-theme": "dracula",
"show_line_numbers": true,
"soft_wrap": true,
"highlight_cursor_line": false,
"start-screen": false,
"indent-size": 4,
"auto-close-pairs": true
}
}
| Key | Default | Description |
|---|---|---|
kiss.theme |
"tokyo-night" |
Application theme |
kiss.editor-theme |
"css" |
Syntax highlighting colors |
kiss.show_line_numbers |
true |
Show line numbers |
kiss.soft_wrap |
true |
Soft-wrap long lines |
kiss.highlight_cursor_line |
false |
Highlight current line |
kiss.start-screen |
false |
Show splash screen on startup |
kiss.indent-size |
4 |
Auto-indent width; 0 disables |
auto-close-pairs |
true |
Auto-close ({[ and '" |
Application themes
textual-dark, textual-light, nord, gruvbox, catppuccin-mocha,
catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, dracula,
tokyo-night, monokai, flexoki, solarized-light, solarized-dark,
rose-pine, rose-pine-moon, rose-pine-dawn, atom-one-dark,
atom-one-light, ansi-dark, ansi-light
Editor themes
css, monokai, dracula, vscode_dark, github_light
css is the default editor theme. It has no fixed background — it adapts to
the current application theme's palette, so the editor blends with the app UI.
TODO
- Markdown viewer — two modes: render and edit
- Create and save new files
License
MIT License.
Repo: github.com/levk-m/kiss
Release files for kiss-editor 0.3.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kiss_editor-0.3.4.tar.gz | 10.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kiss_editor-0.3.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.9 kB
Release files / kiss_editor-0.3.4.tar.gz
| Download URL | kiss_editor-0.3.4.tar.gz |
|---|---|
| Size | 10.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4aef873c0399e2d1df481270d9e64f04786f19490fa122361a4b17be5580eb9e
|
|
BLAKE2b-256 checksum How to use checksums |
492e2883d50c37cf5dc16482581957ce995b2ca4962344835362c86c32bcd228
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / kiss_editor-0.3.4-py3-none-any.whl
| Download URL | kiss_editor-0.3.4-py3-none-any.whl |
|---|---|
| Size | 14.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5fb20c992703130b8b482243cbe68c67f4a598fd77d40209424ff74e0af1b167
|
|
BLAKE2b-256 checksum How to use checksums |
e92676aeba1e0ea4c682b1b8bf2039924d63a6b819807ccf41cc32877144da5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|