Jazzと読書の日々

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

Obsidian CardCut でコピペ操作を簡単にする

前に組んだスクリプトですが、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ならスクリプトで対応できるわけです。 これは大きい。

まとめ

「エセーとしてのブログ」。 確かにそうですね。

「ブログがなかった頃の『ブログ』は何だろう?」と思っていたのです。 枕草子徒然草がそれに当たるかな。