「」を入れてカーソルを1字戻すTemplaterスクリプト
またObsidian+Templaterの小ネタです。つい遊んじゃう
小説を書くときに頻繁に入力する「」。
ちょっと気の利いたテキストエディタだと、入力ショートカットが用意されていたりしますよね。
もちろんObsidianの通常のテンプレートでも実現できますが、Templaterでちょっとスクリプトを書くと、「」を入れた上で「と」の間にカーソルを戻すことができます。
Templaterの導入については Obsidianで小説を書くTips:Templaterで章番号を自動挿入 を参照して頂くとして、スクリプトだけ載せます。
<%*
tp.file.cursor_append("「」");
const editor= this.app.workspace.activeLeaf.view.editor;
const cur = editor.getCursor();
editor.setCursor(cur.line, cur.ch-1);
%>
モバイルツールバーなりPCならショートカットキーなりに登録すると便利かと思います。
スクリプト作成時のメモ
シンプルなスクリプトですが、変なとこで詰まったのでメモ的に書いておきます。
「カッコ入れて一字戻すだけでいいよね」と思って最初は比較的単純なアプローチをしたのですが、中々getCursorで挿入後のEditorPositionを取れなくてうまくいきませんでした。
※ちなみに<%_* はこの前の改行を除去してくれます。公式ドキュメント参照
NGパターン1:スクリプトの前に「」
「」
<%_*
...
%>
NGパターン2:tRで入れる
<%*
tR += "「」";
...
%>
コンソールでgetCursorした内容を見て色々試したところ、どうもこれらの方法ではスクリプトを一通り処理した後に「」の挿入とカーソル移動が行われるので、そもそもこの書き方だと挿入後のカーソル位置を見れないし、setCursorしてもその後の挿入でカーソル位置が末尾に来てしまうようでした。
なるほどなぁ。確かに公式ドキュメントのtRのところはよく読むとそんな感じなのかもしれないですね……。
最終的には tp.file.cursor_append() を使うことで、思ったタイミングでの「」挿入を行いました。
ともあれ、「なんかをテンプレで入れた後にカーソルをセットしたい」という需要はそれなりにあるのでは? と思います。困っている方に届けば幸い。
それではよきObsidianライフをʕ ·ᴥ·ʔ
コメント