|Number of watchers on Github||2055|
|Number of open issues||60|
|Average time to close an issue||26 days|
|Average time to merge a PR||2 days|
|Open pull requests||10+|
|Closed pull requests||14+|
|Last commit||over 1 year ago|
|Repo Created||over 4 years ago|
|Repo Last Updated||over 1 year ago|
|Organization / Author||jonathanslenders|
|Do you use pyvim? Leave a review!|
|View open issues (60)|
|View pyvim activity|
|View on github|
|Fresh, new opensource launches 🚀🚀🚀|
Trendy new open source projects in your inbox! View examples
An implementation of Vim in Python
pip install pyvim
.. image :: https://github.com/jonathanslenders/pyvim/raw/master/docs/images/welcome-screen.png
Issues, questions, wishes, comments, feedback, remarks? Please create a GitHub issue, I appreciate it.
pyvim using pip:
pip install pyvim
It is a good idea to add the following to your
~/.bashrc if you really
want to use it:
alias vi=pyvim export EDITOR=pyvim
The editor is written completely in Python. (There are no C extensions). This makes development a lot faster. It's easy to prototype and integrate new features.
We have already many nice things, for instance:
Syntax highlighting of files, using the Pygments lexers.
Horizontal and vertical splits, as well as tab pages. (Similar to Vim.)
All of the functionality of
<http://github.com/jonathanslenders/python-prompt-toolkit>_. This includes a
lot of Vi key bindings, it's platform independent and runs on every Python
version from python 2.6 up to 3.4. It also runs on Pypy with a noticable
:set ... commands have been implemented, like
Other working commands:
badd, and many
For Python source code, auto completion uses the amazing Jedi library, and code checking in done (asynchronously) through Pyflakes.
Colorschemes can be changed at runtime.
Further, when the project develops, it should also become possible to write extensions in Python, and use Python as a scripting language. (Instead of vimscript, for instance.)
We can also do some cool stuff. Like for instance running the editor on the Python asyncio event loop and having other coroutines interact with the editor.
Editing its own source code:
.. image :: https://github.com/jonathanslenders/pyvim/raw/master/docs/images/editing-pyvim-source.png
Window layouts (horizontal and vertical splits + tab pages.)
.. image :: https://github.com/jonathanslenders/pyvim/raw/master/docs/images/window-layout.png
Pyflakes for Python code checking and Jedi for autocompletion:
.. image :: https://github.com/jonathanslenders/pyvim/raw/master/docs/images/pyflakes-and-jedi.png
.. image :: https://github.com/jonathanslenders/pyvim/raw/master/docs/images/colorschemes.png
Chinese and Japanese input (double width characters):
.. image :: https://raw.githubusercontent.com/jonathanslenders/pyvim/master/docs/images/cjk.png?v2
It is possible to create a
.pyvimrc file for a custom configuration.
Have a look at this example:
Compared to Vi Improved, Pyvim is still less powerful in many aspects.
prompt_toolkitdoes not (or not yet) allow buffers to have an individual cursor when buffers are opened in several windows. Currently, this results in some unexpected behaviour, when a file is displayed in two windows at the same time. (The cursor could be displayed in the wrong window and other windows will sometimes scroll along when the cursor moves.) This has to be fixed in the future.
BufferControlcode, which on every key press tries to reflow the text and calls pygments for highlighting. And this is Python code looping through single characters.)
There is no roadmap. I mostly implement the stuff which I need or interests me, or which gives me the opportunity to learn. But feel free to create a GitHub issue to request a new feature. Pull requests are also welcome. (Maybe create an issue first to discuss it, if you're unsure whether I'll merge it.)
Maybe some day we will have a better data structure (Rope), that makes it possible to open really large files. (With good algorithms, Python does not have to be slower than C code.)
Maybe we will also have line folding and probably block editing. Maybe some day we will have a built-in Python debugger or mouse support. We'll see. :)
To run all tests, install pytest:
pip install pytest
And then run from root pyvim directory:
To test pyvim against all supported python versions, install tox:
pip install tox
And then run from root pyvim directory:
You need to have installed all the supported versions of python in order to run tox command successfully.
There are several reasons.
The main reason is maybe because it was a small step after I created the Python
prompt-toolkit library. That is a library which is actually only a simply
pure Python readline replacement, but with some nice additions like syntax
highlighting and multiline editing. It was never intended to be a toolkit for
full-screen terminal applications, but at some point I realised that everything
we need for an editor was in there and I liked to challenge its design. So, I
started an editor and the first proof of concept was literally just a few
hundred lines of code, but it was already a working editor.
The creation of
pyvim will make sure that we have a solid architecture for
prompt-toolkit, but it also aims to demonstrate the flexibility of the
library. When it makes sense, features of
pyvim will move back to
prompt-toolkit, which in turn also results in a better Python REPL.
ptpython <https://github.com/jonathanslenders/ptpython>_, an alternative
Above all, it is really fun to create an editor.
Certainly have a look at the alternatives:
Do you use curses?
No, it uses only
.. |Build Status| image:: https://api.travis-ci.org/jonathanslenders/pyvim.svg?branch=master :target: https://travis-ci.org/jonathanslenders/pyvim#