Стандартный интерпретатор Python имеет командный режим vi?

Я немного работал в интерпретаторе python (python 2.4 на RHEL 5.3) и внезапно оказался в том, что кажется «командным режимом vi». То есть я могу редактировать предыдущие команды с типичными сочетаниями клавиш vi, переходя влево с помощью h, удаляя с помощью x...

Мне это нравится - единственное, я не знаю, как я сюда попал (возможно, это из-за одного из модулей, которые я импортировал: pylab/matplotlib?).

Может ли кто-нибудь пролить свет на то, как включить этот режим в интерпретаторе?


person yungchin    schedule 11.02.2009    source источник
comment
Более свежие ответы, предоставленные здесь, помогли мне - rvm" title="как заставить режим редактирования vi работать в irb при использовании rvm"> stackoverflow.com/questions/6636124/   -  person arcseldon    schedule 24.11.2015


Ответы (4)



Такого рода все зависит от нескольких вещей.

Прежде всего, оболочка python использует readline, и поэтому здесь важен ваш ~/.inputrc. То же самое с psql, интерпретатором командной строки PostgreSQL, и mysql, оболочкой MySQL. Все они могут быть настроены для использования привязок команд в стиле vi, с историей и т. д.

<ESC> переведет вас в режим vi в оболочке python, как только вы установите режим редактирования на vi

Вам может понадобиться следующее определение в вашем ~/.inputrc

set editing-mode vi

Информация об OSX

OSX использует libedit, который использует ~/.editrc. Вы можете man editrc получить дополнительную информацию.

Например, чтобы имитировать популярную комбинацию клавиш, которая выполняет поиск в вашей истории, вы можете добавить следующее в свой .editrc

bind "^R" em-inc-search-prev
person Philip Reynolds    schedule 11.02.2009
comment
пропала ли строка в вашем ответе, как раз перед тем, как поставит вас...? Благодарность! - person yungchin; 11.02.2009
comment
Ух ты. Я не только не знал этого, я даже не знал, что там есть что знать! - person John Fouhy; 12.02.2009
comment
Спасибо, и за ответ, и за исправление в нем отсутствующего ESC. Это отличная информация, но я принимаю ответ arcanex, потому что он объясняет, что произошло в моем загадочном случае... (у меня не было файла .inputrc) - person yungchin; 12.02.2009
comment
В MAC OS X у меня все еще были проблемы после всех вышеперечисленных предложений. Приведенный здесь ответ устранил мою проблему - stackoverflow.com/questions/6636124/ Таким образом, добавление bind -v в .editrc и установка режима редактирования vi в inputrc работал. - person arcseldon; 24.11.2015

Для Mac OS X 10.10.3, python2.7, режим vi можно настроить, поместив bind -v в ~/.editrc. Последние несколько абзацев справочной страницы намекают на это.

person Mark Beckner    schedule 22.04.2015

Используйте метод readline.parse_and_bind. Например, попробуйте интерактивную консоль Python:

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

Кажется, любую команду, которую вы можете установить в .inputrc, вы также можете установить с помощью этого метода. Я пробовал это в Python 2.7 и 3.5.1.

См. также man readline


EDIT (21 декабря 2019 г.): или, может быть, чтобы иметь настоящий vim, вы можете исправить строку чтения python с помощью Athame. Я сделал это с bash, и это очень круто.

person Iacchus    schedule 01.04.2016