Jazzと読書の日々

iPadを筆記具として使う方法を模索します

Obsidian:カーソル行を削除する

普通に一行削除するときとテーブルで一行削除するときとで、用いるコマンドが異なります。 こういうのは一本化しておきましょう。

ステノノート

ステノで文章を書くときテーブル機能が流用できます。 行の左端にあるハンドル、これを長押しするとメニューが出る。 これはこれで便利なんですけどね。

ただ、一行消すだけにこの作法は面倒くさい。

LineDelete.md

そこで「パラグラフを削除」と合体しました。

<%*
e = app.workspace.activeLeaf.view.editor
p = e.getCursor().line
s = e.getLine(p)
if(/^\s*(\d\.|-|\*|\+) /.test(s)){
  s = "editor:delete-paragraph"
}else{
  if(/^\|/.test(s)){
    s = "editor:table-row-delete"
  }else{
    s = "editor:delete-paragraph"
  }
}
app.commands.executeCommandById(s)
%>

これをTemplaterに登録。 Commanderのマクロにしてモバイルツールバーに置きます。 カーソル行を消すとき、ワンボタンで済むようになる。

PCの場合はホットキーに登録してお使いください。

悩みどころ

スクリプトからわかるように、 アウトライナー内では別の動作にしようとしたんですよ。 「ブランチの削除」みたいな。

でもそれって意外と意味がない。 「ブランチのカット」にして、 カットされた部分をクリップボードに保存することも考えましたが、 それをするのだったら他も「カーソル行をカット」にしないと辻褄が合わない。

ということで、 アウトライナーに関しては「そこだけ削除」にしました。 今回の目的は「テーブルで一行消したい」なので、 それを優先することにします。

コマンド実行について

Templaterは他のプラグインのコマンドを実行できます。

app.commands.executeCommandById("コマンドID")

コマンドIDを調べるには下記記事を参照してください。

dataviewを使って検索します。

Obsidian Basesになってdataviewが使えなくなったら、 どう調べればいいのだろう。 今から悩んでるわけですよ。

杞憂に終わればいいけど。

まとめ

合体怪人を量産しておくべきか。