Skip to main content

textli

A lightweight text editor with focused writing and reading in mind.

textli is a full-window, distraction-free Markdown editor: one warm paper-toned column of text, vim keybindings, and nothing else on screen. ⌘R flips the source into a rendered reading view made for proof-reading and review — navigate with vim motions, leave inline comments, and propose suggestions (track changes) that the author accepts or rejects with a keystroke. Notes about code stay connected to it: a reference like textli/editor.py:2455 is followable — opens the file read-only at that line, gb comes back — so a design doc reads with its evidence one keystroke away. All annotations are stored inline as CriticMarkup, so they travel with the file and diff cleanly in git — no sidecar files. Pandoc-style TeX math$…$ inline, $$…$$ display — renders as typeset formulas in the reading view, so scientific notes read like the paper they'll become (and convert to one via pandoc, untouched).

textli started life as the editor inside grafli, the keyboard-driven diagram tool, and is now its own package — usable standalone or embeddable in any PySide6 application.

Install

uv tool install textli-editor   # or: pipx / pip install textli-editor

The package publishes as textli-editor (plain textli is too close to an existing PyPI name), but everywhere else it's just textli: the command is textli, the import is import textli.

Use

textli notes.md                     # open (created on first save)
textli notes.md#design-decisions    # jump straight to a heading
textli -r review.md                 # start in the reading view

The editor opens ready to type (vim NORMAL mode) and autosaves while you work, and every file resumes where you left it — view mode, caret and scroll included. It also watches the open file, so edits made outside textli (an agent applying your comments, a git checkout) reload in place without a restart. A faint whisper status in the card's corner keeps you oriented — mode, word count, and session delta while writing; the section you're in, progress, minutes left, and open review items while reading. Press F1 inside the editor for the complete key reference, or see the documentation.

The short version

Key Action
⌘R Toggle write ↔ reading view
Esc Save & close (⇧Esc cancels)
⌘↵ Full-window width
⌘. Section focus (dim all but the current paragraph / section)
f Focus reading mode — caret-locked centre line + gradient spotlight (reading view)
⌘T Typewriter scrolling (the caret line stays put; persists)
⌘⇧P Paper surface — grain & light on the page; off = flat (persists)
c / s Comment / suggest a change on the selection — text or a formula (reading view)
a / x Accept / reject the suggestion under the caret
go Open another file — fuzzy history + per-segment path completion
Follow the link under the caret — .md opens in place, web in the browser, #heading jumps (reading view)
Follow the source reference under the caret — `editor.py:42` opens the file read-only at that line (reading view)
gb / Back to the document the last link was followed from (reading view)
gl Links overview — jump-list of every link (reading view)
/ Fuzzy in-document search (n/N next/previous hit; to replace)
F1 Full help

Embed

from textli import ZenMarkdownEditor, InlineVimEditor

ZenMarkdownEditor is the full-window editor (parent it into any widget); InlineVimEditor is a small vim-capable QPlainTextEdit for editing a single piece of text in place. See the embedding guide.

Develop

uv venv && uv pip install -e '.[dev]'
QT_QPA_PLATFORM=offscreen .venv/bin/pytest -q

License

MIT — see LICENSE. Bundled fonts — JetBrains Mono, Caveat and Literata — are licensed under the SIL Open Font License (JetBrains Mono, Caveat, Literata).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

textli_editor-0.4.0.tar.gz (3.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

textli_editor-0.4.0-py3-none-any.whl (3.1 MB view details)

Uploaded Python 3

File details

Details for the file textli_editor-0.4.0.tar.gz.

File metadata

  • Download URL: textli_editor-0.4.0.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for textli_editor-0.4.0.tar.gz
Algorithm Hash digest
SHA256 2905309e37191df15dcbe0434520097b9a68ece17c526ba2134c2f0338e0b897
MD5 54ea835d045fc1858f346470c44eb7d1
BLAKE2b-256 83ceb49169dcbc43cd9c55caf2ea80a8a28df6bb317f421c7d10b0b73064e90c

See more details on using hashes here.

Provenance

The following attestation bundles were made for textli_editor-0.4.0.tar.gz:

Publisher: release.yml on MisterGC/textli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file textli_editor-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: textli_editor-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for textli_editor-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 681f7647d6e10cea54924b2b67c8245e356220801617bde69102859bfd5e375a
MD5 7372e35a0fa65a194e3e23fc33ee3398
BLAKE2b-256 ea7bf86c8904bf61e67cd1693990f150293dbff48fd70e6d7803c110cc8dd5d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for textli_editor-0.4.0-py3-none-any.whl:

Publisher: release.yml on MisterGC/textli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

This release

0.4.0 This release

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page