터미널
Zshell 터미널 백엔드, 셸 환경, 링크 처리, 알림과 안전 기능.
모든 터미널 분할 창은 실제 로그인 셸을 실행하며 네이티브 GPU 가속 백엔드 두 가지 중 하나를 사용합니다. 분할 창 포커스, 검색, 알림, 링크, 기록, 테마와 붙여넣기 안전 기능은 Zshell이 관리하므로 어느 에뮬레이터를 선택해도 일관되게 동작합니다.
터미널 백엔드
설정 → 터미널 → 백엔드에서 선택하세요.
| 백엔드 | 설명 |
|---|---|
| Ghostty | 기본값 |
| Alacritty | 일반적으로 더 적은 메모리 사용 |
두 백엔드 모두 GPU 가속, 이미지 렌더링, Zshell 공통 테마 목록, 찾기, 마우스 보고, 알림과 진행률 보고를 지원합니다. 백엔드를 바꾸면 새 터미널에만 적용되며 기존 분할 창은 시작할 때 사용한 에뮬레이터를 유지합니다.
기존 셸을 그대로
각 세션은 계정의 로그인 셸을 시작하므로 프롬프트, 별칭, 함수와 dotfile은 다른 터미널에서와 같이 불러옵니다. Zshell은 기능과 식별용 변수를 추가합니다.
| 변수 | 값 |
|---|---|
TERM_PROGRAM | ghostty |
TERM_PROGRAM_VERSION | Zshell이 구현하는 Ghostty 기능 버전 |
ZSHELL_TERM | 실제 분할 창 백엔드인 ghostty 또는 alacritty |
이미지와 알림을 지원하는 CLI가 기능 힌트로 사용하므로 두 백엔드 모두 TERM_PROGRAM을 통해 Ghostty로 식별합니다. 렌더러를 실제로 구분해야 할 때만 ZSHELL_TERM을 사용하세요.
Zshell은 ~/.config/ghostty나 Alacritty 설정을 읽지 않습니다. 글꼴, 색상, 입력 동작과 백엔드는 Zshell 자체 설정에서 구성합니다.
Dock이나 Finder에서 시작하면 로그인 대화형 셸의 SSH_AUTH_SOCK을 읽어 dotfile에서 선택한 SSH agent를 사용합니다. 터미널에서 시작하면 유효하게 상속된 agent를 유지합니다.
시스템 권한
Zshell 터미널의 로컬 프로그램은 카메라나 마이크 접근 또는 Apple Events를 통한 다른 앱 제어를 요청할 수 있습니다. macOS는 이 요청을 Zshell의 요청으로 처리합니다. 신뢰하는 프로그램만 허용하세요. 자동화 권한은 제어할 대상 앱마다 따로 허용해야 합니다.
시스템 설정 → 개인정보 보호 및 보안 → 카메라, 마이크 또는 자동화에서 접근 권한을 관리하세요. 요청을 거부하면 해당 기능을 사용할 수 없습니다. Zshell은 이 권한을 자동으로 부여하지 않습니다.
마우스를 따라가는 포커스
설정 → 터미널 → 동작 → 마우스를 따라가는 포커스를 켜면 포인터가 들어간 터미널로 포커스가 이동합니다. 기본값은 꺼짐이며 두 백엔드와 빠른 터미널을 지원합니다. 드래그 중, 편집기에 포커스가 있을 때, 메뉴나 대화상자가 열렸을 때는 이동하지 않습니다.
terminal.focus-follows-mouse = true
검색
| 작업 | 단축키 |
|---|---|
| 찾기 | Cmd+F |
| 다음 찾기 | Cmd+G |
| 이전 찾기 | 찾기 막대에서 Shift+Return |
| 선택 항목으로 찾기 | Cmd+E |
| 터미널 지우기 | Cmd+K |
찾기는 포커스된 터미널이나 편집기 분할 창에 적용되며 검색 입력란이 키보드 포커스를 가진 동안 활성 상태를 유지합니다.
프롬프트 편집
활성 셸 프롬프트 안을 클릭하면 입력 커서가 그 위치로 이동하며 이어서 입력할 수 있습니다. zsh 프롬프트에서는 입력 위를 드래그해 범위를 선택할 수 있습니다. 타이핑하면 선택 영역을 바꾸고 Backspace나 Delete는 삭제합니다. 두 번 또는 세 번 클릭하면 기존처럼 터미널 텍스트를 선택합니다. 전체 화면 TUI처럼 마우스 보고를 켠 프로그램은 자체 마우스 이벤트를 계속 받습니다.
중첩되거나 대체된 셸에 Zshell의 프롬프트 편집 지원이 로드되지 않았다면 드래그는 복사용 터미널 텍스트만 선택하고 입력을 편집하지 않습니다. 원래 프롬프트로 돌아오면 입력 선택 편집이 다시 작동합니다.
Claude Code의 기본 입력란은 두 백엔드 모두에서 클릭으로 위치 이동과 드래그 편집을 지원하며 자동 줄바꿈 및 여러 줄 초안도 포함됩니다. 입력하거나 붙여넣으면 선택한 입력을 바꾸고 Backspace나 Delete로 지울 수 있습니다. Vim 일반/비주얼 모드, 대화상자, 첨부 파일이나 접힌 붙여넣기 자리표시자, 스크롤된 대화 기록은 기존 터미널 선택 동작을 유지합니다. 마우스를 잡는 앱은 자체 입력 처리를 계속합니다.
Zisla 음성 입력은 터미널의 붙여넣기 동작을 사용합니다. Claude Code에서는 선택된 입력 범위도 대체하며 의도적으로 같은 문구를 반복하는 것도 지원합니다.
포그라운드 앱 단축키
터미널 앱 단축키가 Zshell과 충돌하면 분할 창을 오른쪽 클릭하고 Zshell 명령 차단을 켜세요. 해당 창이 키보드 포커스를 가진 동안 Ctrl+Return을 포함한 조합키가 포그라운드 앱으로 전달됩니다. 복사, 붙여넣기와 전체 선택은 계속 사용할 수 있습니다.
이 설정은 해당 분할 창에만 적용됩니다. 다시 오른쪽 클릭해 체크 표시를 해제하면 Zshell 단축키가 복원됩니다. 앱이 마우스를 잡고 있다면 Shift 키를 누른 채 오른쪽 클릭하여 Zshell 메뉴를 여세요.
프롬프트 대기열
터미널에 포커스를 둔 뒤 Cmd+Shift+M를 누르거나 명령 팔레트의 프롬프트 대기열 전환을 선택하세요. 해당 터미널 아래에 막대가 열립니다. 항목을 입력하고 Return 또는 대기열에 추가를 누릅니다. 각 항목은 한 줄이며 붙여넣은 줄바꿈은 공백으로 바뀝니다.
원래 zsh가 빈 셸 프롬프트로 돌아오면 Zshell이 다음 항목을 보내고 Return을 누릅니다. 항목은 대기열 순서대로 실행됩니다. 에이전트나 다른 포그라운드 프로그램이 터미널을 사용 중이거나 셸 프롬프트에 초안이 있으면 자동 전송은 기다립니다. Zshell의 zsh 통합이 필요하며 다른 셸과 중첩 셸에서는 수동 전송을 사용할 수 있습니다.
각 항목에는 지금 보내기와 제거 버튼이 있습니다. 지금 보내기는 셸 프롬프트를 기다리지 않고 현재 터미널 프로그램에 텍스트와 Return을 즉시 보냅니다. Esc 또는 닫기 버튼은 항목을 유지한 채 막대를 숨깁니다. 각 터미널은 독립적인 대기열을 가지며 세션을 닫거나 Zshell을 종료하면 대기열은 버려집니다.
경로와 URL
Zshell은 터미널 프로그램이 출력한 웹 URL과 실제로 존재하는 로컬 경로를 인식합니다. 로컬 링크는 절대 경로, ~/ 상대 경로, ./ 또는 ../ 상대 경로, 분할 창의 현재 작업 디렉터리에 대한 상대 경로일 수 있습니다. :42나 :42:7 같은 진단용 접미사가 붙어도 원래 파일을 찾을 수 있습니다.
- 로컬 경로를 Command 키를 누른 채 클릭하면 Finder에서 보여 주고 URL은 기본 브라우저에서 엽니다.
- 경로를 Command 키를 누른 채 오른쪽 클릭하면 새 파일 탭 / 새 파일 분할 창, URL이라면 새 브라우저 탭 / 새 브라우저 분할 창을 선택할 수 있습니다.
- 마우스 보고를 켠 전체 화면 프로그램은 보조 키 없이 오른쪽 클릭한 이벤트를 받습니다. Shift를 누른 채 오른쪽 클릭하면 대신 Zshell 터미널 및 분할 창 메뉴를 엽니다.
컴파일러 출력과 에이전트 기록에서 같은 프로젝트로 바로 돌아갈 수 있습니다. 브라우저 동작은 브라우저 분할 창에서 설명합니다.
알림
Zshell은 두 종류의 터미널 이벤트를 알림 센터로 전달합니다.
- 포커스되지 않은 세션에서 울린 벨
- 오래 실행되는 빌드나 코딩 에이전트 같은 프로그램의
OSC 777;notify요청
알림은 시스템 소리를 재생할 수 있습니다. 클릭하면 Zshell이 활성화되고 알림을 보낸 정확한 세션으로 이동합니다. macOS는 앱 시작 시가 아니라 터미널이 처음 알림을 보내려고 할 때 권한을 요청합니다.
명령 완료
설정 → 터미널 → 명령 알림에서 명령이 끝날 때 알리도록 설정하세요.
- 오래 실행되는 명령: 5, 10, 30 또는 60초를 선택합니다. 그 시간 이상 실행된 명령이 끝나면 완료 알림을 보냅니다. 기본값은 꺼짐입니다.
- 실패한 명령: 실행 시간과 관계없이 0이 아닌 종료 상태를 알립니다. 새 설정에서는 기본적으로 켜져 있으며 독립적으로 끌 수 있습니다.
두 백엔드 모두에서 설정 변경 후 만드는 zsh 터미널에 적용됩니다. 원래 셸의 명령 완료 이벤트를 사용하므로 중첩 셸이나 대화형 프로그램 안에서 실행한 명령은 이 통합을 통해 개별 완료를 보고하지 않습니다.
같은 설정을 ~/.config/zshell/config.toml에 저장할 수도 있습니다.
terminal.notify-finish-seconds = 30
terminal.notify-on-error = true실행 시간 기준 알림을 끄려면 terminal.notify-finish-seconds를 0으로 설정하세요. 알림 전달은 macOS 알림 설정을 따릅니다.
진행률 보고
OSC 9;4 진행률을 출력하는 프로그램에는 터미널 위에 얇은 막대가 나타나며 일반, 일시 정지와 오류 상태를 구분합니다. 별도로 켤 필요 없이 프로그램이 진행률을 보고하면 창에 표시됩니다.
클립보드, 드롭과 안전한 붙여넣기
- 클립보드 읽기는 확인을 받습니다.
OSC 52로 macOS 클립보드를 요청할 수 있으며 SSH로 연결된 원격 호스트도 가능합니다. Zshell은 내용을 돌려주기 전에 확인을 요청합니다. - 위험할 수 있는 붙여넣기는 표시합니다. 여러 줄이나 명령처럼 보이는 텍스트는 즉시 제출하지 않고 확인을 기다립니다.
- 파일과 스크린샷은 셸에 안전한 경로가 됩니다. Finder 파일은 인용된 절대 경로로 삽입됩니다. 이미지만 있는 클립보드는 비공개 임시 PNG로 저장한 뒤 터미널 프로그램에 경로를 붙여넣습니다. 원격 창구는 파일과 스크린샷을 호스트에 먼저 업로드합니다.
Option 키 입력
기본적으로 Option은 활성 macOS 입력 소스에 맡겨 Polish Pro 같은 배열에서 조합 문자를 입력할 수 있게 합니다. 터미널 프로그램에 Option 조합을 Meta 단축키로 보내려면 설정에서 Option을 Alt/Meta로 사용을 켜세요. terminal.macos-option-as-alt를 참고하세요.
zshell 명령
모든 Zshell 터미널에는 프로젝트를 인식하는 CLI가 포함됩니다.
zshell # 현재 디렉터리에 프로젝트 생성
zshell vim ~/src/app.swift # 프로젝트를 만들고 첫 터미널에서 이 argv 실행
zshell +themes # 테마를 대화형으로 탐색하고 미리보기
zshell +themes --list --dark # 탐색기를 열지 않고 테마 이름 출력
zshell +help # 모든 명령 그룹 표시테마 탐색기는 선택한 테마를 앱 전체에서 미리 보여 줍니다. Return은 저장하고 Escape는 이전 테마를 복원합니다.
글꼴
Zshell은 JetBrains Mono와 Nerd Font 기호를 기본 제공합니다. 설치된 고정폭 글꼴 모음으로 라틴 글꼴을 대체할 수 있으며, 설치된 CJK 글꼴을 기호 및 시스템 대체 글꼴 앞에 추가할 수 있습니다. font-family, terminal.font-fallback-family, font-size, terminal.font-thicken와 terminal.line-height를 참고하세요.
전역 빠른 터미널
Zshell 실행 중 Cmd+I 또는 터미널 → 빠른 터미널로 독립 터미널을 표시하거나 숨길 수 있습니다. 설정 → 터미널 → 빠른 터미널에서 크기, 불투명도와 단축키를 조절하세요.
세션 동작: 작업 공간 재사용 (기본값) / 매번 새 작업 공간. 재사용 모드는 창과 작업을 유지합니다. 새 작업 공간은 숨길 때 종료됩니다. 모드 변경은 다음 표시부터 적용되며 다시 전환하면 이전 작업 공간을 이어갈 수 있습니다. 명령 기록은 셸 설정을 따릅니다. 새 작업 공간은 항상 빈 터미널 하나로 시작하며 이전 출력, 분할 배치나 세션 상태를 복원하지 않습니다.
도구 모음의 오른쪽으로 분할 / 아래로 분할, 터미널 우클릭 메뉴 또는 Cmd+D / Cmd+Shift+D로 분할합니다. 아래 유지 동작은 분할 비율과 포커스를 포함한 재사용 작업 공간에 적용됩니다.
- 단축키, Esc, 바깥 클릭이나 포커스 손실은 창만 숨깁니다. 같은 셸, 입력 내용, 스크롤 기록과 실행 중인 작업이 유지됩니다.
- 창을 고정하면 앱을 전환해도 계속 표시됩니다. 크기, 불투명도와 고정 상태는 숨긴 뒤에도 유지됩니다.
- 셸에서
exit를 실행하면 세션이 끝나며, 다시 열면 새 셸이 시작됩니다.
새 빠른 터미널을 열기 전에 terminal.preserve-sessions를 켜면 Zshell을 정상 종료한 후에도 계속 실행됩니다. 앱을 다시 실행하고 빠른 터미널을 열면 두 백엔드 모두 같은 셸에 재연결됩니다. Zshell → 종료 및 모든 세션 끝내기는 숨겨진 세션도 끝냅니다. macOS를 재시작하면 세션이 끝납니다.
명령을 저장하고 실행하는 빠른 실행은 별도의 기능입니다.
Vim 명령 힌트
설정 → 터미널 → 동작 → Vim 명령 힌트에서 조정한 다음 오른쪽 사이드바의 정보 탭을 여세요. Vim, Vi 또는 Neovim이 활성화되면 세션 정보 아래에 VIM 명령 구역이 나타납니다. 새 설정에서는 기본적으로 켜져 있으며 두 백엔드의 기존 터미널에도 즉시 적용됩니다.
자주 사용하는 명령의 전체 목록은 그대로 제공되고 우선순위만 바뀝니다. 일반 모드에서는 :w, :q, yy와 p/P가 먼저 나오고, 비주얼 블록 모드에서는 I/A, 블록 변경과 모서리 이동이 먼저 나옵니다. 삽입, 바꾸기, 비주얼, 비주얼 라인, 선택, 명령줄과 검색 모드에도 각각 순서가 있습니다. 각 항목은 적용 가능한 모드를 표시합니다. 키, 설명이나 모드 이름으로 검색하세요. 설명과 검색 UI는 앱의 17개 언어를 따릅니다. 검색어를 지우면 전체 목록으로 돌아옵니다. 힌트는 참고용이며 편집기에 입력을 보내지 않습니다.
로컬 편집기는 포그라운드 실행 파일로 식별합니다. SSH, Mosh 또는 터미널 멀티플렉서 안에서는 원격 플러그인을 설치하지 않고 화면에 보이는 Vim 모드/상태 표시줄과 화면 배치로 감지합니다. Vim의 showmode나 인식할 수 있는 상태 표시줄을 켜 두세요. 모드 이름을 숨기거나 바꾸는 설정은 일반 모드 힌트로 돌아가거나 원격 감지를 막을 수 있으며 사용자 지정 매핑은 해석하지 않습니다. 활성 정보 패널만 샘플링하며 포그라운드 프로그램이 바뀌거나 편집기를 더 이상 인식할 수 없으면 힌트가 사라집니다.
설정 파일의 terminal.vim-command-hints = true로 켤 수도 있습니다.