В даний час в Bash я використовую set -o vi
для ввімкнення режиму vi в моєму запиті bash.
Як це зробити в ipython?
Примітка: Якщо відповідь стосується всіх * nix, я видалю OS X із заголовка :)
Відповіді:
Якщо хтось недавно блукав сюди, IPython 5.0 перейшов з рядка читання на prompt_toolkit , тому оновленою відповіддю на це питання є передача опції:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... або встановити його глобально в конфігурації профілю ( ~/.ipython/profile_default/ipython_config.py
; створити його за допомогою, ipython profile create
якщо у вас його немає) за допомогою:
c.TerminalInteractiveShell.editing_mode = 'vi'
Схоже, рішення працює для багатьох інших програм, сумісних із readline:
Встановіть у своєму ~/.inputrc
файлі наступне :
set editing-mode vi
set keymap vi
set convert-meta on
set convert-meta on
. Це конфліктує із входом Unicode, тому, якщо ви вставите або наберете Unicode, ви можете активувати різні події, що може бути несподіваним. Наприклад, спробуйте набрати ü, і ви побачите цікавий результат.
set keymap vi
змінюється, на яку карту клавіш (тобто режим) вплинуть наступні команди , і set convert-meta on
змінюється поведінка деяких клавіш . Я не впевнений, чи вони вам потрібні.
set convert-meta on
(і будь-що нижче цього рядка) застосовуватиметься лише до командного режиму, а не до режиму вставки.
Ви також можете інтерактивно перемикатися між режимами Vi та Emacs. Згідно з документами readline для перемикання між ними, передбачається, що ви зможете використовувати комбінацію клавіш MCj, але це, мабуть, дозволяє мені переключитися у режим vi - на моєму Mac (де ESC використовується як клавіша 'Meta') ) це: ESC+ CTRL+ j. Щоб повернутися до режиму Emacs, можна використовувати Ce, але це, здається, не спрацювало для мене - натомість мені довелося зробити MCe - на моєму Mac це: ESC+ CTRL+ e.
FYI my ~ / .inputrc налаштовано таким чином:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipython
використовує бібліотеку readline, і це можна налаштувати за допомогою ~/.inputrc
файлу. Ви можете додати
set editing-mode vi
до цього файлу, щоб усі readline
основні програми використовували сполучення клавіш vi замість Emacs.
ipython
перейшли від readline
в бібліотеку пітона називається prompt_toolkit
в 5.0.0
так що це більше не працює.
Ви можете встановити vi у своєму файлі налаштування запуску .ipython. Створіть його, якщо у вас його немає, додавши файл у ~/.ipython/profile_default/startup/
щось на зразок start.py
. Ось приклад:
# Initializing script for ipython in ~/.ipython/profile_default/startup/
from IPython import get_ipython
ipython = get_ipython()
# If in ipython, set vi and load autoreload extension
if 'ipython' in globals():
ipython.editing_mode = 'vi'
ipython.magic('load_ext autoreload')
ipython.magic('autoreload 2')
from Myapp.models import *
Останній рядок - це якщо ви використовуєте ipython із Django і хочете імпортувати всі свої моделі за замовчуванням.