Open16

ObsidianざっくりTIPS

cat2151cat2151

Minimal Themeのフォントを変更するには、Minimal Theme Settingsの一番下のEditor Fontを設定する

  • 詳しくは:
    • 公式推奨の Minimal Theme Settings プラグインをインストールします。
    • その設定画面を一番下までスクロールします。
    • Editor Font欄があることを確認します。
    • そこに、使いたいフォント名を入力します。
    • フォントが変化したことを確認します。
cat2151cat2151

Minimal Theme の見出しh4~h6の強制大文字化を解除するには、プラグインで設定をする

  • 詳しくは:
    • Style Settings(コミュニティプラグイン)をinstallします。
    • Minimal/Headings/Level 4 Headings ~ Level 6 Headings の h4 font variant ~ h6 font variant を Normal にします。
    • ※デフォルトだと h4 ~ h6 が Small caps になっています
cat2151cat2151

Blue Topazテーマのフォントを変更するには、Style Settingsで設定する

  • 詳しくは:
    • Style Settings プラグインをインストールします。
    • Blue Topaz Theme/Detail Settings/Typography/Font Family を選びます。
    • すべて "" を入力します。
    • フォントが変更されていることを確認します。
cat2151cat2151

bash scriptやPython等プログラムをノートに書いて実行するには、Execute Codeプラグインを使う

https://github.com/twibiral/obsidian-execute-code

  • 詳しくは:
    • Execute Codeプラグインをinstallします。
    • 必要に応じて WSL Mode をONにします。
    • 例えばデイリーノートに以下を書きます:
    ```run-bash
    echo "Hello World!"
    ls -la
    ```
    
    • コードブロックにマウスホバーし、Runボタンをクリックします。
    • ls結果等が表示されることを確認します。
  • ホットキー
    • 例えば、ホットキーF5 に Run all Code Blocks in Current File をbindすれば、
      • キーボードから手を離さずに、
      • コードを書き、F5で実行し、結果をノートに表示しつつ、
      • それを見てノートを書く、といった体験ができます。
    • F5時にはコードブロックの外にいる必要があり、カーソル移動の手間が発生します。
      • 回避策を調査中です、見つかっていません。
  • 多数の言語が動きます

C, CPP, Dart, Golang, Groovy, Kotlin, Java, JavaScript, TypeScript, Lean, Lua, CSharp, Prolog, Rust, Python, R, Ruby, Wolfram Mathematica, Haskell, Scala, Racket, F#, Batch, Shell & Powershell.

  • Python
    • 以下のコードが動いたことを確認済みです。
    ```run-python
    print("Hello World!")
    ```
    
    • Pythonは初回試したときは動かなかったのですが、
      • 設定を変更したり他の言語を試したり等していたら、
      • 気がついたら動くようになっていました。
      • なお、動かない間はかわりに、bash scriptでWSL python3を呼ぶコードを書いて対処していました。
  • F5時、ノート内に同じ言語のコードブロックが1つだけあるようにすべし
    • 複数あると、意図した動作をしませんでした。
      • 例えば、片方がエラーになる、片方の結果出力が両方に表示される等。
  • run- をつけるとRunボタンが出る。 run-をつけないと普通のコードブロックのまま
    • 公式ドキュメントだと run- をつけなくても動くように読めますが、実際は run-をつけた上でRunボタンをクリックすることで動きます。
    • 公式はドキュメントが追いついていないのか、あるいは他の原因かまでは調査できていません。
  • 動かないとき、ノートを開き直したら動いた
    • 有効なケースがあるようです。
  • 動かないとき、F5のかわりにRunボタンを押したら動いた
    • 再現性チェックが不十分なので、実際には別の手順が適切、な可能性があります。
  • 埋め込み表示されたコードブロックも、Runボタンで実行できる
    • 例えば、あちこちのノートにあるあちこちのコードを埋め込みで並べて、
      • 選んで実行
      • が楽にできるかもしれません。
  • 埋め込み表示されたコードブロックも、F5ですべて動作する
    • 大量に埋め込みコードブロックがある場合、F5すると
      • 意図した動作をしなくなる可能性があります
        • (前述の、同じ言語のコードブロックが複数ある状態になる場合)
  • 複数言語のコードを一つのノートに書き、F5一発ですべて実行できる
    • 実用性は未検証です。何かに使える可能性はあるかもしれません。
cat2151cat2151

特定タグのノート群の全文を埋め込み表示するには、Execute Codeプラグインでbash scriptを書く(experimental)

  • 要は
    • ノートをいろいろな条件で絞り込み検索し
      • 見つかったノートについて
        • ノート名でなく、ノート全文を埋め込み表示する
    • という体験を
    • 手っ取り早く実現する用
    • ほかのプラグインでできる可能性はありますが、ざっくりぐぐった感じ、手軽に試して結果が得られそうなものは、見つからず
  • 応用すれば
    • 好みのプログラミング言語を使って
    • 任意ノートの任意部分を任意行だけ概要として切り出す等した、生成ノートを
    • 埋め込み表示
    • を、ノートにコード書いてF5実行で運用
    • ができる可能性がある
    • Obsidian内部で完結でき、手軽にメンテできる可能性がある
    • 取り急ぎ書いた例
