スマートタブナビゲーション
VMark の Tab キーと Shift+Tab キーはコンテキストを認識します——矢印キーに頼らずに書式設定されたテキスト、括弧、リンクを効率よく移動できます。
実験的な ワークスペースレール を使っている場合、タブの切り替えとタブストリップの対象はアクティブなワークスペースのタブだけです。
クイック概要
| コンテキスト | Tab アクション | Shift+Tab アクション |
|---|---|---|
括弧 () [] {} の内側 | 閉じ括弧の後にジャンプ | 開き括弧の前にジャンプ |
引用符 "" '' の内側 | 閉じ引用符の後にジャンプ | 開き引用符の前にジャンプ |
CJK 括弧 「」 『』 の内側 | 閉じ括弧の後にジャンプ | 開き括弧の前にジャンプ |
太字、斜体、コード、 | 書式設定の後にジャンプ | 書式設定の前にジャンプ |
| リンクの内側 | リンクの後にジャンプ | リンクの前にジャンプ |
| テーブルセルの内側 | 次のセルに移動 | 前のセルに移動 |
| リストアイテムの内側 | アイテムをインデント | アイテムをアウトデント(最も外側のレベルで止まる) |
括弧と引用符のエスケープ
カーソルが閉じ括弧または引用符の直前にある場合、Tab を押すとそれを飛び越えます。カーソルが開き括弧または引用符の直後にある場合、Shift+Tab を押すと元に戻ります。
サポートされる文字
標準的な括弧と引用符:
- 丸括弧:
( ) - 角括弧:
[ ] - 波括弧:
{ } - ダブル引用符:
" " - シングル引用符:
' ' - バッククォート:
`
CJK 括弧:
- 全角括弧:
( ) - 隅付き括弧:
【 】 - 角括弧:
「 」 - 白角括弧:
『 』 - 二重角括弧:
《 》 - 一重角括弧:
〈 〉
カーリー引用符:
- ダブルカーリー引用符:
" " - シングルカーリー引用符:
' '
仕組み
function hello(world|)
↑ )の前にカーソルTab を押す:
function hello(world)|
↑ )の後にカーソルこれはネストした括弧でも機能します——Tab は直接隣接する閉じ文字を飛び越えます。
Shift+Tab は逆の動作をします——カーソルが開き文字の直後にある場合:
function hello(|world)
↑ (の後にカーソルShift+Tab を押す:
function hello|(world)
↑ (の前にカーソルCJK の例
これは「測試|」文字
↑ 」の前にカーソルTab を押す:
これは「測試」|文字
↑ 」の後にカーソル書式設定エスケープ(WYSIWYG モード)
WYSIWYG モードでは、Tab と Shift+Tab はインラインの書式設定マークから脱出できます。
サポートされる書式設定
- 太字 テキスト
- 斜体テキスト
インラインコード取り消し線- リンク
仕組み
カーソルが書式設定されたテキストのどこかにある場合:
This is **bold te|xt** here
↑ 太字の内側にカーソルTab を押す:
This is **bold text**| here
↑ 太字の後にカーソルShift+Tab は逆方向に機能します——書式設定の先頭にジャンプします:
This is **bold te|xt** here
↑ 太字の内側にカーソルShift+Tab を押す:
This is |**bold text** here
↑ 太字の前にカーソルリンクエスケープ
Tab と Shift+Tab はリンクからも脱出できます:
Check out [VMark|](https://vmark.app)
↑ リンクテキストの内側にカーソルTab を押す:
Check out [VMark](https://vmark.app)| and...
↑ リンクの後にカーソルリンクの内側で Shift+Tab を押すと先頭に移動します:
Check out |[VMark](https://vmark.app) and...
↑ リンクの前にカーソルリンクナビゲーション(ソースモード)
ソースモードでは、Tab は Markdown リンク構文内でスマートなナビゲーションを提供します。
ネストされたブラケットとエスケープされたブラケット
VMark は複雑なリンク構文を正しく処理します:
[text [with nested] brackets](url) ✓ 動作する
[text \[escaped\] brackets](url) ✓ 動作する
[link](https://example.com/page(1)) ✓ 動作するタブナビゲーションは、ネストまたはエスケープされた括弧があってもリンクの境界を正しく識別します。
標準リンク
[link text|](url)
↑ テキスト内にカーソルTab を押す → カーソルが URL に移動:
[link text](|url)
↑ URL内にカーソルTab を再度押す → カーソルがリンクを抜ける:
[link text](url)|
↑ リンクの後にカーソルWiki リンク
[[page name|]]
↑ リンク内にカーソルTab を押す:
[[page name]]|
↑ リンクの後にカーソルソースモード:Markdown 文字エスケープ
ソースモードでは、Tab は Markdown 書式設定文字も飛び越えます:
| 文字 | 用途 |
|---|---|
* | 太字/斜体 |
_ | 太字/斜体 |
^ | 上付き文字 |
~~ | 取り消し線(ひとまとまりとしてジャンプ) |
== | ハイライト(ひとまとまりとしてジャンプ) |
例
This is **bold|** text
↑ **の前にカーソルTab を押す:
This is **bold**| text
↑ **の後にカーソルINFO
ソースモードでは Markdown 文字に対する Shift+Tab エスケープはありません——Shift+Tab はアウトデント(先頭スペースの削除)のみを行います。
ソースモード:自動ペアリング
ソースモードでは、書式設定文字を入力すると対応する閉じペアが自動挿入されます:
| 文字 | ペアリング | 動作 |
|---|---|---|
* | *|* または **|** | 遅延ベース——シングルかダブルかを検出するために 150ms 待機 |
~ | ~|~ または ~~|~~ | 遅延ベース |
_ | _|_ または __|__ | 遅延ベース |
= | ==|== | 常にダブルとしてペアリング |
` | `|` | シングルバッククォートは遅延後にペアリング |
``` | コードフェンス | 行頭のトリプルバッククォートでフェンスされたコードブロックを作成 |
自動ペアリングはフェンスされたコードブロック内では 無効——コードブロック内で * を入力するとペアリングなしでリテラルの * が挿入されます。
ペア間で Backspace を押すと両方が削除されます:*\|* → Backspace → 空。
テーブルナビゲーション
カーソルがテーブル内にある場合:
| アクション | キー |
|---|---|
| 次のセル | Tab |
| 前のセル | Shift + Tab |
| 行を追加(最後のセルで) | Tab |
最後の行の最後のセルで Tab を押すと自動的に新しい行が追加されます。
リストのインデント
カーソルがリストアイテム内にある場合:
| アクション | キー |
|---|---|
| アイテムをインデント | Tab |
| アイテムをアウトデント | Shift + Tab |
アウトデントはネストを 1 レベル減らし、最も外側のレベルで止まります——アイテムをリストの外に出すことはありません。リストから完全に抜けるには リストを解除 を使うか、リストボタンをもう一度押してオフに切り替えてください。
設定
タブエスケープの動作は 設定 → エディター でカスタマイズできます:
| 設定 | 効果 |
|---|---|
| 括弧の自動ペアリング | 括弧のペアリングとタブエスケープを有効/無効 |
| CJK 括弧 | CJK 括弧ペアを含める |
| カーリー引用符 | カーリー引用符ペアを含める(“” ‘’)。入力したストレートな引用符はカーリー引用符のペアになります |
TIP
タブエスケープがワークフローと競合する場合、括弧の自動ペアリングを完全に無効にできます。Tab はスペースを挿入(またはリスト/テーブルでインデント)するように通常通り動作します。
比較:WYSIWYG モード vs ソースモード
| 機能 | Tab(WYSIWYG) | Shift+Tab(WYSIWYG) | Tab(ソース) | Shift+Tab(ソース) |
|---|---|---|---|---|
| 括弧エスケープ | ✓ | ✓ | ✓ | — |
| CJK 括弧エスケープ | ✓ | ✓ | ✓ | — |
| カーリー引用符エスケープ | ✓ | ✓ | ✓ | — |
| マークエスケープ(太字など) | ✓ | ✓ | N/A | N/A |
| リンクエスケープ | ✓ | ✓ | ✓(フィールドナビゲーション) | — |
Markdown 文字エスケープ(*、_、~~、==) | N/A | N/A | ✓ | — |
Markdown 自動ペアリング(*、~、_、=) | N/A | N/A | ✓(遅延ベース) | N/A |
| テーブルナビゲーション | 次のセル | 前のセル | N/A | N/A |
| リストのインデント | インデント | アウトデント | インデント | アウトデント |
| マルチカーソルサポート | ✓ | ✓ | ✓ | — |
| コードブロック内でスキップ | ✓ | ✓ | ✓ | N/A |
マルチカーソルサポート
タブエスケープは複数のカーソルで機能します——各カーソルは独立して処理されます。
仕組み
複数のカーソルがある状態で Tab または Shift+Tab を押す場合:
- Tab:書式設定内のカーソルは末尾に脱出し、閉じ括弧の前のカーソルはそれを飛び越える
- Shift+Tab:書式設定内のカーソルは先頭に脱出し、開き括弧の後のカーソルはその前にジャンプ
- プレーンテキスト内のカーソルはその場にとどまる
例
**bold|** and [link|](url) and plain|
^1 ^2 ^3Tab を押す:
**bold**| and [link](url)| and plain|
^1 ^2 ^3各カーソルはそのコンテキストに基づいて独立して脱出します。
TIP
これは一括編集で特に強力です——Mod + D で複数の出現を選択し、Tab を使ってすべてから一度に脱出します。
優先順位とコードブロックの動作
エスケープの優先順位
複数のエスケープターゲットが重なる場合、Tab は 最も内側から 処理します:
**bold text(|)** here
↑ まずTabが)にジャンプ(括弧が最も内側)Tab を再度押す:
**bold text()**| here
↑ Tabが太字マークを脱出これは Tab が常に書式設定の前に括弧を脱出することを意味します——まず括弧を抜け、次に書式設定を抜けることが保証されます。
コードブロックガード
タブと Shift+Tab の括弧ジャンプはコードブロック内では 無効——code_block ノードとインラインコードスパンの両方。これにより、コードで括弧がリテラルな構文であるため、Tab がコード内の括弧を飛び越えることを防ぎます:
`array[index|]`
↑ インラインコード内でTabは]をジャンプしない — 代わりにスペースを挿入自動ペアリングの挿入も WYSIWYG モードとソースモードの両方でコードブロック内では無効です。
ヒント
筋肉記憶——タブエスケープに慣れると、矢印キーを使わずにはるかに速くナビゲートできるようになります。
自動ペアリングと連携——
(を入力すると、VMark が)を自動挿入します。内部で入力した後、Tab でジャンプして抜け出すだけです。ネストした構造——Tab は一度に 1 レベルずつ脱出します。
((nested))の場合、完全に抜けるには 2 回 Tab が必要です。Shift + Tab——Tab の逆。マーク、リンク、開き括弧から後方に脱出します。テーブルでは前のセルに移動します。リストではアイテムをアウトデントします。
マルチカーソル——タブエスケープはすべてのカーソルで同時に機能し、一括編集をさらに速くします。
開いているタブの切り替え
タブはウィンドウ下部のステータスバーにあります。タブ間を移動する方法は 3 つあります:
| アクション | ショートカット | 備考 |
|---|---|---|
| 最後に使ったタブ | Ctrl + Tab | 直前にいたタブにジャンプします。もう一度押すとすぐに戻ります。 |
| 次のタブ / 前のタブ | Mod + Shift + ] / Mod + Shift + [ | 最近使ったかどうかに関係なく、ストリップに沿って順番に移動します。 |
| クイックオープン | Mod + O | 入力して絞り込みます。開いているタブが最初に、最近使ったものほど上に表示されます。 |
最後に使ったタブは巡回ではなくトグルです。 直前にいたドキュメントに移動し、もう一度押すと元の場所に戻ります——2 つのファイルを行き来する最速の方法です。次のタブと前のタブは代わりにストリップを位置の順にたどります。これは、何かに戻るのではなく何かを探しているときに使うものです。
これはショートカットであると同時にメニュー項目(表示 → 最後に使ったタブ)でもあるため、埋め込みブラウザがキーボードフォーカスを持っている間も動作し続けます。
収まりきらないほどタブがあるとき
タブストリップはスクロールします。どちらかの端の外にタブがあると、その端がフェードし、小さな矢印が表示されます——クリックすると 1 画面分スクロールします。どの方法でタブを切り替えても新しいタブが表示範囲にスクロールされるため、ハイライトされたタブが画面外に隠れることはありません。
ストリップ自体にもキーボードで到達できます:Tab でストリップに移動し、矢印キーを使ってください。
2 つのドキュメントを並べて表示
表示 → エディタを分割 — 2つの文書(Alt + Mod + \)は、現在のドキュメントの横に 2 つ目のドキュメントを表示します。どのドキュメントを表示するか選ぶには、任意のタブを右クリックして 横に開く を選びます。
| アクション | ショートカット |
|---|---|
| エディタを分割 — 2つの文書 | Alt + Mod + \ |
| ペインを閉じる | Alt + Mod + Shift + \ |
| もう一方のペインにフォーカス | Alt + Mod + Shift + O |
| スクロールを同期 | (デフォルトなし) |
動作についての注意:
- もう一方の ペインに表示されているタブには、タブストリップで薄い下線が付きます。そのため、画面上の 2 つのドキュメントがどれで、入力がどちらに入るかを常に見分けられます。
- 2 つのうち一方を閉じると、もう一方に集約されます。無関係なタブに移動することはありません。残ったドキュメントはそのままです。
- スクロールを同期 は 2 つのペインのスクロールを比例的に連動させます。デフォルトはオフで、分割ごとの設定です。
- 2 つのペインは 1 つの表示モードを共有します。 ソースモード(
F6)は両方のペインを同時に切り替え、ペイン間を移動しても現在のモードは変わりません。 - 分割には 2 つのドキュメントが開いている必要があります。ブラウザタブはドキュメントではないため、分割の対象になりません。
タブのコンテキストメニュー
タブを右クリックするとメニューが開きます。矢印キー、Home、End で移動し、Enter または Space で項目を実行し、Escape で閉じます。
| 項目 | 動作 | 利用できる条件 |
|---|---|---|
| 新しいウィンドウに移動 | タブを新しいウィンドウに移動します。確認には 元に戻す が付きます。空になったセカンダリウィンドウは閉じます。 | ドキュメントが読み込まれていて、メインウィンドウの唯一のタブではない |
| ピン留め / ピン留め解除 | タブをピン留めまたはピン留め解除します——ピン留めされたタブを参照してください。 | 常に |
| 横に開く | タブをもう一方の分割ペインに表示します——2 つのドキュメントを並べて表示を参照してください。 | このタブとアクティブなタブがどちらもドキュメントで、このタブがアクティブなタブではない(ブラウザタブには表示されない) |
| 名前を変更 | タブ内でその場でファイル名を変更します——ファイル名の変更を参照してください。 | ドキュメントが保存済み |
| パスをコピー | ファイルの絶対パスをコピーします。 | ドキュメントが保存済み |
| 相対パスをコピー | ワークスペースフォルダーからの相対パスをコピーします。 | ワークスペースが開いていて、ファイルがその中にある |
| Finderで表示 | Finder でファイルを表示します(Windows では エクスプローラーで表示、Linux では ファイルマネージャーで表示)。 | ドキュメントが保存済み |
| ディスクに復元 | タブの内容をそのパスに書き戻します。 | 開いている間にファイルがディスクから削除された |
| 保存時の状態に戻す | 確認の後、変更を破棄してディスクからファイルを再読み込みします。 | タブに未保存の変更があり、ファイルがまだ存在する |
| 閉じる | タブを閉じます(未保存の変更がある場合は先に保存するか確認します)。 | タブがピン留めされていない |
| 他を閉じる | ピン留めされていない他のタブをすべて閉じます。 | ピン留めされていない他のタブがある |
| 右側のタブを閉じる | 右側にあるピン留めされていないタブを閉じます。 | そのようなタブがある |
| ピン留めされていないタブをすべて閉じる | このタブを含め、ピン留めされていないタブをすべて閉じます。 | ピン留めされていないタブがある |
| すべて閉じる | ピン留めされたタブも含め、すべてのタブを閉じます。ピン留めされたタブが閉じられる場合は、その数を示して先に確認します。キャンセルすると何も閉じません。 | 常に |
一括で閉じる操作は現在のワークスペースのタブを対象とし、1 つずつ閉じます。未保存の変更があるタブはそれぞれ先に確認し、そのいずれかの確認をキャンセルすると残りは中止されます。
ピン留めされたタブ
コンテキストメニューからタブをピン留めすると、手元に置いておけます:
- タブはストリップ左側のピン留めグループに移動し、ピンのアイコンが表示され、閉じるボタンがなくなります。ピン留めされたタブとされていないタブの境界をまたいでタブをドラッグすることはできず(「ピン留めされたタブは左側に固定されます。ドロップはブロックされました。」)、ピン留めされたタブをウィンドウの外にドラッグすることもできません。
- ピン留めを解除するまで、どの方法でも閉じられません——
Mod + W、中クリック、閉じる、一括で閉じる操作のいずれでもです。閉じようとすると 「閉じる前にピン留めを解除してください」 と表示されます。例外は意図的な 2 つの操作です。すべて閉じる は確認後にピン留めされたタブも閉じ、レールからワークスペースを閉じると、そのピン留めされたタブもほかのタブと一緒に閉じます。 - ピン留めされたタブを含むウィンドウを閉じると確認を求められます——「このウィンドウには N 個のピン留めされたタブがあります。閉じてもよろしいですか?」——ただし、すでに保存ダイアログが表示されていた場合を除きます。
- ピン留めは、タブを別のウィンドウやワークスペースに移動しても、アップデートによる再起動でも保持されますが、VMark を終了すると保持されません:次回の起動時に開き直されたタブはピン留めされていません。
ピン留めのキーボードショートカットはありません。
ファイル名の変更
タブのコンテキストメニューで 名前を変更 を選びます。タブ内で名前が編集可能になり、拡張子より前の部分が選択されます。Enter を押すか別の場所をクリックすると確定し、Escape でキャンセルします。ファイルはディスク上で名前が変更され、そのファイルを指している開いたタブはすべて追従します。VMark が上書きすることはありません:その名前がすでに使われている場合は、「X」という名前のファイルはすでに存在します。 というダイアログが表示されます。空の名前、変更のない名前、. や ..、/ や \ を含む名前は拒否されるか無視されます。入力したものが名前全体になります——拡張子を消すと、ファイルから拡張子がなくなります。
macOS では、設定 → 外観 → タイトルバーにファイル名を表示 がオンの場合、タイトルバーのファイル名をダブルクリックして名前を変更することもできます。同じルールとメッセージが適用され、名前の衝突やエラーの後も名前は編集可能なままなので、別の名前を試せます。拡張子を表示 がオフの場合、拡張子なしで名前を入力すると元の拡張子が保持されます。未保存のドキュメントのタイトルをダブルクリックすると、代わりに 保存 が開きます。
タブとウィンドウを閉じる
未保存の変更があるものが確認なしに閉じられることはありません。
- 未保存の変更がある タブを 1 つ閉じる と(
Mod + W、タブの ×、または 閉じる)、保存、保存しない、キャンセル とともに 「「…」への変更を保存しますか?」 と確認されます。一度も保存していないドキュメントで 保存 を選ぶと、デフォルトの保存フォルダーで保存ダイアログが開き、タブのタイトルが名前の候補になります。そのダイアログをキャンセルするか、保存に失敗した場合、タブは開いたままです。 - 未保存のドキュメントが 1 つある ウィンドウを閉じる と、同じ質問がされます。2 つ以上ある場合は、1 つのダイアログにすべてが一覧表示され——一度も保存していないドキュメントには (新規) と表示されます——すべて保存、保存しない、キャンセル が示されます。
- すべて保存 はファイルを持つすべてのドキュメントを保存します。一度も保存していないドキュメントについては保存先を尋ねます:1 つなら保存ダイアログを 1 回、複数なら フォルダー選択を 1 回 表示します(「N個の新しいドキュメントのフォルダを選択」)。それぞれがそのフォルダーにタイトルの名前で保存され、すでに使われている名前には番号が付くため(
Untitled 2.md)、何も上書きされません。 - 終了(
Mod + Q)は、すべてのウィンドウで同じチェックを 1 ウィンドウずつ実行します。いずれかのウィンドウでキャンセルすると終了がキャンセルされます。設定 → ファイルと画像 → 終了の確認 がオン(デフォルト)の場合、1 回目に押したときは 「もう一度 ⌘Q を押して終了」 と表示されるだけです——2 秒以内にもう一度押してください。OS からの終了(シャットダウンなど)では 2 回押す必要はありません。 - すべて保存して終了 は、すべてのウィンドウの未保存のドキュメントをダイアログなしで保存し(一度も保存していないものについては、それを含むウィンドウで保存先を尋ねます。1 つなら保存ダイアログ、複数ならフォルダの選択を 1 回)、その後終了します。保存できないドキュメントがあった場合や、そのダイアログをキャンセルした場合は終了が中止され、そのウィンドウは開いたままになります。保存に失敗した場合はその理由が表示されます。
macOS では、最後のウィンドウを閉じても VMark は動作し続けます。Windows と Linux では、最後のウィンドウを閉じると終了します——ただし Windows で 設定 → ファイルと画像 → 閉じるときにトレイに最小化 がオンの場合は例外で、最後のウィンドウは代わりにシステムトレイに隠され、何も閉じられず、保存の確認もありません(設定を参照)。