Подтвердить что ты не робот

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

это будет звучать довольно невежественно, но:

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

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

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

4b9b3361

Ответ 1

Ctrl-Alt-J переключается из режима Emacs в режим Vi в программах readline.

Альтернативно добавьте "set editing-mode vi" к вашему ~/.inputrc

Ответ 2

Все это зависит от нескольких вещей.

Прежде всего, оболочка 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

Ответ 3

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

Ответ 4

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

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

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

См. также man readline