```run-bash
tags="TODO" # 検索したいフロントマターtags
folder="Inbox" # 検索したいフォルダ
vault_path=@vault_path
dir=$(wslpath "${vault_path}/${folder}")
cd "$dir"
f=grep結果.md
grep --files-with-matches --exclude ${f} "^tags: .*${tags}.*" * \
  | sed "s/^/![[/g" \
  | sed "s/.md$/]]/g" \
  | head -5 \
  > ${f}
wc -l ${f}
```
![[grep結果]]
cat2151cat2151

簡易的なCLIアプリをObsidian上でサクっと書いて実行するとき、TypeScript + Deno + daxで書いて、Execute Codeプラグインで実行する手があるかも(experimental)

https://zenn.dev/hashrock/articles/5dae2e171533a6
https://github.com/dsherret/dax

こんな感じのコードをObsidianのノートに書いて、
ホットキー一発でノート内に結果表示されます。

```run-typescript
import $ from "https://deno.land/x/dax/mod.ts";

// run a command
await $`echo 5`; // outputs: 5

// more complex example outputting 1 to stdout and 2 to stderr
await $`echo 1 && deno eval 'console.error(2);'`;
```
  • Execute CodeプラグインのTypeScriptでDenoを動かす設定

    • 別項を参照ください
  • メリット

    とりわけ、Denoは、歴史的にbashまたはpythonで作成されたユーティリティスクリプトの優れた代替品です。

  • 使い分け

    • VSCodeで書く(あるいは書いてObsidianに貼り付ける)
    • Pythonやbash scriptやその他のプログラミング言語で書く
    • 等、いろいろな選択肢があるので使い分けで。
cat2151cat2151

Execute CodeプラグインのTypeScriptでts-nodeのかわりにDenoを使う設定

  • 設定

    • Execute CodeプラグインのTypeScript設定、ts-node path を、
    (必要に応じてフルパス)deno run (必要に応じて権限指定)
    
    • とすれば、TypeScriptをDenoで実行できます。
  • 参考

https://zenn.dev/estra/books/ts-the-minimum

  • 補足
    • Windows + WSL 環境でも動作します(というよりこのスレッドはすべてWindows + WSL で動作確認しています)
cat2151cat2151

dataviewjsを使うと、jsを書くだけでいろいろ表示できる

  • 例えば、今見てるデイリーノートの日付と同じ日付の見出しのあるノートの一覧をlast modifiedつきのテーブルで降順ソートして表示、ができたりする。デイリーノートのテンプレートに入れると便利。
    • そもそもそういう運用(日付を見出しにしている)をしている前提での用途ではある。
  • ただしviewなので、editはできない。あくまでviewだけ。
  • そのうちtwitterからまとめるつもり。
cat2151cat2151

Buttons + Templaterを使うと、ボタンとjsを書くだけで、ボタンを押せばノート全行置換をできたりする

  • かもしれない。
  • dataviewjsがview用なのに対して、
    • こちらはedit用として使える。かもしれない。
  • スタンダードなのはTemplaterでホットキーにアサインしたjsを使うことだと思うけど、
    • ボタンを書くと便利なこともありそう、と思っている。
  • 想定する用途の例は、ボタンでページ内のcatをすべてハイライトcatにする、元に戻す、を自動判別トグルで行うとか。
  • そのうちtwitterからまとめるつもり。
cat2151cat2151

ObsidianからWindowsのexeを引数つきで実行するには、ショートカットファイルを経由する手がある

例:あふwをObsidianから開き、指定ディレクトリを表示する

Obsidianでの記述
file://C:/foo/obsidianから開く用.lnk
obsidianから開く用.lnk の「リンク先」欄
C:\AFXW\AFXWCMD.EXE -P"C:\work_dir\"

補足

  • 操作のイメージ
    • 上記の行(1行)をクリックすると、exeを引数つきで実行できる。
  • file:// を使う手のメリットとして、Shukuchiとの相性の良さがあるかも。
    • CTRL + ENTER に Shukuchi を割り当ててると、カーソルをその行まで持っていかずとも、最寄りの行をサクサク実行できて快適。
  • 考察、これが向く用途
    • Shukuchi でサクサクとキーボードから実行したいとき用
    • ホットキーにして全ノート共通、ではなく、特定ノート固有で実行したいとき用
    • 「ショートカットファイルのフルパス」の変更頻度が低いもの、が向いてそう。
      • なおショートカットファイルの中身のメンテは、もしメンテ頻度が高いならscript化すればよさげ。
  • 考察、これが向かない用途
    • コードブロックにコマンドライン引数まですべて記述したいとき。その場合は、かわりにExecute Codeプラグインが条件付きで使えるようだ。詳しくは別項を参照のこと。

前提

  • Markdownの [~](~) も使える

