LogseqへMarkdownのリストをコピー&ペーストする方法
現在(2022/5/17)Logseq は Markdown ファイルに含まれるリストアイテムについて、先頭マーカー - * + の解釈が一般と異なるところがあります。
マーカー「-」のついた行は、通常のリストアイテム(ブロック)としてそれぞれが認識されます。
マーカー「*」「+」のついた行は、1つのブロック内のリストとして認識されます。
Markdown をコピーして Logseq にペーストする場合も、この制約のため結果に乱れが生じます。
次の issue では具体的に WorkFlowy、Roam Research、Notion のアウトラインと比較しましたが、Logseq だけが別の解釈となっています。
Markdownを複数アプリ間でのデータ交換フォーマットとして用いる場合、これでは困るケースがあります。
回避策として、コピー&ペーストについてはクリップボード内にある先頭マーカーを強制的に * や + から - へと書き換える方法があります。Windows で Markdown を Logseq へコピー&ペーストする際に本問題が生じる場合は次のようにできます。
Logseq へ Ctrl+v でペーストするときだけ、先頭マーカーの * や + を - へ置き換える AutoHotKey スクリプト
下記のテキストを ConvertFromCommonMark.ahk というファイル名で保存してください。ファイルのダブルクリックでタスクトレイへ常駐化します。
code:ConvertFromCommonMark.ahk
; Try to replace when Ctrl+v is pressed
key := "~^v"
Hotkey, %key%, ReplaceMarkdownBullets
; Replace bullet list markers in the clipboard from "*" "+" to "-"
; when Logseq window is active
ReplaceMarkdownBullets:
If WinActive("ahk_exe Logseq.exe") && RegExMatch(Clipboard, "m`a)^\s*\*\+\s") != 0 {
Clipboard := RegExReplace(Clipboard, "m`a)^(\s*)\*\+(\s)", "$1-$2") }
return
※注1 起動時に常駐化させる場合は、このスクリプトファイルを Windows のスタートアップフォルダにおいてください。
※注2 AutoHotKey による Clipboard への代入は、HTMLほかあらゆる形式のクリップボードの内容をすべてテキストデータで上書きしてしまいます。ここではクリップボードの中身を確認し、* や + で始まるマークダウンの行が確認できる場合のみ代入を行うことである程度問題を回避しました(やや処理効率は悪いですが)。
※注3 処理タイミングに依存しており、Logseq へペーストされる前にクリップボードが書き換わらないことがあるかもしれません。(ペースト後に書き換わってしまう)まだ要工夫。
そのほか、倉下さんのこちらの方法もスマートだと思います。