답변:
누군가가 최근 여기에서 방황하는 경우 IPython 5.0이 readline에서 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
. 유니 코드 입력과 충돌하므로 유니 코드를 붙여 넣거나 입력하면 다양한 이벤트를 트리거 할 수 있습니다. 예를 들어 ü를 입력하면 흥미로운 결과가 표시됩니다.
set keymap vi
다음 명령이 영향을 미칠 것 키맵 (예 : 모드) 변경 및 set convert-meta on
일부 키가 작동하는 방법을 변경 . 필요한지 잘 모르겠습니다.
set convert-meta on
(그리고 그 줄 아래의 모든 것은) 삽입 모드가 아닌 명령 모드에만 적용됩니다.
Vi- 모드와 Emacs 모드 사이를 대화식으로 전환 할 수도 있습니다. 그들 사이를 전환 하는 readline 문서 에 따르면 MCj 키 조합을 사용할 수 있어야하지만 내 Mac에서 vi-mode로 전환 할 수있는 것 같습니다 (ESC는 'Meta'키로 사용됩니다) ) 그것은 : ESC+ CTRL+ j. Emacs 모드로 다시 전환하려면 Ce를 사용할 수 있지만 저에게는 작동하지 않는 것 같습니다. 대신 Mac에서 MCe를 수행해야했습니다. ESC+ CTRL+ e입니다.
참고로 ~ / .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
기반 애플리케이션이 Emacs 대신 vi 스타일 키 바인딩을 사용 하도록하려면 해당 파일에 추가합니다 .
ipython
에서 readline
호출 prompt_toolkit
된 python 라이브러리 로 전환 5.0.0
되었으므로 더 이상 작동하지 않습니다.
.ipython 시작 구성 파일에서 vi를 설정할 수 있습니다. 당신이 파일을 추가하여이없는 경우 하나를 만들기 ~/.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 *
마지막 줄은 Django와 함께 ipython을 사용하고 기본적으로 모든 모델을 가져 오려는 경우입니다.