2009-02-11 1 views
23

это будет звучать довольно невежественны, но:Стандартный интерпретатор python имеет режим командной строки vi?

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

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

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

+0

Более недавние ответы, предоставленные здесь мне помогли - http://stackoverflow.com/questions/6636124/how-do-i-make-vi-editing-mode-work-in-irb -when-using-rvm – arcseldon

ответ

23

Ctrl-Alt-J Переключение из режима в режим Emacs Vi в readline programs.

В качестве альтернативы добавить "набор для редактирования режима VI" в ваш файл ~/.inputrc

+3

Не работает для меня - просто кажется, что получается . Я нахожусь на mac; это имеет значение? –

+0

Работает здесь! Не знаю о Macs, я боюсь ... – yungchin

+2

Для тех, у кого достаточно ответов, чтобы добавить к этому ответу, вот ссылка на документы readline: http://tiswww.case.edu/php/chet/readline/rluserman .html # SEC22 ... так что для emacs-edit-mode нажмите Ce, а для vi-editing-mode hit MCj – yungchin

29

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

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

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

Вы, возможно, необходимо следующее определение в вашем ~/.inputrc

set editing-mode vi 

OSX Информация

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

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

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

сделал строку в вашем ответе, пропавшую, перед тем, как «вас поместит ...»? благодаря! – yungchin

+0

Я исправил ошибку форматирования, прежде чем «поставит вас ...» – jfs

+0

Ничего себе. Я не только не знал этого, я даже не знал, что там что-то есть! –

2

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

1

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

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

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

Смотрите также man readline