macOS (Emacs) style — 制限事項
範囲選択について
- (macOS)
Shift+control+P/N/B/F/A/Eはセルの境界で止まります- プレーンテキスト内やセルの内部で
Shiftを押しながらこれらのショートカットキーを押すと選択範囲を拡張しますが、これはこのプラグインの UP / DOWN / LEFT / RIGHT / HOME / END コマンドに範囲選択が適用されたのではありません。Obsidian のキーボードショートカットによるカーソル移動 / 範囲選択です。 - このためプラグイン特有の機能 (セルの境界から隣接セルに移動する) はありません。
- セルをまたぐ選択 (複数セル選択) には
Shift+ 物理カーソルキーを使ってください。
- プレーンテキスト内やセルの内部で
- (macOS)
Shift+option+ ← / → は日本語の単語分割が適用されません- 上記と同様に、
Shiftを押しながらこれらのショートカットキーを押すと選択範囲を拡張しますが、これは Obsidian のキーボードショートカットによる動作です。 - このため日本語の単語分割は適用されません。(句読点までひとまとまりの選択となります。英語テキストの場合には標準の挙動として単語単位で選択されます)
- 上記と同様に、
- (Windows)
Shift+Ctrl+P/N/B/F/A/Eはカーソルが動きません- 明示的に割り当てをしない限り Windows ではこれらのホットキーにはコマンドが割り当てられていないため、動作しません。(Apply recommended で割り当てられるのは
Ctrl+P/N/B/F/A/Eであって、Shift+Ctrl+P/N/B/F/A/Eは別のホットキーです) - 範囲選択には代わりに
Shift+ ↑ / ↓ / ← / → を使用してください。物理カーソルキー自体を Key Upgrades で UP / DOWN に割り当てていても、Shiftを伴う場合は別のキーとみなされますので割り当ての影響を受けません。
- 明示的に割り当てをしない限り Windows ではこれらのホットキーにはコマンドが割り当てられていないため、動作しません。(Apply recommended で割り当てられるのは
- (Windows)
Shift+Ctrl+ ← / → は日本語の単語選択に対応しません- この操作は Obsidian のキーボードショートカットによる単語単位の範囲選択で、このプラグインの日本語の単語分割は適用されません。句読点までひとまとまりの選択となります。英語テキストの場合には標準の挙動として単語単位で選択されます。
- 複数セルにまたがるカット・コピー・貼り付けは非対応 (Kill line / Kill region / Copy region / Yank)
- このプラグインが提供するコマンドはテキストレベルの操作コマンドであり、テーブルでは個々のセル内のテキストに対してのみ動作します。
- 複数セル選択によるテーブル構造のカット・コピー・貼り付けには対応していません。
- テーブル構造のカット・コピー・貼り付けには OS 標準のカット・コピー・貼り付け機能 (Windows であれば
Ctrl+X/C/V、macOS であればcommand+X/C/V) のショートカットか、またはマウスによる右クリックのコンテキストメニューを使ってください。
- (マルチカーソル) TOP / BOTTOM、Page up / Page down はSet markでの範囲選択時、プライマリカーソルのみ拡張します
- UP / DOWN、LEFT / RIGHT、HOME / END、Word left / rightは各カーソルそれぞれの選択範囲を拡張しますが、TOP / BOTTOM、Page up / Page down はプライマリカーソルのみが拡張されます。
テーブルに関するもの
- ライブプレビューで高さのある折り返しセルに UP で入ると一瞬スクロールする: 画面の高さを超える折り返しコンテンツを持つセルに UP で入ると、一瞬だけセルの先頭までスクロールしてから本来の着地位置である一番下の表示行にジャンプします。これは、このプラグインがセルウィジェット内で一番下の表示行を特定するために使っている 2 段階のカーソル配置に固有の副作用です。
- プレーンテキストからテーブルに入ると常に左端のセルに入ります: UP / DOWN でテーブルのすぐ上 (または下) のプレーンテキストの行からテーブルに侵入すると、常にその行の左端のセルに入ります。カーソルが着地する前のライブプレビューのテーブルは文字ごとの位置情報を返すことができないため、何番目のセルに入るべきか判断する材料がありません。左端セルの範囲内で極力カーソル横位置を維持するように努めますが、2 番目以降のセルに入ることはありません。(最大限右に行っても左端セルの末尾になります) テーブルに入る前のカーソル横位置は記憶したまま、その後の上下移動時でもカーソル横位置は維持されます。
- ライブプレビューでは、両端の
|を省略したテーブルでも、カーソル移動・単語移動・大文字小文字変換・Transpose chars・Kill line・Kill region・Yank は正しく動作しますが、以下の既知の制約があります:- 1 列目のセルを空にすると、その行が Markdown 上テーブルとして認識されなくなります。先頭の
|が無いため、空白のみのセルでは行がテーブル行だと判別できなくなる仕様上の制約です。 - マウスでセルをクリックして編集を始めると、Obsidian が自動的に両端へ
|を補完します。(これは Obsidian 自体の仕様です)
- 1 列目のセルを空にすると、その行が Markdown 上テーブルとして認識されなくなります。先頭の
- ソースモードでのテーブル検出は簡易的なものです: ソースモードではカーソルがテーブルの中にいるかどうかの判定は 1 行だけでの単純な文字列チェックで行います。(1 行が
|で始まり|で終わるか)- 見出し行の存在やテーブル手前の空行の存在など複数行にわたる判定は行いません。1 行のテキストだけで判定します。
- このため、たまたまこのパターンに一致する場合に予期しない挙動が起きることがあります。
- テーブル両端の
|は省略できません: Obsidian の拡張記法 ではテーブルの左端・右端の|を省略できますが、このプラグインではソースモードでその省略記法をテーブルとして認識しません。両端の|を省略した行は、上記の文字列チェックに一致しないため、通常のテキストとして扱われます。 - これに対して、Markdown の構文木を使うライブプレビューでは正確に判定されます。
- (マルチカーソル) テーブル・コールアウトが画面内にある状態で Page up / Page down を実行するとセカンダリカーソルが失われます
- 複数カーソルの状態でテーブルやコールアウトを画面内に含む Page up / Page down を実行するとプライマリカーソル以外のカーソルが消えてしまいます。
- テーブル・コールアウトが画面内に無い場合はこの問題は起きません。
ショートカットの競合
- (Windows) Obsidian のキーボードショートカットは競合検知 / 退避しません: 推奨ホットキーの割り当て (Apply recommended ボタンまたは Set ボタン) は Obsidian のキーボードショートカット
Ctrl+A(すべて選択) とCtrl+Y(やり直す) を上書きします。- Obsidian のホットキーであれば重複を検知できますが、これらは Obsidian のキーボードショートカットであり (ホットキーとしての) 割り当てではないため Displaced commands にリストアップできず、Restore ボタンで戻すこともできません。
- 同梱の Select all コマンドと Redo コマンドを別のキーに割り当てて使用するか、使用頻度が低ければコマンドパレットから実行してください。
- ホットキーはノート本文エディタ以外で動作しません: 以下にいくつかの例を挙げますが、これに限るものではありません。
- ノートタイトルでは
Ctrl+B/F/A/Eは効きません。 - フロントマターのテキスト入力欄では
Ctrl+B/F/A/E、Ctrl+D、Ctrl+Kは効きません。 - Excalidraw ではテキストオブジェクトの文字入力中に
Ctrl+P/N/B/F/A/Eは効きません。
- ノートタイトルでは
- Page down / Page up と貼り付けとの競合: Emacs 風のホットキーとして
Ctrl+V(Windows) またはcommand+V(macOS) を Page down または Page up に割り当てると、ノート本文エディタ以外 (例: Excalidraw) でCtrl+V/command+Vによる貼り付けができなくなります。- ノート本文エディタにおいては Yank コマンドで貼り付けを代替できる場面が多いですが、それらのビューでは Yank コマンドが使えません。マウスの「右クリック → 貼り付け」の操作で代替してください。
- 同様に複数セルのカット・コピー・貼り付け機能も代替できないため、OS 標準のカット・コピー・貼り付けショートカットは空けておくことを推奨します。