これ、カード・スタイルには必須でしょう。
cardy.css
Obsidianをカード・スタイルにするcss。
今そのスタイルで書いてます。 「ぼくがかんがえたさいきょうのえでぃた」ですね、これは。 趣味の世界。
「見出し+内容」のカードを並べるとノートになる。 それを視覚化するデザインです。 むっちゃ気に入ってます。
デッキとは何か
書いていると「このカードは要らないなあ」となるときがあります。 削除したい。 あるいは「さっき消したカードはここで欲しい」となることもあります。 復活したい。
これまでノートコンポーザーでやってたんですが、 少し手数が多いのでうんざりしてきます。 執筆中にそうした操作にコストを尽くすのはもったいない。
ということで「とりあえず不要なカードは避けておく」。 カードを積んでおくので「デッキ」と呼ぶことにします。
decky.md
Templaterスクリプトです。 hotkeyに登録してお使いください。
<%* // 一時退避用のノートを設定してください。 const Deck = "@deck.md" const Head = "\n#" const DeckPath = app.vault.getAbstractFileByPath(Deck) e = app.workspace.activeLeaf.view.editor p = e.getCursor().line s = e.getLine(p) if(s) { s = tp.file.content d = s.split(Head) for(i=j=k=0; k<=p; i++) { j = k k+= d[i].split("\n").length } a = d.splice(i-1, 1) block = a[0] s = d.join(Head) await e.setValue(s) e.setCursor(j-1, 0) if(DeckPath) { await app.vault.append(DeckPath, `${Head}${block}`) } else { await app.vault.create(Deck, block) } new Notice("Move to the deck.") } else { if(DeckPath) { s = await app.vault.read(DeckPath) d = s.split(Head).filter(x => x) d0 = d.map(x => "#"+x.split("\n")[0]) if(d.length) { if(d.length == 1) { s = d[0] content = "" } else { s = await tp.system.suggester(d0, d) if(!s) return content = d.filter(x => x != s).join(Head) } await app.vault.modify(DeckPath, content) tp.file.cursor_append(`${Head}${s}`) } else { new Notice("No Deck.") } } else { new Notice("No Deck file.") } } %>
使い方
カーソル行が空行でなければ
カードを@deck.mdに移動します。
もし空行であれば
@deck.md内のカードを一覧表示します。
こんなふうにカードの「見出し」が並ぶメニューが出ます。 選ぶとカードがカーソル位置に挿入されます。 大幅な入れ替えをする場合に便利。
ショットガン・シャッフルはカードを痛めるぜ。
まとめ
今週の『グノーシア』はアニミズム問題だった。 「魂があるとは何か」と。 イルカが出てきてラキオがいなかった。 彼がいなくてギャグ回なのはちょっとさみしいね。