Open16
ObsidianざっくりTIPS
Minimal Themeのフォントを変更するには、Minimal Theme Settingsの一番下のEditor Fontを設定する
- 詳しくは:
- 公式推奨の Minimal Theme Settings プラグインをインストールします。
- その設定画面を一番下までスクロールします。
- Editor Font欄があることを確認します。
- そこに、使いたいフォント名を入力します。
- フォントが変化したことを確認します。
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 になっています
Blue Topazテーマのフォントを変更するには、Style Settingsで設定する
- 詳しくは:
- Style Settings プラグインをインストールします。
- Blue Topaz Theme/Detail Settings/Typography/Font Family を選びます。
- すべて
""
を入力します。 - フォントが変更されていることを確認します。
bash scriptやPython等プログラムをノートに書いて実行するには、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時にはコードブロックの外にいる必要があり、カーソル移動の手間が発生します。
- 回避策を調査中です、見つかっていません。
- 例えば、ホットキー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すると
- 複数言語のコードを一つのノートに書き、F5一発ですべて実行できる
- 実用性は未検証です。何かに使える可能性はあるかもしれません。
特定タグのノート群の全文を埋め込み表示するには、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結果]]
簡易的なCLIアプリをObsidian上でサクっと書いて実行するとき、TypeScript + Deno + daxで書いて、Execute Codeプラグインで実行する手があるかも(experimental)
こんな感じのコードを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を動かす設定
- 別項を参照ください
-
メリット
- TypeScriptで書きたい!というときに書ける
- Denoで書きたい!というときに書ける
https://yoshixmk.github.io/deno-manual-ja/introduction.html
とりわけ、Denoは、歴史的にbashまたはpythonで作成されたユーティリティスクリプトの優れた代替品です。
-
使い分け
- VSCodeで書く(あるいは書いてObsidianに貼り付ける)
- Pythonやbash scriptやその他のプログラミング言語で書く
- 等、いろいろな選択肢があるので使い分けで。
Execute CodeプラグインのTypeScriptでts-nodeのかわりにDenoを使う設定
-
設定
- Execute CodeプラグインのTypeScript設定、ts-node path を、
(必要に応じてフルパス)deno run (必要に応じて権限指定)
- とすれば、TypeScriptをDenoで実行できます。
-
参考
- 補足
- Windows + WSL 環境でも動作します(というよりこのスレッドはすべてWindows + WSL で動作確認しています)
Dataviewでノートの更新日付を yyyy-MM-dd HH:mm:ssで表示する
TABLE dateformat(file.mtime, "yyyy-MM-dd HH:mm:ss") AS "Last Modified"
情報元はこちら。
取り急ぎツイートを先に書いてしまったのでこちらにリンクしておく。
折りたたみをまとめて開閉するには、Obsidian Recursive Folding を使う
- Dynalistの
CTRL + SHIFT + .
のような折りたたみ/展開ができます。 - VSCodeの再帰的な折りたたみ/展開に似たことができます。
dataviewjsを使うと、jsを書くだけでいろいろ表示できる
- 例えば、今見てるデイリーノートの日付と同じ日付の見出しのあるノートの一覧をlast modifiedつきのテーブルで降順ソートして表示、ができたりする。デイリーノートのテンプレートに入れると便利。
- そもそもそういう運用(日付を見出しにしている)をしている前提での用途ではある。
- ただしviewなので、editはできない。あくまでviewだけ。
- そのうちtwitterからまとめるつもり。
Buttons + Templaterを使うと、ボタンとjsを書くだけで、ボタンを押せばノート全行置換をできたりする
- かもしれない。
- dataviewjsがview用なのに対して、
- こちらはedit用として使える。かもしれない。
- スタンダードなのはTemplaterでホットキーにアサインしたjsを使うことだと思うけど、
- ボタンを書くと便利なこともありそう、と思っている。
- 想定する用途の例は、ボタンでページ内のcatをすべてハイライトcatにする、元に戻す、を自動判別トグルで行うとか。
- そのうちtwitterからまとめるつもり。
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用には試してない)
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://
を記述してショートカットファイルを用意する。別項を参照。
- 対策、
Another Quick Switcherの自分にとって便利な点を整理する
- Another Quick Switcher
- オススメ
- デフォの「クイックスイッチャーを開く」を置き換えて使っている
- 便利な例
- ノートをtagで探せる
- 例、日誌tagつきのノートなら、
- Another Quick Switcherを開いて、
日誌 ノート名
やノート名 日誌
を入力すればOK- ノートのタイトルに「日誌」がなくても、候補に出てくる。便利。
- おそらく使うとき
トークンの出現順に関係なく検索可能
の恩恵を受けている
- Another Quick Switcherを開いて、
- 例、日誌tagつきのノートなら、
- ノートへのリンクを書きたいとき楽
- Another Quick Switcherでノートを探して、
ALT + ENTER
でinsert to editorすればOK。
- Another Quick Switcherでノートを探して、
- ノートをtagで探せる
- いろいろな利点を紹介したいが、無意識に恩恵を受けていて、自分で認識できていない
- なぜならObsidian導入直後から Another Quick Switcher のほうをメインで使っているため、デフォのクイックスイッチャーの機能を把握していない
- だが知らない人にとっては、デフォのクイックスイッチャーに比べてどこが便利かがわかるのは有用に思える
- 知らない人には紹介記事を紹介するほうが効率的かもしれない
現在行をハイライトするには、sakuraeditor-bookmark-likeを使う
- sakuraeditor-bookmark-likeは、
- Templaterコミュニティプラグイン用のJavaScriptです。
- cat-obsidian-templater-scriptsに含まれています。
- 現在行をハイライトできます。
- トグルできます。
- 見出しでなく本文だけハイライトできます。
- サクラエディタの
CTRL + F2
と似たようなことができます。-
SHIFT + F2
と似た機能もつけました(ハイライトへのジャンプ)
-
- Templaterコミュニティプラグイン用のJavaScriptです。
- 用途の例
- 分解したTODOやサブタスクをサクサクと実行していくとき、今やっている行をハイライト、完了したら戻す。
- 巨大なノートで、注目したい行を、ハイライトしておく、を手早くやる。
- 永続化はする(検索ハイライトのような揮発性ではない)が、
- ある程度の頻繁なupdateはありうる、といった行に向く。
- 永続化はする(検索ハイライトのような揮発性ではない)が、
h1などの上下の余白を狭くしたいときは、Style SettingsのParagraph spacingを減らす
- Minimal限定の可能性があります、ご容赦ください
- ほかのthemeでも似た概念が使える可能性はあるかもしれません