前に組んだスクリプトですが、Undoしても戻らないのが謎でした。
CardCut
箇条書きで書くと空行が大きな比重を占めます。 段落の区切りとして活用される。 なので、段落対象の操作が必要になります。 そのために作ったのがCardCutでした。
ただ、これ、作り間違えていますね。 思った範囲が切り取れない。 Undoするには二段階必要になる。 これではストレスを高めてしまいます。
それでアルゴリズムを変えてみました。
新型CardCut
Templaterスクリプトです。 ツールバーに置くと便利。
<%* s = tp.file.selection() if(s){ navigator.clipboard.writeText(s) return s }else{ e = app.workspace.activeLeaf.view.editor p = e.getCursor().line s = e.getLine(p) if(s){ d = tp.file.content.split("\n\n") for(b=c=i=0; i<d.length; i++){ c+= d[i].split("\n").length + 1 if(c>p) break b = c } navigator.clipboard.writeText(d[i]) d.splice(i, 1) s = d.join("\n\n") e.setValue(s) e.setCursor(b, 0) }else{ s = await navigator.clipboard.readText() tp.file.cursor_append(s + "\n") } } %>
使い方
空行に挟まれた範囲をブロックと見なしカットします。 カットされた部分はクリップボードに保管されます。
空行で実行した場合はペーストになります。
範囲選択している場合は、その部分だけコピーします。
応用編
よく使うのは、ライフログで作ったブログカードをコピーするとき。 デイリーノートからコピペする。 そのとき範囲を選ぶのがめんどくさい。 スクリプトは怠け者の味方だから、こんなとき助かります。 日付にカーソルを合わせてカットするだけ。
あるいは下書きをしているとき、段落ごと別の場所に移動したい。 アウトライナーなら簡単なことでも、通常のエディタにはそのコマンドがない。 でもObsidianならスクリプトで対応できるわけです。 これは大きい。
まとめ
「エセーとしてのブログ」。 確かにそうですね。