programing

*nix의 ipython에서 vi 키를 사용하는 방법

starjava 2023. 4. 17. 21:13
반응형

*nix의 ipython에서 vi 키를 사용하는 방법

현재 Bash에서 사용set -o vibash 프롬프트에서 vi 모드를 유효하게 합니다.

ipython에서는 어떻게 해야 하나요?

최근 누군가가 여기를 배회하는 경우를 대비하여 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'

다른 많은 리드라인 호환 앱에서 솔루션이 작동하는 것 같습니다.

에서 다음 항목을 설정합니다.~/.inputrc파일:

set editing-mode vi
set keymap vi
set convert-meta on

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

Vi 모드와 Emacs 모드를 대화식으로 전환할 수도 있습니다.서로 전환하는 읽기 줄 문서에 따르면 'Meta'+CTRLj 키 조합을 사용할 수 있어야 하지만, Mac에서는 vi-mode(ESC가 'Meta' 키로 사용됨)로만 전환할 수 있는 것 같습니다. ++CTRLj입니다.Emacs 모드로 다시 전환하려면 +를 e사용할 수 있지만, 저는 Mac에서 'Meta'+CTRLe를 사용해야 했습니다. +++CTRLe입니다.

참고로 ~/.inputrc는 다음과 같이 설정됩니다.

set meta-flag on
set input-meta on
set convert-meta off
set output-meta on

ipython는 읽기 라인 라이브러리를 사용하며, 이는 를 사용해 설정할 수 있습니다.~/.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 * 

마지막 행은 ipython을 Django와 함께 사용하여 기본적으로 모든 모델을 가져오려는 경우입니다.

에 다음 2개의 Configuration 추가~/.ipython/profile_default/ipython_config.py그럼 vi 바인딩을 사용하여 번거로운 속도 저하 문제를 방지할 수 있습니다(vim 모드 간 전환 관련).

c.TerminalInteractiveShell.editing_mode = 'vi'
c.TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode = False

언급URL : https://stackoverflow.com/questions/10394302/how-do-i-use-vi-keys-in-ipython-under-nix

반응형