IPython 셸의 키보드 단축키

컴퓨터를 주로 사용하신다면 이미 작업 중에 키보드 단축키를 활용하고 계실 것입니다. 가장 익숙한 예로는 여러 프로그램에서 복사하고 붙여넣을 때 쓰는 Cmd-c와 Cmd-v(또는 Ctrl-c와 Ctrl-v)가 있습니다. 고급 사용자들은 여기서 더 나아가 복잡한 키 조합으로 놀라운 작업 효율을 보여주는 Emacs나 Vim 같은 텍스트 편집기를 쓰기도 합니다.

IPython 셸이 그 정도로 복잡하지는 않지만, 명령어를 입력할 때 빠르게 탐색할 수 있는 다양한 단축키를 제공합니다. 이 중 일부는 브라우저 기반 노트북에서도 작동하지만, 이번 섹션에서는 주로 IPython 셸의 단축키를 살펴보겠습니다.

이러한 기능에 익숙해지면 키보드 정위치에서 손을 떼지 않고도 특정 명령을 빠르게 수행할 수 있어 매우 유용합니다. Emacs 사용자이거나 리눅스 스타일 셸에 익숙하다면 다음 내용이 무척 반가우실 것입니다. 이 단축키들을 탐색 단축키, 텍스트 입력 단축키, 명령 기록 단축키, 기타 단축키 등 몇 가지 범주로 나누어 정리하겠습니다.

탐색 단축키

줄 안에서 앞뒤로 이동할 때 왼쪽 및 오른쪽 화살표 키를 쓰는 것이 가장 직관적이지만, 키보드 정위치에서 손을 움직일 필요가 없는 다른 옵션들도 있습니다.

단축키 동작
Ctrl-a 커서를 줄의 맨 앞으로 이동
Ctrl-e 커서를 줄의 맨 끝으로 이동
Ctrl-b 또는 왼쪽 화살표 키 커서를 한 글자 뒤로 이동
Ctrl-f 또는 오른쪽 화살표 키 커서를 한 글자 앞으로 이동

텍스트 입력 단축키

이전 글자를 지울 때 백스페이스 키를 쓰는 것은 누구나 잘 알지만, 이 키를 누르려면 손가락을 멀리 뻗어야 하고 한 번에 한 글자씩만 지워지는 번거로움이 있습니다. IPython에는 텍스트 일부를 빠르게 제거하는 몇 가지 단축키가 있습니다. 그중 가장 유용한 것은 한 줄을 통째로 삭제하는 명령입니다. 백스페이스 대신 Ctrl-b와 Ctrl-d 같은 조합을 사용하다 보면 금세 손에 익어 훨씬 편해질 것입니다.

단축키 동작
백스페이스 이전 글자 삭제
Ctrl-d 다음 글자 삭제
Ctrl-k 커서부터 줄 끝까지 텍스트 잘라내기
Ctrl-u 줄의 맨 앞부터 커서까지 텍스트 잘라내기
Ctrl-y 잘라낸 텍스트 붙여넣기(양크)
Ctrl-t 이전 두 글자의 위치 바꾸기

명령 기록 단축키

아마 여기서 소개하는 단축키 중 가장 영향력 있는 것은 명령어 기록을 탐색하는 단축키일 것입니다. IPython은 현재 세션뿐만 아니라 전체 기록을 프로필 디렉터리의 SQLite 데이터베이스에 저장해 둡니다. 이전 명령어는 위쪽 및 아래쪽 화살표 키로 하나씩 훑어볼 수 있으며, 그 밖에도 다음과 같은 옵션이 있습니다.

단축키 동작
Ctrl-p(또는 위쪽 화살표) 이전 명령어로 이동
Ctrl-n(또는 아래쪽 화살표) 다음 명령어로 이동
Ctrl-r 명령어 기록 역방향 검색

특히 역방향 검색 옵션이 매우 유용합니다. 앞서 정의했던 square 함수를 기억하시나요? 새 IPython 셸에서 기록을 검색해 이 정의를 다시 찾아보겠습니다. IPython 터미널에서 Ctrl-r을 누르면 다음과 같은 프롬프트가 나타납니다.

`ipython In [1]: (reverse-i-search)’:


여기서 글자를 입력하기 시작하면 IPython이 해당 글자와 일치하는 가장 최근 명령어를 자동으로 채워줍니다.

``ipython
In [1]:
(reverse-i-search)`sqa': square??

글자를 더 입력해 검색 범위를 좁히거나, Ctrl-r을 다시 눌러 일치하는 다른 명령어를 더 찾아볼 수 있습니다. Ctrl-r을 두 번 더 누르면 다음과 같이 나타납니다.

`ipython In [1]: (reverse-i-search)sqa’: def square(a): “““a의 제곱을 반환합니다”“” return a ** 2


원하는 명령어를 찾았다면 Return 키를 눌러 검색을 마칩니다.
검색된 명령어를 그대로 실행하거나 수정하여 세션을 이어갈 수 있습니다.

``ipython
In [1]: def square(a):
   ...:     """a의 제곱을 반환합니다"""
   ...:     return a ** 2

In [2]: square(2)
Out[2]: 4

Ctrl-p/Ctrl-n이나 위쪽/아래쪽 화살표 키로도 비슷하게 검색할 수 있지만, 이때는 줄의 시작 부분이 일치해야 합니다. 예를 들어 def를 입력하고 Ctrl-p를 누르면 기록에서 def로 시작하는 가장 최근 명령어를 찾습니다.

기타 단축키

마지막으로 이전 범주에는 속하지 않지만 알아두면 유용한 몇 가지 단축키입니다.

단축키 동작
Ctrl-l 터미널 화면 지우기
Ctrl-c 현재 실행 중인 파이썬 명령 중단
Ctrl-d IPython 세션 종료

특히 Ctrl-c는 실수로 너무 오래 걸리는 작업을 시작했을 때 매우 유용합니다.

여기서 소개한 단축키들이 처음에는 생소할 수 있지만, 연습하다 보면 금방 손에 익을 것입니다. 일단 ’근육 기억’이 형성되면 다른 환경에서도 이 단축키들을 쓰고 싶어질 만큼 편리함을 느끼게 될 것입니다.