Obsidianで小説を書くTips:Templaterで「」の自動挿入+カーソル戻し

「」を入れてカーソルを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ライフをʕ ·ᴥ·ʔ

コメント

タイトルとURLをコピーしました