課題

  • 記述するものがすべてフルパスであり、メンテコストがかかる
    • 案、uniqueな名称を書くだけでコマンドに変換してくれて、名称とコマンドの紐付けは別途一元管理で行うような仕組み、があるとよいか?ふわっと検討したりしなかったり。
    • 案、環境変数を使う等で対処できるかもしれない(試してない)
  • ショートカットファイルまわりが手間
    • かわりにExecute Codeプラグインが条件付きで使えるようだ。詳しくは別項を参照のこと。
    • ショートカットファイルを用意するのが手間
      • 案、ショートカットファイル的なことをObsidian側でやれる仕組みがあるとよいか?ふわっと検討したりしなかったり。
      • ささやかなメリットとして、ショートカットファイルにカレントディレクトリ指定を記述できるので、ノートの行がコンパクトで済む、という点がある。
    • ショートカットファイルのフルパスを記述するのが手間
      • 備忘、別項のuniqueな名称から~の仕組みがあれば解決しそう
  • ほかにベターな手がいろいろありそう
    • できれば、見つけたらここに集約してメリット・デメリットを整理するとよさげ
    • Windows固有の問題があるので、いずれも初手はまず試してみるのがよい
    • Execute Codeプラグインが条件付きで使えるようだ。詳しくは別項を参照のこと。
    • Templater はできそう。(Windows用には試してない)
    • obsidian-commander 等、類似のものがいくつかありそう。用途次第で使い分ける考え。(Windows用には試してない)
    • obsidian-shellcommands に、類似とそれぞれのメリット・デメリットが記載されている。参考になる。(Windows用には試してない)
cat2151cat2151

Execute CodeプラグインのWSLモードで、WSLからWindows側のexeを実行するには、run-bashでmnt側フルパスを記述する

例:あふwを実行し、指定ディレクトリを表示する

```run-bash
/mnt/c/AFXW/AFXWCMD.EXE -PC:/work_dir/
```

注意

  • ただし上記は、WSL側からあふwを実行済みでないと、「もう一つあふwウィンドウが開いてしま」うため目的を達成できない。
    • 原因と対策は不明。

考察、向く用途

  • ノートにすべて記述できることを優先するとき用
    • 例えば、コマンドライン引数を、ノートの記述で完結させるとき。
      • 頻繁にノートを読み書きしつつコマンドライン引数を書き換える用途のとき。
  • 備忘、WSL経由のオーバーヘッドは1秒未満である。広い用途で使える、と判断する。

考察、向かない用途

  • Shukuchi の対象にしたいとき用
    • 対策、file:// を記述してショートカットファイルを用意する。別項を参照。
cat2151cat2151

Another Quick Switcherの自分にとって便利な点を整理する

  • Another Quick Switcher
  • オススメ
    • デフォの「クイックスイッチャーを開く」を置き換えて使っている
  • 便利な例
    • ノートをtagで探せる
      • 例、日誌tagつきのノートなら、
        • Another Quick Switcherを開いて、日誌 ノート名ノート名 日誌 を入力すればOK
          • ノートのタイトルに「日誌」がなくても、候補に出てくる。便利。
          • おそらく使うときトークンの出現順に関係なく検索可能の恩恵を受けている
    • ノートへのリンクを書きたいとき楽
      • Another Quick Switcherでノートを探して、ALT + ENTERでinsert to editorすればOK。
  • いろいろな利点を紹介したいが、無意識に恩恵を受けていて、自分で認識できていない
    • なぜならObsidian導入直後から Another Quick Switcher のほうをメインで使っているため、デフォのクイックスイッチャーの機能を把握していない
    • だが知らない人にとっては、デフォのクイックスイッチャーに比べてどこが便利かがわかるのは有用に思える
  • 知らない人には紹介記事を紹介するほうが効率的かもしれない
cat2151cat2151

現在行をハイライトするには、sakuraeditor-bookmark-likeを使う

https://github.com/cat2151/cat-obsidian-templater-scripts

  • sakuraeditor-bookmark-likeは、
    • Templaterコミュニティプラグイン用のJavaScriptです。
      • cat-obsidian-templater-scriptsに含まれています。
    • 現在行をハイライトできます。
      • トグルできます。
      • 見出しでなく本文だけハイライトできます。
    • サクラエディタの CTRL + F2と似たようなことができます。
      • SHIFT + F2と似た機能もつけました(ハイライトへのジャンプ)
  • 用途の例
    • 分解したTODOやサブタスクをサクサクと実行していくとき、今やっている行をハイライト、完了したら戻す。
    • 巨大なノートで、注目したい行を、ハイライトしておく、を手早くやる。
      • 永続化はする(検索ハイライトのような揮発性ではない)が、
        • ある程度の頻繁なupdateはありうる、といった行に向く。
cat2151cat2151

h1などの上下の余白を狭くしたいときは、Style SettingsのParagraph spacingを減らす

  • Minimal限定の可能性があります、ご容赦ください
  • ほかのthemeでも似た概念が使える可能性はあるかもしれません