スマートタブナビゲーション
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 |
設定
タブエスケープの動作は 設定 → エディタ でカスタマイズできます:
| 設定 | 効果 |
|---|---|
| 括弧の自動ペアリング | 括弧のペアリングとタブエスケープを有効/無効 |
| 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 の逆。マーク、リンク、開き括弧から後方に脱出します。テーブルでは前のセルに移動します。リストではアイテムをアウトデントします。
マルチカーソル — タブエスケープはすべてのカーソルで同時に機能し、一括編集をさらに速くします。