# 14. 대화형 입력 편집 및 히스토리 치환

일부 파이썬 인터프리터 버전은 Korn 셸 및 GNU Bash 셸에 있는 기능과 유사하게 현재 입력 줄 편집 및 히스토리 치환을 지원합니다. 이는 다양한 스타일의 편집을 지원하는 GNU Readline 라이브러리를 사용하여 구현됩니다. 이 라이브러리에는 자체 설명서가 있고, 여기에서 반복하지는 않습니다.

## 14.1. 탭 완성 및 히스토리 편집

변수와 모듈 이름의 완성은 인터프리터 시작 시 자동으로 활성화 되어서 `Tab` 키가 완료 기능을 호출합니다; 파이썬 명령문 이름, 현재 지역 변수 및 사용 가능한 모듈 이름을 찾습니다. `string.a` 와 같은 점으로 구분된 표현식의 경우, 표현식을 마지막 `'.'` 까지 값을 구한 다음, 결과 객체의 어트리뷰트로 완성을 제안합니다. `__getattr__()` 메서드를 가진 객체가 표현식의 일부면 응용 프로그램이 정의한 코드를 실행할 수 있음에 주의해야 합니다. 기본 설정은 사용자 디렉터리에 `.python_history` 라는 파일로 히스토리를 저장합니다. 다음 대화형 인터프리터 세션에서 히스토리를 다시 사용할 수 있습니다.

## 14.2. 대화형 인터프리터 대안

이 기능은 이전 버전의 인터프리터에 비교했을 때 엄청난 발전입니다; 그러나, 몇 가지 아쉬움이 남습니다: 이어지는 줄에 적절한 들여쓰기가 제안된다면 좋을 것입니다 (구문 분석기는 다음에 들여쓰기(`INDENT`) 토큰이 필요한지 알 수 있습니다). 완성 메커니즘은 인터프리터의 심볼 테이블을 사용할 수 있습니다. 일치하는 괄호, 따옴표 등을 검사하는 (또는 제안하는) 명령도 유용할 것입니다.

꽤 오랫동안 사용됐던 개선된 대화형 인터프리터는 IPython 인데, 탭 완성, 객체 탐색 및 고급 히스토리 관리 기능을 갖추고 있습니다. 또한, 철저하게 커스터마이즈해서 다른 응용 프로그램에 내장할 수 있습니다. 비슷한 또 다른 개선된 대화형 환경은 bpython 입니다.