Skip to main content

mdedit

A terminal Markdown viewer and editor, built with Textual and Rich.

Open a .md file to a fully rendered view (headings, tables, code blocks, lists, block quotes...) and press a single key to toggle into a syntax-highlighted source editor for the same file — then toggle back to see your changes rendered.

Install

pip install git+https://github.com/matplo/mdedit

Usage

mdedit path/to/file.md   # open (or create) a file
mdedit                   # start with a prompt to open/create a file

Key bindings

Key Action
ctrl+t Toggle between view and edit mode
ctrl+s Save
ctrl+r Reload from disk
ctrl+q Quit (prompts if unsaved changes)

Note: if ctrl+s doesn't seem to do anything in your terminal, it may be intercepted by terminal flow control (XON/XOFF). Run stty -ixon in your shell first, or use the Save option from the command palette (ctrl+p).

Development

pip install -e ".[dev]"
pytest
ruff check .
ruff format --check .

Releasing to PyPI

Releases publish automatically via GitHub Actions using trusted publishing (no API token stored anywhere). To cut a release:

  1. Bump __version__ in src/mdedit/__init__.py, commit it.
  2. Tag and push: git tag vX.Y.Z && git push origin vX.Y.Z
  3. The Publish to PyPI workflow builds the sdist/wheel and uploads them.

Roadmap

v1 is intentionally scoped to a single-file, toggle-based view/edit experience. Not yet included (candidates for a future version):

  • Always-rendered, true WYSIWYG editing (edit directly on rendered text, no separate source view)
  • Split-pane side-by-side edit + preview
  • Browser-style navigation history, bookmarks, remote/URL loading
  • Multiple open files / tabs

License

MIT

Download files

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

Source Distribution

mdedit-0.1.0.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

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

mdedit-0.1.0-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file mdedit-0.1.0.tar.gz.

File metadata

  • Download URL: mdedit-0.1.0.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mdedit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5903ae8ece703f099cda3469b3d72efb39adf9cce385ca1e101f7d2696f9288c
MD5 ce73d42a747c7824455c4a14175dc584
BLAKE2b-256 28d38510acd9733d52896fbb021bd209ba15d6ae7305e1a9a03ee22601d414dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdedit-0.1.0.tar.gz:

Publisher: publish.yml on matplo/mdedit

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

File details

Details for the file mdedit-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mdedit-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mdedit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a73b71c724c33cf865935c03f37849c23413c0df817b7bf7bfc216aa621865df
MD5 a1210520030898c02b07640a9b864b5b
BLAKE2b-256 a95272076c867783470a8f9833b4e9e310b092cedda10309b8192f80099c2ce2

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdedit-0.1.0-py3-none-any.whl:

Publisher: publish.yml on matplo/mdedit

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

Release history Release notifications | RSS feed

This release

0.1.0 This release

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