Ответ 1
Ctrl-Alt-J переключается из режима Emacs в режим Vi в программах readline.
Альтернативно добавьте "set editing-mode vi" к вашему ~/.inputrc
это будет звучать довольно невежественно, но:
Я немного работал в интерпретаторе python (python 2.4 на RHEL 5.3) и внезапно оказался в том, что кажется "режимом команды vi". То есть, я могу редактировать предыдущие команды с типичными привязками клавиш vi, идя слева с h, удаляя с помощью x...
Мне это нравится - единственное, что я не знаю, как я сюда попал (возможно, через один из модулей, которые я импортировал: pylab/matplotlib?).
Может ли кто-нибудь пролить свет на то, как включить этот режим в интерпретаторе?
Ctrl-Alt-J переключается из режима Emacs в режим Vi в программах readline.
Альтернативно добавьте "set editing-mode vi" к вашему ~/.inputrc
Все это зависит от нескольких вещей.
Прежде всего, оболочка 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
Для Mac OS X 10.10.3, python2.7, режим vi можно настроить, поставив "bind -v" в ~/.editrc. Последние несколько параграфов справочной страницы намекают на это.
Использовать метод readline.parse_and_bind. Например, попробуйте интерактивную консоль python:
import readline
readline.parse_and_bind("set editing-mode vi")
Кажется, любая команда, которую вы можете установить в .inputrc, вы также можете установить с помощью этого метода. Я попробовал его в Python 2.7 и 3.5.1.
См. также man readline