コンテンツにスキップ

ターミナル

画面の下にターミナルパネルがあります。

開く・閉じる

方法 動作
Ctrl+` 表示を切り替える
Ctrl+J 表示を切り替える(ターミナルにフォーカスがないときだけ)
Space t(Helix モード) 表示を切り替える
:sh <コマンド> ターミナルを開いてコマンドを実行する

中身

  • ログインシェル($SHELL -l)が PTY の上で動きます。.zshrc なども読み込みます。
  • vim、top、lazygit のような全画面のプログラムも動きます。
  • マウスのホイールで、流れた出力をさかのぼれます。

キー

フォーカスがターミナルにあるとき、ほとんどのキーはシェルへ渡ります。 shijimi が受け取るキーは次のとおりです。

キー 動作
Ctrl+Q shijimi を終了
Ctrl+` ターミナルを閉じる
Alt+R リサイズモード(画面の見方)
F1 コマンドパレット

ターミナルは 1 つだけです。複数のターミナルが必要なら、herdr や tmux などのマルチプレクサを使ってください。シェルが終了するとパネルが閉じ、次に開いたときに新しいシェルが起動します。

コピー

マウスで選ぶ

ターミナルの中をマウスの左ボタンでドラッグすると、その範囲の文字を選べます。 ボタンを離すと、選んだ文字がクリップボードに入ります。

  • マウスを使うプログラム(vim、htop、tmux など)が動いているときは、Shift を押しながらドラッグします。
  • ドラッグ中にポインタをターミナルの上または下へ出すと、流れた出力をさかのぼって選べます。
  • キーを押すか、ターミナルの中をクリックすると、選択は消えます。

プログラムからのコピー

ターミナルの中のプログラム(Claude Code、tmux など)が OSC 52 でコピーすると、その文字が shijimi のクリップボードに入ります。

  • コピーが起きると、ステータスバーに「ターミナルから N 文字をコピーしました」と出ます。
  • 外側のターミナルにも OSC 52 で送ります。SSH 越しでも、手元のクリップボードに入ります(外側のターミナルが OSC 52 に対応している場合)。
  • 約 1.5 MB を超えるコピーは受け取りません。ステータスバーにエラーが出ます。

ターミナルマルチプレクサの中で

ターミナルマルチプレクサの中で shijimi を動かしていて、[experimental] の multiplexer が true(設定ファイル)で、そのマルチプレクサに対応しているとき、ターミナル系のコマンドはターミナルパネルの代わりにマルチプレクサのペインを使います。ペインの中で動かしたエージェントの状態検出・通知・復元はマルチプレクサに任せられます。どのマルチプレクサを使うかは [terminal] の multiplexer で決めます(既定は "auto" で、shijimi の親プロセスのうち一番内側のマルチプレクサを使います。"none" ならいつもターミナルパネルです)。今は herdr(HERDR_ENV=1)・tmux 3.1 以降(TMUX あり)・zellij 0.44 以降(ZELLIJ あり)・macOS の cmux(CMUX_WORKSPACE_ID と CMUX_SURFACE_ID あり)に対応しています。対応するマルチプレクサが無いとき、multiplexer = false のとき、"none" のときは、今までと変わりません。この節の以降は herdr・tmux・zellij・cmux の説明です。特に書かない限り同じように動きます。

方法 動作
Ctrl+` / Space t / :sh 初回は shijimi のペインの真下にペインを作り、焦点を移す。以降はペインを隠す、または再表示して焦点を移す
Ctrl+J ペインを表示して焦点を移す
:sh <コマンド> ペインを表示してコマンドを実行する
Space a / Alt+A ペインに文脈を貼る(Enter は送らない)
shj exec ":sh hide" ペインを隠す。ペインの中で実行する。マルチプレクサのキーに割り当てられる
  • ペインは shijimi のペインのズームで隠します(tmux では resize-pane -Z、zellij では toggle-fullscreen)。cmux にはズームが無いので、隠す操作は shijimi へフォーカスを戻すだけで、ペインは画面に残ります。cmux ではペインのシェルを起動するコマンドをペインに打ち込むので(cd <root> && exec env ...)、それが見えます。新しいペインは高さの 30% を取ります(zellij と cmux はタイル状のペインの大きさを決められないので半分です)。zellij はどの操作も --pane-id でペインを指すので、フォーカスの位置に左右されません。tmux で remain-on-exit により残っている終了済みのペインは、終わったものとして扱い、新しく作ります。
  • ペインはワークスペースの root で始まり、ターミナルパネルと同じ環境変数が入るので、そこで起動した claude は IDE 連携につながります。
  • ペインを終わらせるには、そのシェルで exit するか、マルチプレクサのキー(herdr は Ctrl+B x、tmux はプレフィックスのあと x、zellij は Ctrl+P のあと x、cmux は cmux 自身のキーで surface を閉じる)を使います。そのあとの Ctrl+` で新しいペインを作ります。shijimi を終了すると、作ったペインを閉じます。
  • ペインから shijimi へ戻るには、マルチプレクサのキー(herdr は既定で Ctrl+B k、tmux はプレフィックスのあと矢印キーか select-pane -U、zellij は既定で Alt+Up、cmux はペイン移動の cmux のキー)を使います。shijimi 自身のキー(Ctrl+Q・Ctrl+`・Alt+R・F1)はペインの中では効きません。
  • ペインの画面・スクロール・マウスでのコピー・OSC 52 はマルチプレクサのものです。「ターミナルから N 文字をコピーしました」のメッセージは出ません。
  • ペインのシェルは、コマンドごとの終了コードを shj command-end <終了コード> で知らせるので、失敗したコマンドを調べる提案は今までどおり出ます。zsh と bash で動きます。bash は PROMPT_COMMAND で hook を渡すので、起動ファイルが PROMPT_COMMAND を置き換えると働きません。
  • マルチプレクサのコマンドが失敗したときは、ステータスバーにエラーが出ます。

環境変数

ターミナルパネルのシェルには SHIJIMI_SOCKET が設定されます。 これを使って、シェルから shijimi を操作できます。 無いときは、shj が起動中の shijimi を自分で探します(AI エージェント連携 にあります)。 Claude Code の IDE 連携のために、CLAUDE_CODE_SSE_PORT、ENABLE_IDE_INTEGRATION=true、FORCE_CODE_TERMINAL=true も設定されます。 詳しくは AI エージェント連携 にあります。