Standard python interpreter has a vi command mode?

前端 未结 4 1316
天命终不由人
天命终不由人 2020-12-23 10:12

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

相关标签:
4条回答
  • 2020-12-23 10:32

    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
    
    0 讨论(0)
  • 2020-12-23 10:46

    Ctrl-Alt-J switches from Emacs mode to Vi mode in readline programs.

    Alternatively add "set editing-mode vi" to your ~/.inputrc

    0 讨论(0)
  • 2020-12-23 10:50

    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.

    0 讨论(0)
  • 2020-12-23 10:52

    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.

    0 讨论(0)
提交回复
热议问题