Skip to content

スマートタブナビゲーション

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 は複雑なリンク構文を正しく処理します:

markdown
[text [with nested] brackets](url)     ✓ 動作する
[text \[escaped\] brackets](url)       ✓ 動作する
[link](https://example.com/page(1))    ✓ 動作する

タブナビゲーションは、ネストまたはエスケープされた括弧があってもリンクの境界を正しく識別します。

標準リンク

markdown
[link text|](url)
          ↑ テキスト内にカーソル

Tab を押す → カーソルが URL に移動:

markdown
[link text](|url)
            ↑ URL内にカーソル

Tab を再度押す → カーソルがリンクを抜ける:

markdown
[link text](url)|
                ↑ リンクの後にカーソル

Wiki リンク

markdown
[[page name|]]
           ↑ リンク内にカーソル

Tab を押す:

markdown
[[page name]]|
             ↑ リンクの後にカーソル

ソースモード: Markdown 文字エスケープ

ソースモードでは、Tab は Markdown 書式設定文字も飛び越えます:

文字用途
*太字/斜体
_太字/斜体
^上付き文字
~~取り消し線(ひとまとまりとしてジャンプ)
==ハイライト(ひとまとまりとしてジャンプ)

markdown
This is **bold|** text
              ↑ **の前にカーソル

Tab を押す:

markdown
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/AN/A
リンクエスケープ✓(フィールドナビゲーション)
Markdown 文字エスケープ(*_~~==N/AN/A
Markdown 自動ペアリング(*~_=N/AN/A✓(遅延ベース)N/A
テーブルナビゲーション次のセル前のセルN/AN/A
リストのインデントインデントアウトデントインデントアウトデント
マルチカーソルサポート
コードブロック内でスキップN/A

マルチカーソルサポート

タブエスケープは複数のカーソルで機能します — 各カーソルは独立して処理されます。

仕組み

複数のカーソルがある状態で Tab または Shift+Tab を押す場合:

  • Tab: 書式設定内のカーソルは末尾に脱出し、閉じ括弧の前のカーソルはそれを飛び越える
  • Shift+Tab: 書式設定内のカーソルは先頭に脱出し、開き括弧の後のカーソルはその前にジャンプ
  • プレーンテキスト内のカーソルはその場にとどまる

**bold|** and [link|](url) and plain|
     ^1          ^2            ^3

Tab を押す:

**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 モードとソースモードの両方でコードブロック内では無効です。

ヒント

  1. 筋肉記憶 — タブエスケープに慣れると、矢印キーを使わずにはるかに速くナビゲートできるようになります。

  2. 自動ペアリングと連携(を入力すると、VMark が)を自動挿入します。内部で入力した後、Tab でジャンプして抜け出すだけです。

  3. ネストした構造 — Tab は一度に 1 レベルずつ脱出します。((nested))の場合、完全に抜けるには 2 回 Tab が必要です。

  4. Shift + Tab — Tab の逆。マーク、リンク、開き括弧から後方に脱出します。テーブルでは前のセルに移動します。リストではアイテムをアウトデントします。

  5. マルチカーソル — タブエスケープはすべてのカーソルで同時に機能し、一括編集をさらに速くします。