zshell

ターミナル

Zshell のターミナルバックエンド、シェル環境、リンク、通知、安全機能。

各ターミナルペインは実際のログインシェルを実行し、GPU アクセラレーション対応の 2 つのネイティブバックエンドのいずれかを使います。 ペインのフォーカス、検索、通知、リンク、履歴、テーマ、貼り付けの安全性は Zshell が管理するため、どちらを選んでも一貫した動作になります。

ターミナルバックエンド

設定 → ターミナル → バックエンド(Backend)で選びます。

バックエンド補足
Ghostty標準設定
Alacritty一般にメモリ使用量が少なめ

両方とも GPU アクセラレーション、画像描画、Zshell 共通のテーマ一覧、検索、マウスレポート、通知、進捗報告に対応します。 変更は新しいターミナルにだけ適用され、既存ペインは起動時のエミュレータを使い続けます。

シェルはそのまま

各セッションはアカウントのログインシェルを起動するため、プロンプト、エイリアス、関数、設定ファイルは通常のターミナルと同様に読み込まれます。 Zshell は機能と識別のため、次の変数を追加します。

変数値
TERM_PROGRAMghostty
TERM_PROGRAM_VERSIONZshell が実装する Ghostty の互換機能バージョン
ZSHELL_TERM実際のペインのバックエンドである ghostty または alacritty

画像や通知に対応した CLI が機能の手掛かりに使うため、両バックエンドとも TERM_PROGRAM では Ghostty を名乗ります。 描画エンジンを区別する必要がある場合だけ ZSHELL_TERM を使ってください。

Zshell は ~/.config/ghostty や Alacritty の設定を読み込みません。フォント、色、入力動作、バックエンドは Zshell 自身の設定で管理します。

Dock や Finder から起動すると、対話型ログインシェルの SSH_AUTH_SOCK を読み込み、dotfiles で選んだ 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 コマンドをブロック(Block Zshell Commands)を有効にします。 そのペインにキーボードフォーカスがある間、Ctrl+Return などの修飾キー付き入力は前面のアプリへ渡します。コピー、貼り付け、すべて選択は引き続き使用できます。

設定はそのペインにだけ適用します。再び右クリックしてチェックを外すと、Zshell のショートカットに戻ります。 アプリがマウスを捕捉する場合は、Shift を押しながら右クリックして Zshell のメニューを開いてください。

プロンプトキュー

ターミナルにフォーカスして Cmd+Shift+M を押すか、コマンドパレットのプロンプトキューを切り替え(Toggle Prompt Queue)を選びます。 そのターミナルの下にバーが開きます。項目を入力して Return またはキューに追加(Add to Queue)を押します。各項目は 1 行で、貼り付けた改行は空白に置き換えます。

元の zsh が空のプロンプトに戻ると、Zshell は次の項目と Return を送信します。項目はキュー順に実行されます。 エージェントなど別の前面プログラムがターミナルを使っている間や、プロンプトに下書きがある間は自動送信を待ちます。 自動送信には Zshell の zsh 連携が必要です。ほかのシェルや入れ子のシェルでは手動送信を使えます。

各項目には今すぐ送信(Send Now)と削除(Remove)があります。 今すぐ送信は、プロンプトを待たず現在のターミナルプログラムへ即座にテキストと Return を送ります。 Esc または閉じるボタンでバーを隠しても、キューは残ります。キューはターミナルごとに独立し、セッションを閉じるか Zshell を終了すると破棄されます。

パスと URL

Zshell は、ターミナルプログラムが出力した Web URL と既存のローカルパスを認識します。 ローカルリンクは絶対パス、~/、./、../、またはペインの現在の作業ディレクトリからの相対パスに対応します。:42 や :42:7 といった診断用の接尾辞があっても、元のファイルを見つけられます。

  • ローカルパスを Command クリックすると Finder に表示し、URL ならデフォルトのブラウザで開きます。
  • パスを Command 右クリックすると新規ファイルタブ/新規ファイルペイン(New File Tab / New File Pane)、URL なら新規ブラウザタブ/新規ブラウザペイン(New Browser Tab / New Browser Pane)を選べます。
  • マウスレポートを有効にする全画面プログラムには、修飾なしの右クリックを渡します。Shift を押しながら右クリックすると Zshell のターミナル・ペインメニューを開きます。

コンパイラ出力やエージェントの会話から、同じプロジェクトへ直接戻れます。ブラウザの動作はブラウザペインを参照してください。

通知

Zshell は次の 2 つのターミナルイベントを通知センターへ送ります。

  • フォーカスされていないセッションからのベル
  • 長時間のビルドやコーディングエージェントなどのプログラムからの OSC 777;notify 要求

通知ではシステムサウンドも再生できます。クリックすると Zshell がアクティブになり、通知を出したセッションへ直接移動します。 macOS が通知の許可を求めるのは Zshell 起動時ではなく、ターミナルが初めて通知しようとしたときです。

コマンドの完了

