📝

obsidian.nvim: NeovimでObsidianを使うための最高のプラグイン

2023/12/16に公開

この記事は Obsidian Advent Calendar 2023 の 16日目 の記事です。

はじめに

だれ?

https://mstdn.mimikun.jp/@mimikun

6年ほど自鯖でFediverseをやっている一般人です。
つい最近6周年を迎えたので祝ってください。

Obsidian歴は1年半と少し。

obsidian.nvim とは

epwalsh さん作のNeovim プラグイン。
あくまで補助的に使うことを目的に作られているそう。

Obsidianにはvimモードがありますが、自分の思想的にvimモードで使うのは受け入れがたいので
このプラグインを使ってノートを書くことがまれによくあります。
また、特定の環境ではなぜか再起動や電源投入後の初回起動がうまくいかないので、ターミナルから使えるようにしたいケースがあります。

obsidian.nvim のインストール方法

公式ドキュメント に書いてあるので見たほうが早いですが、一応自分の設定を書いておきます。

自分の設定は以下の通り。
長くなるので直リンク貼ります。

https://github.com/mimikun/dotfiles/blob/v2023.12.14/dot_config/nvim/lua/plugins/obsidian-nvim.lua

obsidian.nvim の使い方

コアプラグインで使える機能は一通り使えるようになっています。

後述しますが、検索処理では ripgrep, telescope.nvim, fzf.vim, fzf-lua といい感じのファジーファインダーは一通り使えるのでいい感じに検索できます。

Obsidianアプリ自体を開く

:ObsidianOpen でObsidianアプリ自体を開けます。

新規ノートを作成する

:ObsidianNew で新規ノートを作成できます。

名前を指定しないとZettelkasten形式に基づいたファイル名になります。

READMEにもありますがデフォルトはこれです。

-- Optional, customize how names/IDs for new notes are created.
note_id_func = function(title)
  -- Create note IDs in a Zettelkasten format with a timestamp and a suffix.
  -- In this case a note with the title 'My new note' will be given an ID that looks
  -- like '1657296016-my-new-note', and therefore the file name '1657296016-my-new-note.md'
  local suffix = ""
  if title ~= nil then
    -- If title is given, transform it into valid file name.
    suffix = title:gsub(" ", "-"):gsub("[^A-Za-z0-9-]", ""):lower()
  else
    -- If title is nil, just add 4 random uppercase letters to the suffix.
    for _ = 1, 4 do
      suffix = suffix .. string.char(math.random(65, 90))
    end
  end
  return tostring(os.time()) .. "-" .. suffix
end,

本日のデイリーノートを開く

:ObsidianToday で本日のデイリーノートを開けます。

以下で設定しています。

https://github.com/mimikun/dotfiles/blob/66600b12018c29ca4a41131cf27c58bfbec313d3/dot_config/nvim/lua/plugins/obsidian-nvim.lua#L193-L199

昨日のデイリーノートを開く

:ObsidianYesterday で昨日のデイリーノートを開けます。

翌日のデイリーノートを開く

:ObsidianTomorrow で翌日のデイリーノートを開けます。

ノートを素早く切り替える

:ObsidianQuickSwitch で素早くノートを切り替えられます。

quickswitch

カーソルの下にあるノートのリンクをたどる

:ObsidianFollowLink で別タブにてそのノートが開かれます。

followlink

バックリンクを取得する

:ObsidianBacklinks でバックリンクを取得できます。

backlink

テンプレートを挿入する

:ObsidianTemplate [NAME] でテンプレートを挿入できます。

template

以下で設定しています。

https://github.com/mimikun/dotfiles/blob/66600b12018c29ca4a41131cf27c58bfbec313d3/dot_config/nvim/lua/plugins/obsidian-nvim.lua#L59-L192

二重波括弧の中にsubstitutionsにある関数の結果が入るといった感じです。

ノートを検索する

:ObsidianSearch [QUERY] で全文検索ができます。

oobsidiansearch

ワークスペース(保管庫)を切り替えたいとき

:ObsidianWorkspace [NAME] でワークスペースを切り替えできます。

クリップボードにある画像を貼り付けたいとき

:ObsidianPasteImg [IMGNAME] でクリップボードにある画像を保管庫のアタッチメントフォルダに入れて、markdown形式のリンクを挿入してくれます。

おわりに

Neovim上ですべてを行いたいという人向けではありますが、なかなか良い選択肢ではないかと思います。

Obsidianで扱うファイルはただのmarkdownファイルとその他色々なので、もしObsidian Appが提供されなくなったとしても、このように第三者のソフトウェアやプラグインで容易に再現できる点が最高です。

今後は個人的に愛用している神プラグインであるところのSiluhouetteをLua移植してより便利にしていけたらなと思っています。

Discussion