skillfed

pyvim

Pure Python Vi Implementation

pyvim v3.0.3 185.7K downloads/30d#10,005 on PyPI2,545
Permissive license BSD License DORMANT released

What it is and what it does

pyvim is a Vi/Vim clone written entirely in Python, designed to demonstrate the capabilities of prompt-toolkit while providing a usable editor for terminal environments. It includes syntax highlighting via Pygments, horizontal and vertical window splits, tab pages, Vi key bindings, and several :set commands (incsearch, number, ignorecase, wildmenu, expandtab, hlsearch, ruler, paste, tabstop). For Python files, it offers autocompletion through Jedi and asynchronous code checking via Pyflakes.

The editor trades some of Vim's performance and feature completeness for simplicity and ease of extension in Python. It works across platforms where Python runs, though Windows support is acknowledged as less polished. The project is dormant but stable; it was last updated in 2022 and has not received active maintenance since, making it suitable only for users comfortable with a frozen feature set and willing to maintain their own patches if needed.

Use it for:

  • Quick terminal editing when you want Vi keybindings without installing the full Vim binary.
  • Python development with integrated Pyflakes checking and Jedi autocompletion for Python files.
  • Learning or prototyping an editor architecture, since the pure-Python implementation is readable and extensible.
  • Embedded scripting scenarios where you need an editor that runs on the Python asyncio event loop.
  • Cross-platform terminal editing on systems where Vim may not be easily available or desired.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

A Vi/Vim-like text editor implemented entirely in Python, providing syntax highlighting, splits, tabs, and Vi key bindings through the prompt-toolkit library.

Yes, if you want a lightweight, pure-Python Vi editor for terminal work and accept its limitations. No, if you need active maintenance, large-file performance, or the full feature set of modern Vim. The dormant status since 2022-05-16 means you should treat it as a stable but frozen tool—suitable for personal use or learning, but not for production environments requiring ongoing support.

Install

pyvim on PyPI

pip

pip install pyvim

uv

uv add pyvim

poetry

poetry add pyvim

Installing pyvim

Before you install

Low install friction with pure Python dependencies and no C extensions. However, the project is dormant—last release was 2022-05-16, with last commit 2024-07-24. Maintenance is minimal; use only if you accept no active development.

License in practice

BSD License permits commercial and private use with minimal restrictions, making it safe to adopt from a licensing standpoint.

Quickstart

pip install pyvim
pyvim

Or set as default editor:
alias vi=pyvim
export EDITOR=pyvim

Requires a terminal environment; performance degrades noticeably on large files when syntax highlighting is enabled.

Verify before relying

  • Current Python version compatibility—description mentions Python 2.6–3.4 and PyPy, but requires_python is unspecified.
  • Whether Jedi integration for Python autocompletion is still functional or requires specific versions.
  • Windows support quality and whether it has improved since the last release.
  • Exact file size threshold at which performance degradation becomes noticeable.

Package facts

License BSD License (permissive)
Python support not specified
Install friction low — pure-Python wheel
Runtime dependencies 5 — prompt-toolkit, six, pyflakes, pygments, docopt
Maintenance dormant — 1,551 days since the last release
Last repo commit
First released
Downloads 185,671/month — #10,005 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: pyvim-3.0.3-py3-none-any.whl

Tags

vim editor pythonterminal text editorvi implementationpython syntax highlighting editormodal text editorcommand-line editorsplit windows editor
text-editorvi-vim-cloneterminal-ui

More Terminals packages