I was working a bit in the python interpreter (python 2.4 on RHEL 5.3), and suddenly found myself in what seems to be a \'vi command mode\'. That is, I can edit previous com
This kind of all depends on a few things.
First of all, the python shell uses readline, and as such, your ~/.inputrc
is important here. That's the same with psql the PostgreSQL command-line interpreter and mysql the MySQL shell. All of those can be configured to use vi-style command bindings, with history etc.
<ESC>
will put you into vi mode at the python shell once you've got your editing mode set to vi
You may need the following definition in your ~/.inputrc
set editing-mode vi
OSX info
OSX uses libedit which uses ~/.editrc. You can man editrc for more information.
For example, to mimick a popular key combination which searches in your history, you can add the following to your .editrc
bind "^R" em-inc-search-prev
Ctrl-Alt-J switches from Emacs mode to Vi mode in readline programs.
Alternatively add "set editing-mode vi" to your ~/.inputrc
For Mac OS X 10.10.3, python2.7, vi
mode can be configured by placing bind -v
in ~/.editrc
. The last few paragraphs of the man page hint at this.
Use readline.parse_and_bind method. For example, try on python interactive console:
import readline
readline.parse_and_bind("set editing-mode vi")
It seems any command you can set in .inputrc you can set via this method too. I tried it in Python 2.7 and 3.5.1.
See also man readline
EDIT (Dec 21th, 2019): or maybe, to have a true vim you can manage to patch the python's readline with Athame. I did it with bash and it is very cool.