2009-02-11 10 views
23

esto va a sonar bastante ignorantes, pero:El intérprete de Python estándar tiene un modo de comando vi?

que estaba trabajando un poco en el intérprete de Python (Python 2.4 en RHEL 5.3), y de repente me encontré en lo que parece ser un 'modo de comandos de vi'. Es decir, puedo editar comandos anteriores con enlaces de teclas vi típicos, yendo a la izquierda con h, borrando con x ...

Me encanta - lo único es que no sé cómo llegué aquí (quizás sea a través de uno de los módulos que he importado: pylab/matplotlib?).

¿Alguien puede arrojar algo de luz sobre la manera de activar este modo en el intérprete?

+0

Más respuestas recientes proporcionados aquí que me ayudaron - http://stackoverflow.com/questions/6636124/how-do-i-make-vi-editing-mode-work-in-irb -when-using-rvm – arcseldon

Respuesta

23

interruptores Ctrl-Alt-J de modo de Emacs a modo de VI en readline programs.

Alternativamente añadir "set-modo de edición vi" a su ~/.inputrc

+3

No funciona para mí, parece producir un . Estoy en un Mac; ¿Eso hace una diferencia? –

+0

¡Funciona aquí! No sé sobre Macs, me temo ... – yungchin

+2

Para cualquiera que tenga suficiente reputación como para agregar a esta respuesta, aquí hay un enlace a los documentos de lectura: http://tiswww.case.edu/php/chet/readline/rluserman .html # SEC22 ... entonces para emacs-editing-mode presione Ce, y para vi-editing-mode presione MCj – yungchin

29

Este tipo de todo depende de algunas cosas.

En primer lugar, el intérprete de Python usa readline, y como tal, su ~/.inputrc es importante aquí. Es lo mismo con psql el intérprete de línea de comandos PostgreSQL y mysql el shell MySQL. Todos los que se pueden configurar para utilizar fijaciones de comandos de vi-estilo, la historia, etc.

<ESC> le pondrá en modo vi en el Python Shell, una vez que tenga su modo de edición ajustado a VI

Usted puede necesitará la siguiente definición en su ~/.inputrc

set editing-mode vi 

OSX información

OSX utiliza libedit que utiliza ~/.editrc. Puede hombre editrc para más información.

Por ejemplo, para imitar una combinación de teclas popular que busca en su historia, se puede añadir lo siguiente a su .editrc

bind "^R" em-inc-search-prev 
+0

¿Faltó una línea en su respuesta, justo antes de "te pondré ..."? ¡Gracias! – yungchin

+0

he corregido un error de formato antes de que "te pondrá ..." – jfs

+0

Wow. ¡No solo no sabía esto, ni siquiera sabía que había algo que saber! –

2

Para Mac OS X 10.10.3, python2.7, vi modo se puede configurar mediante la colocación de "-v se unen" en ~/.editrc. Los últimos párrafos de la página del hombre insinúan esto.

1

Uso readline.parse_and_bind método. Por ejemplo, trate de pitón consola interactiva:

import readline 
readline.parse_and_bind("set editing-mode vi") 

Parece cualquier comando se puede establecer en .inputrc se puede establecer a través de este método también. Lo intenté en Python 2.7 y 3.5.1.

Ver también man readline

Cuestiones relacionadas