[python] * nix에서 ipython에서 vi 키를 어떻게 사용합니까?

현재 Bash set -o vi에서는 bash 프롬프트에서 vi 모드를 활성화 하는 데 사용합니다.

ipython에서 어떻게해야합니까?

참고 : 답변이 모든 * nix에 적용되는 경우 제목에서 OS X를 제거하겠습니다. 🙂



답변

누군가가 최근 여기에서 방황하는 경우 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

출처 : http://www.jukie.net/bart/blog/20040326082602


답변

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


답변

ipythonreadline 라이브러리를 사용하며 ~/.inputrc파일을 사용하여 구성 할 수 있습니다. 당신은 추가 할 수 있습니다

set editing-mode vi

모든 readline기반 애플리케이션이 Emacs 대신 vi 스타일 키 바인딩을 사용 하도록하려면 해당 파일에 추가합니다 .


답변

나는 IPython 5에서 대화식으로 모드를 전환 할 수 있어야했고 즉시 프롬프트 관리자를 다시 생성하여 그렇게 할 수 있다는 것을 알았습니다.

a = get_ipython().configurables[0]; a.editing_mode='vi'; a.init_prompt_toolkit_cli()


답변

.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을 사용하고 기본적으로 모든 모델을 가져 오려는 경우입니다.


답변