본문 바로가기
utils

[ipython] Shortcut (단축키) - readline editors

by ds31x 2025. 4. 9.
728x90
반응형

ipython 셀은 readline 을 채택해서, 기본 키 바인딩은 emacs 기준임: 난 vi 키바인딩을 선호하는데...

GNU Emacs

 

우선 기본 shortcut은 다음과 같음:

Function Shortcut
cursor를 line의 맨 앞으로 Ctrl + A
cursor를 line의 맨 뒤로 Ctrl + E
cursor를 1단어 뒤로 Alt (or Option) + B (or 오른화살표)
macOS의 경우 특수문자 입력 키능 해제 필요.
cursor를 1단어 앞으로 Alt (or Option) + F :(or 왼화살표)
macOS의 경우 특수문자 입력 키능 해제 필요.
cursor기준으로 현재 line의 왼쪽 삭제 Ctrl + U
cursor기준으로 현재 line의 오른쪽 삭제 Ctrl + K
  Ctrl + C
히스토리 탐색 위/아래 화살표
자동완성 Tab
cusor 앞의 한 단어 자르기 Ctrl + W
cusor 뒤의 한 단어 자르기 Alt (or Option) + D :
macOS의 경우 특수문자 입력 키능 해제 필요.
최근 마지막 삭제한 내용 붙여넣기 Ctrl + Y

 

단, macOS에선 Option키가 특수문자 입력에 사용되는터라...

위의 shortcut을 그대로 쓰려면 터미널 프로그램 (iterm2 등)의  추가 설정이 필요함.

  • iTerm2:
    Settings → Profiles → Key →
    Left Option key → Esc+ 로 설정

macOS의 기본 터미널인 Terminal.app 에선 위의 shortcuts가 보통 잘 동작함.
만약 안되면

  • Terminal → Settings → Keyboard 에 있는
  • Use Option as Meta key 체크해주면 됨.

 

사실 macOS의 기본 Python REPL (기본 interactive shell)은 libedit를 사용함: readline과 유사하지만 조금 다름. 

 

IPython은 readline스타일의 키바인딩을 사용한다 (좀 더 찾아보니 prompt_toolkit 을 사용하며 직접 readline을 쓰는 건 아님.)


참고: readline 기반 터미널

GNU readline 라이브러리를 사용하는 터미널 환경 또는 셸(shell) 을 가리킴.
이 환경에서는 사용자가 입력한 줄(line)을 자유롭게 편집하고, 히스토리 탐색도 가능.


참고: readline이란

GNU readline은 사용자가 커맨드라인에서 입력할 때,
편집, 이동, 히스토리 탐색, 자동완성 등의 기능을 제공해주는 라이브러리.

기본적으로 emacs 키바인딩을 따름.


참고: libedit 란

BSD 계열에서 개발된 경량의 line edit library. 

GNU readline 과 호환되는 API를 제공.


vi 키 바인딩으로 바꾸는 것도 나쁘지 않음: 권장.