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 from the sidebar
- Syntax highlighting — auto-detected from the file
- 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
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 |
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
}
}
| 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 |
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
- Enter handling — auto-indent to match the current line on newline
- Custom command palette — replace the default Textual palette with a bespoke one
- Search within file —
Ctrl+F(maybe) - Markdown viewer — two modes: render and edit
License
MIT License.
Repo: github.com/levk-m/kiss
Release files for kiss-editor 0.2.0
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.2.0.tar.gz | 8.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kiss_editor-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.2 kB
Release files / kiss_editor-0.2.0.tar.gz
| Download URL | kiss_editor-0.2.0.tar.gz |
|---|---|
| Size | 8.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
88004133f3df554bb25e2574df8eeacc50c7921174e84ab25a03540074a35cf6
|
|
BLAKE2b-256 checksum How to use checksums |
af9642da14c70baccd29615283bddc2df503b69f7d0d935b800addd808e57e38
|
| 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.2.0-py3-none-any.whl
| Download URL | kiss_editor-0.2.0-py3-none-any.whl |
|---|---|
| Size | 11.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2aa167b82db923fe7e0a8f1725878dc15d21e27766795011141c0e37f999dacb
|
|
BLAKE2b-256 checksum How to use checksums |
7bd022e6437e5eb89d4e10e58a959364be5866b4ff8a72c2e13f5df2ff62f100
|
| 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}
|