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는 실수로 너무 오래 걸리는 작업을 시작했을 때 매우 유용합니다.
여기서 소개한 단축키들이 처음에는 생소할 수 있지만, 연습하다 보면 금방 손에 익을 것입니다. 일단 ’근육 기억’이 형성되면 다른 환경에서도 이 단축키들을 쓰고 싶어질 만큼 편리함을 느끼게 될 것입니다.