Skip to main content

jot

PyPI Python versions CI License: MIT

A tiny inline terminal editor built specifically for git commit messages.

It renders directly in your terminal's scroll buffer, so there's no full-screen takeover and no context switch. Write the message, hit Ctrl+S, and your shell prompt comes back right below it.

jot editing a commit message inline

Features

  • Inline rendering: the editor appears in place, below your git commit, and blends into your terminal's background color.
  • Batteries included: line numbers, soft wrap, and tab indentation out of the box.
  • Message history: every message you write is remembered, even if you cancel, so a failed commit hook never eats your text.
  • Cycle and search: flip through past messages with PgUp/PgDn, or fuzzy-search them with Ctrl+R.

Searching the message history with Ctrl+R

Installation

jot is a command-line tool, so install it in its own isolated environment with uv or pipx:

uv tool install jot-editor
# or
pipx install jot-editor

This puts the jot command on your PATH. The package on PyPI is named jot-editor.

To try it without installing:

uvx --from jot-editor jot

Usage

As your git editor

git config --global core.editor jot

Or for a single commit:

GIT_EDITOR=jot git commit

Git's # comment lines stay visible while you type. If you cancel with Esc, jot exits with status 1 and git aborts the commit. This also applies to git commit --amend, git rebase -i, and so on.

Standalone

jot path/to/file     # edit a file in place
jot                  # write a quick note; the text goes to stdout on save
jot > note.txt       # ...so you can redirect or pipe it

Key bindings

Key Action
Ctrl+S Save and exit
Esc Cancel (exit status 1)
PgUp Previous (older) message from history
PgDn Next (newer) message; past the newest restores your draft
Ctrl+R Search history (type to filter)
Enter (in search) Apply the selected result and close search
Esc (in search) Close search and return to the editor

History

Every message is saved to ~/.cache/jot/git_history.json when you save or cancel, so nothing is ever lost. jot keeps the most recent 100 messages and skips consecutive duplicates.

Lines starting with # (git's status comments) are never stored. When you apply a history entry, only the message part is replaced and the comment lines in the current file are kept.

The search panel matches the first line of each message and also the full text. Results are listed newest first.

Requirements

  • Python 3.12 or newer
  • Linux or macOS (jot uses POSIX terminal APIs; Windows isn't supported)
  • For seamless blending with your theme, a terminal that answers the OSC 11 background color query (most modern terminals do). Otherwise jot falls back to the default background.

Contributing

Bug reports and pull requests are welcome. See CONTRIBUTING.md for the development setup.

License

MIT. See LICENSE for details.

Metadata

Release files for jot-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)

Source distribution for jot-editor 0.2.0
File Size Uploaded
jot_editor-0.2.0.tar.gz 7.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jot-editor 0.2.0
File Interpreter ABI Platform
jot_editor-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 16.6 kB

Release files / jot_editor-0.2.0.tar.gz

Download URL jot_editor-0.2.0.tar.gz
Size 7.6 kB
Tags Source
SHA-256 checksum
How to use checksums
864f2097e4bdfa339d21cd9bfe432e074f739d67b0c81948f60b1a9f988079af
BLAKE2b-256 checksum
How to use checksums
a0dab4ce9d5319bba171c5e4c7114e85b472149487081369280473a9d11db33c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / jot_editor-0.2.0-py3-none-any.whl

Download URL jot_editor-0.2.0-py3-none-any.whl
Size 8.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
900a829664ad85414727e52e78a402bd94285458d70c42f65db76b6d49194c96
BLAKE2b-256 checksum
How to use checksums
52616023dd52d9492b0f63fe234fe2fb9d6c26d97604e41979f18920d666246d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release 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