pyvim
Pure Python Vi Implementation
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 pyvimuv
uv add pyvimpoetry
poetry add pyvimInstalling 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
More Terminals packages
Wraps any iterable to display a real-time…
copyleft · top 100 on PyPI
richRich renders styled text, tables, progress…
permissive · top 100 on PyPI
coloramaColorama makes ANSI escape sequences for…
permissive · top 100 on PyPI
wcwidthMeasures the displayed width of Unicode strings…
permissive · top 1,000 on PyPI
ptyprocessRun a subprocess in a pseudo terminal (pty) and…
permissive · top 1,000 on PyPI
pexpectPexpect spawns and controls interactive console…
permissive · top 1,000 on PyPI
prompt_toolkitprompt_toolkit is a Python library for building…
permissive · top 1,000 on PyPI
editorOpens your system's default text editor (or a…
permissive · top 5,000 on PyPI
ptpythonptpython is an advanced interactive Python…
permissive · top 5,000 on PyPI
python-editorProgrammatically open your system's $EDITOR…
permissive · top 5,000 on PyPI
streamlit-aceEmbeds an Ace code editor component into…
permissive · top 15,000 on PyPI
PygmentsPygments is a syntax highlighter that colorizes…
permissive · top 100 on PyPI
bpythonbpython is an enhanced Python interactive…
permissive · top 15,000 on PyPI
qtmonacoEmbeds the Monaco Editor (VS Code's editor)…
unclear · top 15,000 on PyPI
jupyterlab-pygmentsProvides a Pygments syntax highlighting theme…
permissive · top 1,000 on PyPI
pynvimPynvim is a Python client library that enables…
permissive · top 15,000 on PyPI