設定 → ターミナル → コマンド通知(Command Notifications)で完了時の通知を設定できます。

  • 長時間コマンド(Long-running commands):5、10、30、60 秒から選択します。その時間以上かかったコマンドの完了時に通知します。標準はオフです。
  • 失敗したコマンド(Failed commands):実行時間にかかわらず、終了ステータスが 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 で進捗を送るプログラムには、ターミナル上部の細いバーで通常・一時停止・エラーの状態を区別して表示します。有効化の操作は不要です。プログラムが報告すればペインに表示されます。

クリップボード、ドロップ、貼り付けの安全性

  • クリップボードの読み取りは確認します。 SSH 越しのリモートホストも OSC 52 で macOS のクリップボードを要求できます。Zshell は返す前に確認します。
  • 危険な貼り付けには確認を出します。 複数行やコマンドらしいテキストはすぐに送信せず、確認を挟みます。
  • ファイルとスクリーンショットは安全に引用したパスになります。 Finder のファイルは絶対パスとして挿入します。画像だけのクリップボードは非公開の一時 PNG に保存し、端末プログラムにそのパスを貼り付けます。リモートペインではファイルや画像を先にホストへアップロードします。

Option キー入力

標準では Option キーを現在の macOS 入力ソースに任せるため、Polish Pro などの配列で合成文字を入力できます。 ターミナルプログラムへ Meta ショートカットとして渡すには、設定の Option を Alt/Meta として使用(Use Option as 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 で以前のテーマに戻ります。

フォント

JetBrains Mono と Nerd Font 記号を同梱しています。インストール済みの等幅フォントを欧文フォントとして選べるほか、CJK フォントを記号・システムの代替フォントより先に追加できます。 font-family、terminal.font-fallback-family、font-size、terminal.font-thicken、terminal.line-heightを参照してください。

グローバルクイックターミナル

Zshell の実行中に Cmd+I または ターミナル → クイックターミナルで、独立したターミナルを表示・非表示にできます。設定 → ターミナル → クイックターミナルでサイズ、不透明度、ショートカットを変更できます。

セッションの動作: ワークスペースを再利用 (既定) / 毎回新しいワークスペース. 再利用ではペインとタスクを保持します。新規ワークスペースは非表示時に終了します。モード変更は次の表示から適用され、切り替えて戻すと以前のワークスペースを再開できます。コマンド履歴はシェル設定に従います。 新規ワークスペースは毎回空のターミナル1つで始まり、以前の出力、ペイン配置、セッション状態を復元しません。

ツールバーの 右に分割 / 下に分割、右クリックメニュー、または Cmd+D / Cmd+Shift+D で分割します。以下の保持動作は再利用モードに適用され、分割比率とフォーカスも保持します。

  • ショートカット、Esc、外側のクリック、フォーカスの喪失ではウィンドウだけを非表示にします。同じシェル、入力、スクロール履歴、実行中のタスクが保持されます。
  • 固定すると、アプリを切り替えても表示したままになります。サイズ、不透明度、固定状態は非表示でも保持されます。
  • シェルで exit を実行するとセッションが終了し、次に開くと新しいシェルが起動します。

新しいクイックターミナルを開く前に terminal.preserve-sessions を有効にすると、Zshell を通常終了しても動作を継続します。再起動後に開くと、どちらのバックエンドでも同じシェルに再接続します。Zshell → 終了してすべてのセッションを停止は非表示のセッションも終了します。macOS の再起動ではセッションが終了します。

コマンドを保存・起動するクイック起動は別の機能です。

Vim コマンドヒント

設定 → ターミナル → 動作 → Vim コマンドヒント(Vim command hints)で切り替え、右サイドバーの情報タブを開きます。 Vim、Vi、Neovim がアクティブな間、セッション情報の下に VIM COMMANDS セクションを表示します。新しい設定では標準でオンになり、両バックエンドの既存ターミナルにも即座に適用されます。

よく使うコマンドの全一覧は常に利用でき、変わるのは優先順位だけです。Normal では :w、:q、yy、p/P、Visual Block では I/A、矩形変更、角への移動が先に並びます。 Insert、Replace、Visual、Visual Line、Select、コマンドライン、検索の各モードにも独自の順序があります。各項目には適用モードを表示します。 キー、説明、モード名で検索でき、説明と検索 UI はアプリの 17 言語に対応します。検索を消すと全一覧に戻ります。 ヒントはリファレンスであり、エディタへ入力を送ることはありません。

ローカルのエディタはフォアグラウンドの実行ファイルで識別します。 SSH、Mosh、ターミナルマルチプレクサ内では、リモートプラグインを入れず、表示中の Vim モード/ステータス行と画面配置で判定します。 Vim の showmode または認識可能なステータス行を有効にしてください。 モード名を隠す・変える設定では Normal のヒントに戻ったり、リモート判定ができなくなったりします。独自のキーマッピングは解釈しません。 アクティブな情報パネルだけをサンプリングし、前面プログラムが変わるかエディタを認識できなくなるとヒントを隠します。

設定ファイルで terminal.vim-command-hints = true を指定しても有効にできます。