CLI 편집
CLI 편집 (Editing)
DuckDB CLI는 linenoise 기반의 줄 편집(line-editing) 라이브러리를 사용해요. 단축키는 readline의 Emacs 모드를 기반으로 해요. CLI를 더 빠르게 다루고 싶다면 아래 단축키를 익혀 볼까요?
출처: 문서
본문
linenoise 기반 CLI 편집기는 macOS, Linux, Windows에서 사용할 수 있어요.
DuckDB의 CLI는 linenoise 기반의 줄 편집 라이브러리를 사용하며, 단축키는 readline의 Emacs 모드를 기반으로 해요. 아래는 사용 가능한 명령 목록이에요. CLI 안에서 .help shortcuts를 입력해도 이 단축키들을 볼 수 있어요.
이동 (Moving)
| 키 | 동작 |
|---|---|
Left |
한 글자 뒤로 이동 |
Right |
한 글자 앞으로 이동 |
Up |
위 줄로 이동. 첫 줄에 있을 때 이전 히스토리 항목으로 이동 |
Down |
아래 줄로 이동. 마지막 줄에 있을 때 다음 히스토리 항목으로 이동 |
Home |
버퍼의 시작으로 이동 |
End |
버퍼의 끝으로 이동 |
Ctrl+Left |
한 단어 뒤로 이동 |
Ctrl+Right |
한 단어 앞으로 이동 |
Ctrl+A |
버퍼의 시작으로 이동 |
Ctrl+B |
한 글자 뒤로 이동 |
Ctrl+E |
버퍼의 끝으로 이동 |
Ctrl+F |
한 글자 앞으로 이동 |
Alt+Left |
한 단어 뒤로 이동 |
Alt+Right |
한 단어 앞으로 이동 |
히스토리 (History)
| 키 | 동작 |
|---|---|
Ctrl+P |
이전 히스토리 항목으로 이동 |
Ctrl+N |
다음 히스토리 항목으로 이동 |
Ctrl+R |
히스토리 검색 |
Ctrl+S |
히스토리 검색 |
Alt+< |
첫 히스토리 항목으로 이동 |
Alt+> |
마지막 히스토리 항목으로 이동 |
Alt+N |
히스토리 검색 |
Alt+P |
히스토리 검색 |
텍스트 변경 (Changing Text)
| 키 | 동작 |
|---|---|
Backspace |
이전 글자 삭제 |
Delete |
다음 글자 삭제 |
Ctrl+D |
다음 글자 삭제. 버퍼가 비어 있으면 편집 종료 |
Ctrl+H |
이전 글자 삭제 |
Ctrl+K |
커서 이후의 모든 내용 삭제 |
Ctrl+T |
현재 글자와 다음 글자 바꾸기 |
Ctrl+U |
모든 텍스트 삭제 |
Ctrl+W |
이전 단어 삭제 |
Alt+C |
다음 단어를 titlecase로 변환 |
Alt+D |
다음 단어 삭제 |
Alt+L |
다음 단어를 소문자로 변환 |
Alt+R |
모든 텍스트 삭제 |
Alt+T |
현재 단어와 다음 단어 바꾸기 |
Alt+U |
다음 단어를 대문자로 변환 |
Alt+Backspace |
이전 단어 삭제 |
Alt+\ |
커서 주변의 공백 삭제 |
자동 완성 (Completing)
| 키 | 동작 |
|---|---|
Tab |
자동 완성. 자동 완성 중에는 다음 항목으로 순환 |
Shift+Tab |
자동 완성 중에는 이전 항목으로 순환 |
Esc+Esc |
자동 완성 중에는 자동 완성 되돌리기 |
기타 (Miscellaneous)
| 키 | 동작 |
|---|---|
Enter |
쿼리 실행. 쿼리가 완전하지 않으면 버퍼 끝에 개행 삽입 |
Ctrl+J |
쿼리 실행. 쿼리가 완전하지 않으면 버퍼 끝에 개행 삽입 |
Ctrl+C |
현재 쿼리 편집 취소 |
Ctrl+G |
현재 쿼리 편집 취소 |
Ctrl+L |
화면 지우기 |
Ctrl+O |
현재 쿼리 편집 취소 |
Ctrl+X |
커서 뒤에 개행 삽입 |
Ctrl+Q, then click |
마우스 클릭 위치로 커서 이동 |
Ctrl+Z |
CLI를 중단하고 셸로 복귀, fg로 다시 열기 |
외부 편집기 모드 (External Editor Mode)
.edit 또는 \e를 사용하면 외부 텍스트 편집기에서 쿼리를 열 수 있어요.
- 단독으로 입력하면 이전 명령을 편집용으로 열어요.
- 멀티라인 명령 안에서 쓰면 현재 명령을 편집기에서 열어요.
편집기는 DUCKDB_EDITOR, EDITOR, VISUAL 중 첫 번째로 설정된 환경 변수에서 가져와요(그 순서대로). 아무것도 설정되지 않으면 vi를 사용해요.
Read-Line 사용하기
선호한다면 rlwrap을 사용해 셸에서 직접 read-line을 쓸 수 있어요. 그런 다음 Shift+Enter로 개행을 넣고 Enter로 쿼리를 실행하면 돼요:
rlwrap --substitute-prompt="D " duckdb -batch