ObsidianでToDoを管理していて、タスクリストに[due:: 2024-04-25]
といったようなラベルを用いて期限の情報を付与している
参考:ObsidianのTemplaterでToDoタスクを入力するテンプレートスクリプト - notebook
とりあえずデフォルトの期限は1週間後にしているが、タスク追加後に修正をしないといけないことがよくある
たとえば月末周辺とかは日付だけでなく月も修正必要な場合があり微妙な面倒さを感じていた
ということで、面倒になってきたのでTemplaterを用いてショートカットで1日ずつ増やす、減らすというスクリプトを書いた
スクリプト
- templates/due_decr.md
<%* const dueLabelPattern = new RegExp(` \\[due:: (\\d{4}-\\d{2}-\\d{2})\\]`) const editor = app.workspace.activeLeaf.view.editor const line = editor.getLine(editor.getCursor().line) const matches = line.match(dueLabelPattern) const newDate = matches ? moment(matches[1]).subtract(1, 'days').format("YYYY-MM-DD") : moment().format("YYYY-MM-DD") const newLine = line.replace(dueLabelPattern, '') + ` [due:: ${newDate}]` editor.setLine(editor.getCursor().line, newLine) %>
- templates/due_incr.md
<%* const dueLabelPattern = new RegExp(` \\[due:: (\\d{4}-\\d{2}-\\d{2})\\]`) const editor = app.workspace.activeLeaf.view.editor const line = editor.getLine(editor.getCursor().line) const matches = line.match(dueLabelPattern) const newDate = matches ? moment(matches[1]).add(1, 'days').format("YYYY-MM-DD") : moment().format("YYYY-MM-DD") const newLine = line.replace(dueLabelPattern, '') + ` [due:: ${newDate}]` editor.setLine(editor.getCursor().line, newLine) %>
インクリメント、デクリメントでほぼ同じコードだがショートカットのキーを設定できる単位がファイルの単位となるのでインクリメント、デクリメント用にファイルを用意している
ホットキー設定と設定
まず、テンプレートスクリプトをホットキー設定できるように追加
そして、ホットキー設定
とりあえず、vimでの数値増減Ctrl+a
,Ctrl+x
に近いようAlt+a
, Alt+x
を設定した
動作
これでタスクの追加後ショートカットで日付の増減を行える
使ってみたら思った以上にいい感じだった
快適