統合ターミナル
VMark にはエディタを離れずにコマンドを実行できる組み込みターミナルパネルが搭載されています。
Ctrl + ` を押すとターミナルパネルの表示/非表示を切り替えます。開くとキャレットがシェルに移り、閉じるとキャレットがエディタに戻ります——そのため、マウスに触れずにパネルへ入り、パネルから抜け出せます。
開いているターミナルを非表示にせずにエディタとの間を行き来するには、Ctrl + Shift + `(ターミナルまたはエディターにフォーカス。Windows と Linux では Alt + Shift + `)を押します。どちらの方向にも切り替わり、パネルの表示状態は変えません——ターミナルがたまたま非表示の場合は、何もしないのではなくターミナルを開きます。
セッション
ターミナルは最大 5 つの同時セッションをサポートし、それぞれ独自のシェルプロセスを持ちます。右側の垂直タブバーに番号付きのセッションタブが表示されます。
| アクション | 手順 |
|---|---|
| 新しいセッション | + ボタンをクリック |
| セッションの切り替え | タブ番号をクリック |
| セッションを閉じる | ゴミ箱アイコンをクリック |
| シェルの再起動 | 再起動アイコンをクリック |
| セッション名の変更 | タブをダブルクリックし、名前を入力して Enter を押す(Escape でキャンセル) |
| パネルの位置を反転 | 入れ替えアイコン(↕ / ↔)をクリックすると、ターミナルが現在の軸の反対側に移動します。自動 モードでは、アスペクト比に基づくスマートな切り替え(横長 → 横、縦長 → 下/上)はそのまま維持され、反対側の端が選ばれるだけです。 |
| パネルを最大化 | リサイズハンドルをダブルクリック。もう一度ダブルクリックで元に戻す |
最後のセッションを閉じるとパネルは非表示になりますが、セッションは生き続けます——Ctrl + ` で再度開くと元の場所に戻れます。シェルが正常終了(exit または Ctrl + D)すると、そのタブは自動的に閉じます——最後のタブだった場合はパネルも非表示になります。シェルがエラーで終了した場合は、タブが終了コードを表示したまま開いたままになるので、任意のキーを押して再起動できます。
セッションを閉じると——ゴミ箱アイコン、そのウィンドウを閉じる、VMark を終了する、いずれの方法でも——シェルだけでなく、その中で開始したものがすべて終了します。VMark はシェルのプロセスグループ全体にハングアップシグナル(SIGHUP)を送り、終了するまで最大 1 秒待ってから、残ったものを強制終了(SIGKILL)します。意図的に独自のプロセスグループへ切り離したジョブ(たとえば nohup や setsid を使ったもの)は影響を受けません。Windows にはハングアップの段階がなく、シェルはただちに終了します。
通知: その VMark ウィンドウにフォーカスがないときにターミナルがベルを鳴らすと(例:Claude Code がターンを終えたとき)、VMark はウィンドウのドキュメント名を示した OS 通知を表示します——そのため、複数のウィンドウで Claude Code を実行し、それぞれを見張っていなくても、対応が必要なウィンドウから通知を受け取れます。設定 → ターミナル → 非アクティブ時に通知 で切り替えます(デフォルトでオン。初回使用時に通知の許可を求めます)。同じ非フォーカス時のベル信号は ウィンドウの状態パネル でもそのウィンドウに印を付けるため、どのウィンドウが対応を必要としているかを確認し、そこへ直接移動できます。
各タブには、実行中のプログラムのタイトル(vim や ssh など、ターミナルタイトルを出力するツールが設定するもの)が反映されます。ただし、セッション名を手動で変更した場合は別です——手動の名前変更が常に優先されます。名前を変更するにはタブをダブルクリックします。Enter で確定、Escape で破棄、ほかの場所をクリックすると入力内容が保持されます。空の名前は無視されます。
最大化: パネルのサイズは、エディタに手が届くよう利用可能なスペースの 80 % で止まります。リサイズハンドルをダブルクリックすると、その上限まで一気に広がります。もう一度ダブルクリックすると、保存されているサイズに戻ります。これは表示の切り替えであり、設定したサイズは変わりません。
ここでターミナルを開く: ファイルエクスプローラーで任意のフォルダーを右クリックし、ここでターミナルを開く を選ぶと、そのディレクトリでセッションが開始されます。ほかのセッションがどこにあっても、新しいセッションはそこで開きます。セッションが 5 つあるときは、この項目はグレーアウトされます。
ターミナルセッションとワークスペースレール
ワークスペースレールが有効な場合、レール上の各ワークスペースは独自のターミナルセッションのセットを持ちます。ワークスペースを切り替えると、表示されるターミナルタブが入れ替わります——非表示になったワークスペースのシェルはそのまま残ります。生きたままで、作業ディレクトリも同じ、何も入力されません。元に戻すと同じシェルが再び表示され、見ていたセッションはワークスペースごとに記憶されます。
- 新しいセッションは、作成時にアクティブだったワークスペースに属し、そのワークスペースのルートで開始します。
- 5 セッションの上限と
Terminal 1…5の番号付けは表示中のセットに適用されます——非表示のワークスペースのセッションが、アクティブなワークスペースの枠を消費することはありません。 - セッションのないワークスペースでパネルを開くと、そこに自動的にセッションが 1 つ作成されます。ワークスペースがない(またはディレクトリの基準となる保存済みファイルがない)場合、パネルには代わりにヒントが表示されます。
- レールからワークスペースを閉じたり、独自のウィンドウへ移動したりすると、そのターミナルセッションも一緒に閉じます。
- レールがオフの場合は、すべて従来どおりに動作します。ウィンドウ全体で 1 つのセッションセットを持ち、アイドル状態のシェルはワークスペースの切り替えに
cdで追従します。
キーボードショートカット
これらのショートカットはターミナルパネルにフォーカスがある場合に機能します:
| アクション | ショートカット |
|---|---|
| コピー | Mod + C(選択あり) |
| 貼り付け | Mod + V |
| クリア | Mod + K |
| 検索 | Mod + F |
| 行頭/行末 | Cmd + ← / Cmd + →(macOS) |
| 行を削除 | Cmd + ⌫(macOS) |
| ターミナルのフォントを拡大縮小 | Mod + = / Mod + - / Mod + 0 |
| ターミナルの出力をすべて選択 | Mod + A |
| セッション 1 … 5 に切り替え | Mod + 1 … Mod + 5 |
| ターミナルの切り替え | Ctrl + ` |
| ターミナルまたはエディターにフォーカス | Ctrl + Shift + ` |
| 前のコマンドプロンプト | Mod + ↑ |
| 次のコマンドプロンプト | Mod + ↓ |
ターミナルにフォーカスがあるとき、Mod + = / - / 0 はエディタのフォントではなくターミナルのフォント(ターミナル設定で別途設定)を拡大縮小し、Mod + F はエディタの検索バーではなくターミナルの検索を開きます。
プロンプト間の移動(Mod + ↑ / Mod + ↓)にはシェル統合が必要です——後述のシェル統合を参照してください。
Linux: Ctrl + 英字キーはシェルに渡されるため、Ctrl + A、Ctrl + E、Ctrl + K、Ctrl + F、Ctrl + U、Ctrl + W などの readline キーは他の Linux ターミナルと同じように使えます。ターミナル独自の英字ショートカットは Ctrl + Shift に移ります:Ctrl + Shift + F で検索、Ctrl + Shift + K でクリア、Ctrl + Shift + A で全選択、Ctrl + Shift + C / Ctrl + Shift + V でコピーと貼り付け。Ctrl + C は選択があればコピーし(なければ SIGINT を送信)、Ctrl + V は貼り付けのままです。Ctrl + Insert / Shift + Insert でもコピーと貼り付けができます。
TIP
テキスト選択なしの Mod + C は実行中のプロセスに SIGINT を送信します——通常のターミナルで Ctrl+C を押すのと同じです。
履歴を読みながら入力する
上にスクロールして以前の出力を読みながら入力を続けられます。表示位置はそのまま保たれ、ターミナル下部にフローティングプロンプトが現れて、入力中の行(シェルのプロンプト、または Claude Code などの TUI の入力欄)をリアルタイムに映します。キー入力は引き続きシェルに届くため、Tab 補完・履歴・入力メソッドは通常どおり使えます。右端の矢印をクリックするとプロンプトに戻り、プロンプトが画面内に戻ると自動的に消えます。Enter または Ctrl+C を押したときもプロンプトに戻るので、コマンド(または TUI に送ったプロンプト)のその後の出力をすぐに確認できます。Shift+Enter を含むそれ以外のキーでは表示位置は動きません。全画面プログラム(vim、less)にはスクロールバックがないため表示されません。
検索
Mod + F を押して検索バーを開きます。ターミナルバッファーをインクリメンタルに検索するために入力します。
| アクション | ショートカット |
|---|---|
| 次のマッチ | Enter |
| 前のマッチ | Shift + Enter |
| 検索を閉じる | Escape |
バーは入力欄の横に、見つかった内容を表示します:
3 / 17——17 件のマッチのうち 3 件目にいます。5000 件一致——マッチが多すぎてターミナルがどれがアクティブかを追跡できないため、位置なしで合計件数を表示します。- 該当なし——クエリに何もマッチしませんでした。入力テキストも赤色になります。
入力欄と矢印の間に 3 つのトグルがあります:
| トグル | 効果 |
|---|---|
| Aa | 大文字と小文字を区別 |
| ab | 単語単位でのみ一致 |
| .* | クエリを正規表現として扱う |
正規表現モードがオンのとき、入力途中のパターン([a-z] を入力する途中の [)はエラーにならず、単に該当なしと表示されます——そのまま入力を続けてください。トグルは、バーを閉じるかセッションを切り替えるたびにリセットされます。
コンテキストメニュー
ターミナル内で右クリックしてアクセスします:
- コピー——選択したテキストをコピー(何も選択されていない場合は無効)
- 折り返しを解除してコピー——表示幅による改行を取り除いて選択範囲をコピーします。一部のコマンドラインプログラム(codex などの TUI アプリ)は、実際の改行を挿入して出力をターミナル幅で強制的に折り返します。通常のコピーではその改行が保持されます。「折り返しを解除してコピー」は、折り返された行をつなぎ直して連続した段落に戻します(空行は段落の区切りとして保持されます)。CJK に対応しており、中国語/日本語のテキストはスペースを挿入せずに結合されます。VMark は折り返しの改行と意図的な改行を区別できないため、1 つの論理的な流れだとわかっているブロックを選択してください。
- 貼り付け——クリップボードからシェルに貼り付け
- すべて選択——ターミナルバッファー全体を選択
- クリア——表示中の出力をクリア
- 表示をリセット——ターミナルを再描画してレンダリングキャッシュをリセット。長時間のセッション後に文字が重なったり、大文字小文字が混ざったり、文字化けしたりする場合に使用——重スタイルの CLI(例:Claude Code)を何時間も実行していると最もよく見られます。同じウィンドウ内のターミナルは 1 つのグリフキャッシュを共有するため、アクティブなタブだけでなく、ウィンドウ内のすべてのターミナルが再描画されます。
- コマンドの出力をコピー——1 つのコマンドが出力した内容すべてを、そのプロンプト行と次のコマンドの出力を除いてコピーします。コマンドの出力内で右クリックし、かつシェル統合がオンの場合にのみ表示されます。各コマンドの開始位置と終了位置を VMark に伝えるのがシェル統合だからです。
メニューは完全にキーボードで操作できます。開くと最初に利用可能なアクションにフォーカスがあり、矢印キーで項目間を移動(無効な項目はスキップ)、Home/End で最初/最後に移動、Enter または Space で実行、Escape または Tab で閉じます。
コードブロックの実行
ドキュメント内の bash、sh、zsh、shell のフェンス——または console、shell-session、shellsession、terminal のタグが付いたトランスクリプトのフェンス——にマウスを重ねると、コピーボタンの横に ▶ ターミナルで実行 ボタンが表示されます。これはブロックをターミナルに貼り付け(必要に応じてパネルを表示し、セッションを開始します)、そこで止まります。
貼り付けるだけで、実行はしません
コマンドはシェルの入力行に置かれるだけで、自動的に実行されることはありません。改行は付加されないため、あなたが Enter を押すまで何も起こりません。まず、そこに入った内容を読んでください——ドキュメントの出どころはさまざまで、コードフェンスは誰かが書いた単なるテキストにすぎません。
トランスクリプトのフェンス(console、shell-session、shellsession、terminal)— 貼り付けられたセッション——では、先頭の $ 、% 、# のプロンプトが取り除かれ、プロンプトではなくコマンドが得られます。bash のフェンスでは、それらはソースコードなのでそのまま残されます。
クリック可能なリンク
ターミナルはコマンド出力で 3 種類のリンクを検出します:
- Web URL——クリックしてデフォルトブラウザーで開く
- OSC 8 ハイパーリンク——
ls --hyperlink=auto、gh、最近のコンパイラーなどのツールが出力する明示的なターミナルハイパーリンク。表示されるテキストと実際の URL が異なる場合があります。クリックするとその URL が開きます。 - ファイルパス——
/を含み、ファイル拡張子で終わるパス。クリックしてエディタでファイルを開く(:line:colサフィックスをサポート。相対パスは、シェル統合がシェルの現在のディレクトリを報告していればそのディレクトリに対して、そうでなければワークスペースルートに対して解決されます)
シェル環境
VMark はすべてのターミナルセッションでこれらの環境変数を設定します:
| 変数 | 値 |
|---|---|
TERM | xterm-256color |
TERM_PROGRAM | WezTerm |
TERM_PROGRAM_VERSION | 20240203-110809-5046fc22 |
VMARK_WORKSPACE | ワークスペースのルートパス(フォルダーが開いている場合) |
PATH | フルのログインシェル PATH(システムターミナルと同じ) |
COLORTERM | truecolor |
LC_CTYPE | UTF-8——macOS のみ |
TERM_PROGRAM が vmark ではなく WezTerm を報告するのは意図的です。いくつかの CLI ツール——Claude Code の /terminal-setup もその一つ——は、ハードコードされた許可リストに載っているターミナルでのみ CSI u キーエンコーディングを有効にし、それ以外には機能を落とした「不明なターミナル」向けの処理にフォールバックします。VMark はそのプロトコルに対応しているため、動作が最も近い許可リスト上のターミナルとして名乗ります。この値を vmark に変えると、それらのツールで Shift+Enter やその他の修飾キー付きシーケンスが気付かないうちに動かなくなります。ADR-006 を参照してください。
LC_CTYPE=UTF-8 は macOS でのみ設定されます。Dock や Spotlight から起動された GUI アプリはそこでほとんど環境変数を継承しないため、これがないとシェルは C ロケールにフォールバックし、ツールは CJK テキストを ? と表示します。素の名前 UTF-8 は macOS ではロケールですが、Linux ではロケールではありません。そのため Linux で設定すると、継承したまっとうなロケールが無効なものに置き換わり、setlocale() を呼ぶすべてのプログラムが警告を出すことになります。Linux と Windows では、デスクトップセッション自身の LANG / LC_* がそのまま継承されます。
VMark は意図的に EDITOR を設定しません。git commit、crontab -e などが起動するのは、シェル設定がエクスポートしているあなた自身の $EDITOR です。(以前の VMark は EDITOR=vmark を強制していましたが、vmark コマンドラインシムはオプションであり、タブを閉じるのを待たずにすぐ戻るため、git commit は「command not found」か空のコミットメッセージで失敗していました。これを機能させるには、ブロッキングする vmark --wait プロトコルが必要ですが、まだ実装されていません。)
統合ターミナルはログインシェルの PATH を継承するため、node、claude、その他のユーザーがインストールしたバイナリなどの CLI ツールを検出できます——通常のターミナルウィンドウと同様に。
ターミナル設定でシェルを選択しない限り、VMark はログインシェルを起動します。選択するシェルは VMark が提示するものでなければならず——macOS と Linux では /etc/shells に記載された(またはログインシェルである)、存在し実行可能なシェル、Windows では PowerShell、pwsh、cmd.exe、%COMSPEC%——絶対パスで指定されます。保存済みの選択が利用できなくなった場合、設定には (利用不可) と表示され、VMark は代わりにデフォルトのシェルを起動します。macOS と Linux では、まずユーザーアカウントのエントリからログインシェルを読み取り、次に $SHELL を参照し、/bin/sh にフォールバックします。Windows では %COMSPEC% を使用し、cmd.exe のフルパスにフォールバックします。作業ディレクトリはワークスペースのルート、またはアクティブなファイルの親ディレクトリ、または $HOME から開始します。
Ctrl+R(zsh/bash での逆方向履歴検索)などの標準的なシェルショートカットは、ターミナルにフォーカスがある場合に機能します——エディタによってインターセプトされません。
ターミナルがすでに実行中の状態でワークスペースのルートが変わると、アイドル状態のセッションが自動的に新しいルートに cd します。コマンド(vim や less など)を実行中のセッションは中断されず、コマンドが終了した時点でディレクトリを変更します。これを検出するにはシェル統合が必要です。ワークスペースレールがオンの場合、ワークスペースに属するセッションは独自のディレクトリを保持します。
macOS でのマイク、カメラ、Apple イベント
統合ターミナルで実行したプログラムは、マイク、カメラ、または他のアプリを操作する権限(Apple イベント。osascript が使用します)を要求できます。macOS は VMark の名前で確認します。ターミナルが起動するすべてのプログラムについて、VMark を責任のあるアプリとして扱うためです。macOS に確認されたら許可してください。あとからシステム設定 → プライバシーとセキュリティのマイク、カメラ、オートメーションで変更できます。要求はプログラムがそのリソースを初めて使うときに行われ、ターミナルを開いただけでは行われません。
プログラムの録音が無音になる、映像が真っ黒になる、または「許可されていません」というエラーが出るのに確認が表示されない場合は、該当する設定ページで VMark が一覧にあり、許可されているかを確認してください。問題を報告するときは、そのプログラムの出力を添えてください。
BlackHole などの仮想オーディオ入力では、権限だけでは音声はルーティングされません。録音ツールで目的の入力を選び、そこへ音声をルーティングし、長時間の録音の前に短い録音で確認してください。音声ファイルが大きくなっていても、それだけでは音が録れている証拠になりません。VMark には録音や文字起こしの機能は含まれていません。それらのコマンドは別途インストールしたツールが提供します。
未実装の機能
以下は検討中の項目ですが、現時点では提供されていません。このページの以前の版で、その一部がすでに提供されているかのように説明されていたため、ここに記載しています:
- セッションの一時停止/再開。 VMark は内部的にシェルプロセスを一時停止できます——ターミナルが描画できる速さを超えて出力が届いたときのフロー制御として自動的に行います——が、ユーザー向けのコントロールはなく、それを置くためのセッションタブのコンテキストメニューもありません。
$EDITORが VMark を指せるようにする、ブロッキングするvmark --wait(前述のシェル環境を参照)。- 再起動をまたいだスクロールバックの永続化(永続性を参照)。
- fish のシェル統合(シェル統合を参照)。
設定
設定 → ターミナル を開いて設定します:
| 設定 | 範囲 | デフォルト | プラットフォーム |
|---|---|---|---|
| パネルサイズ | 利用可能なスペースの 10 %〜80 %、5 % 刻み | 40 % | すべて |
| フォントサイズ | 10〜24 px | 13 px | すべて |
| 行の高さ | 1.0〜2.0 | 1.2 | すべて |
| 選択時にコピー | オン/オフ | オフ | すべて |
| 会話記録を自動表示 | オン/オフ | オフ | すべて |
| Option を Meta キーとして使用 | オン/オフ | オン | macOS |
| シェル統合 | オン/オフ | オン | macOS / Linux(zsh、bash) |
| リモートクリップボード(OSC 52) | オン/オフ | オン | すべて |
| スクロールバック | 1,000 / 5,000 / 10,000 / 50,000 行 | 5,000 | すべて |
| スクリーンリーダーモード | オン/オフ | オフ | すべて |
会話記録を自動表示
会話記録を自動表示 を有効にすると、アシスタントの Markdown、選択可能な表、Mermaid 図が、ターミナル領域内の整形済み会話記録セクションに表示されます。ターミナルが上部または下部にあるときは CLI の右側に、左側または右側にあるときは CLI の下に配置され、対話型 CLI はその横で引き続き使用できます。
このセクションは折りたたまれた状態で始まります。新しい返信に表や Mermaid 図が含まれていると自動的に開きます——ターミナルでも十分に表示できるプレーンテキストの返信では閉じたままです。ターミナルのタブバーにあるグラフボタン(ツールチップ 整形された会話記録)をクリックすると、いつでも表示・非表示を切り替えられます。会話記録の表示中はボタンが強調表示され、非表示にすると領域全体が CLI に戻ります。折りたたんだ後は、表や図を含む次の返信が届くまで閉じたままです。セッションが初めて表示された時点で会話記録にすでにある内容では開きません。非表示のターミナルは会話記録の読み取りを停止します。
有効にすると、既存のフックを保持したまま、Claude Code の settings.json と Codex の hooks.json にローカルの SessionStart フックが追加されます。有効にした後、VMark のターミナルで Claude/Codex を起動または再開してください。すでに実行中のセッションは再起動してください。Codex は初回実行時に新しいフックを信頼するよう求めることがあります。Node と、ライフサイクルフックに対応した CLI バージョンが必要です。明示的に無効化されたフックやポリシーで制限されたフック、リモート SSH セッション、VMark の環境と異なるカスタム CLI 設定ディレクトリでは、紐付けを確立できません。
各ターミナルは、最も新しく更新された会話記録ではなく、自身の正確なセッションを追跡します。プレビューは、会話記録データの末尾 2 MiB から最大 100 件のアシスタントメッセージを保持します。生の HTML とリモート画像は作用しません。不正な図はソースとして読める状態で残ります。無効にすると整形済みセクションが削除され、VMark がインストールしたフックが無効化されます。
アクセシビリティ
| 設定 | オプション | デフォルト |
|---|---|---|
| ターミナルベル | オフ / 視覚 / 音声 | 視覚 |
| 最小コントラスト | オフ / WCAG AA(4.5:1) / WCAG AAA(7:1) / 最大 | WCAG AA(4.5:1) |
ほとんどの変更は、開いているすべてのセッションに即座に適用されます——パネルサイズと位置、フォントサイズ、行の高さ、カーソル、選択時にコピー、Option を Meta キーとして使用、スクロールバック、スクリーンリーダーモード、ターミナルベル、最小コントラストです。シェル、WebGLレンダラー(Linux では利用不可)、リモートクリップボード、シェル統合はセッションの開始時に確定するため、その後に開いたセッションに適用されます。パネルサイズは利用可能なスペースの 80 % まで広げられます。エディタはピクセル単位の最小サイズを保つため、ターミナルがどれだけ大きくなっても完全に消えることはありません。リサイズハンドルをダブルクリックすると、保存されたサイズを変えずに最大サイズへ移動し、もう一度で元に戻ります。Option を Meta キーとして使用 は、統合ターミナルで macOS の Option キーを Meta としてルーティングし、emacs、tmux などのツールが Alt プレフィックスのショートカットを認識できるようにします(macOS のみ)。デフォルトでオンなので、Option+矢印キーはアクセント付き文字を入力するのではなく単語単位で移動します。シェル統合 は macOS と Linux で利用できます(Windows では非表示)。リモートクリップボード は書き込み専用(読み取りは常に拒否)で、後述します。スクロールバック は、各セッションがスクロール履歴に保持する出力の行数を制御します——値を大きくするとメモリ使用量が増えます。スクリーンリーダーモード は、ターミナルの出力を VoiceOver などの支援技術に公開します。パフォーマンスのためデフォルトではオフです。ターミナルベル は、ベル(BEL)の通知方法を選びます——セッションタブに付く視覚的なバックグラウンドアクティビティの印、控えめなビープ音(バックグラウンドのセッションタブにも印を付けるので見つけられます)、またはなし。最小コントラスト は、かすれたターミナルのテキストを背景に対して読みやすいコントラスト比まで引き上げます。アクセシビリティのために上げるか、オフにして引き上げを無効にします。
ターミナルのフォントファミリー
ターミナルは独自のフォントではなく、設定 → エディター の 等幅フォント を使用します。そのため、そこで変更するとコードブロック、ソースモード、ターミナルのスタイルがまとめて変わります。Linux では、システムデフォルトのオプションはデスクトップ自身の等幅フォント——システムのターミナルが使うフォント——に従います。
フォントサイズとズーム
ターミナルのフォントサイズは、エディタの読書用サイズから意図的に独立しています。ターミナルは情報密度の高い監視用の画面であり、デフォルトの 13 px は、読書用デフォルトの 18 px ではなく、単体のターミナルアプリが採用しているサイズに合わせています。Mod + = / Mod + - は 2 px 刻みで拡大縮小するため、ターミナルのフォントがドロップダウンにない値(13 → 15 → 17 …)になることがあります。ドロップダウンは実際に有効になっているサイズを表示し、プリセットに戻すのではなく、拡大縮小後の値をリストに追加します。
リモートクリップボード(OSC 52)
ssh セッション内、tmux 内、またはリモートのエディタでコピーすると、テキストはリモートマシンではなくあなたのクリップボードに入ります。プログラムは OSC 52 エスケープシーケンスを出力することでこれを要求し、VMark はそれをシステムのクリップボードに送ります。
# From anywhere the terminal can print — including over ssh:
printf '\e]52;c;%s\a' "$(printf 'hello' | base64)"書き込みのみ——読み取りは常に拒否されます
OSC 52 にはクリップボードを読み取る方法も定義されていますが、VMark はこの設定がオンでも決して応答しません。ターミナルにバイトを出力できるプロセスなら何でも要求できてしまいます——自分で書いたのではないファイルに対する cat も含めて——し、その応答はあなたが入力したかのように届いてしまうからです。iTerm2 と VS Code も同じ理由で拒否しています。この設定が制御するのは書き込みで、読み取りは無条件に拒否されます。
設定 → ターミナル → リモートクリップボード をオフにすると、このチャネルを完全に閉じられます。変更は新しく起動したセッションに適用されます。
シェル統合
シェル統合 がオンのとき、VMark はシェルに軽量なコマンドマーカーを挿入し、ターミナルが各コマンドの開始位置と終了位置を把握できるようにします。これにより次の機能が使えるようになります:
- プロンプト間の移動——
Cmd + ↑/Cmd + ↓でスクロールバック内の前/次のコマンドプロンプトへジャンプします。 - 終了ステータスの表示——細いガターのバーで、各コマンド行に緑(成功)または赤(失敗)の印を付けます。
- 作業ディレクトリのライブ追跡——出力内の相対ファイルパスがシェルの現在のディレクトリに対して解決され、新しいターミナルはそこで開きます。
zsh と bash に、macOS と Linux で対応しています。どちらの場合も挿入は非破壊的です——実際の設定が最初に読み込まれ、VMark のフックは置き換えではなく追加されるため、プロンプト、テーマ、エイリアスには手を付けません。
| シェル | VMark のフックの仕組み | 保持されるもの |
|---|---|---|
| zsh | ZDOTDIR が、あなたの設定を読み込んでから add-zsh-hook でフックを登録する、生成された .zshrc を指します | カスタムの $ZDOTDIR が尊重されます。VMark はログインシェルから実際の値を解決し、$HOME だけでなくそこから .zshenv と .zshrc を読み込みます |
| bash | bash --rcfile <generated>。これは最初に ~/.bashrc を読み込みます | 既存の PROMPT_COMMAND と既存の DEBUG トラップは、どちらも置き換えではなく組み合わせられます——そのため bash-preexec、direnv、atuin は引き続き動作します |
ターミナルは対話型の非ログインシェルを実行するため、ログイン専用のファイル(.zprofile、.bash_profile、.profile)はどちらのシェルでも対象外です。これは通常のターミナルタブの動作と同じです。
fish はまだ統合されていません。これらの機能なしで通常どおり動作します。設定をオフにすると挿入を完全に無効にできます。変更は新しく起動したセッションに適用されます(適用するにはターミナルを再起動してください)。
永続性
ターミナルパネルが開いているかどうかは、ホットイグジットの再起動後に保存されて復元されます。そのサイズはパネルサイズ設定(リサイズハンドルをドラッグすると更新される、ウィンドウに対する割合)なので、設定とともに保持され、パネルがどちら側にあってもすべての再起動を越えて維持されます。シェルプロセス自体は保持できません——再起動時に各セッションに新しいシェルが生成されます。スクロールバックも保持されません。復元するには、ターミナルを通過したあらゆる内容(API キーを含む)をディスクに書き込む必要があるため、まずその問題に対処する設計ができるまで、意図的に見送られています。