📝

NeovimとObsidian.nvimの組み合わせで、毎日のメモがグッと楽になる

に公開

この記事では、Neovimユーザー向けにObsidianを効率よく使うための設定方法を解説します。特に、daily noteやwikiリンク作成時の挙動を自分好みにカスタマイズしたい方に向けて書いています。

1. Obsidianのインストール

まず、Obsidianを公式サイトからインストールしてください。ここでは詳細な説明は省略します。

2. Neovim用のPluginのインストール

ObsidianをNeovimで操作するために、obsidian.nvimというプラグインを使用します。今回はLuaを使って設定しています。

プラグインのインストール例(Lazy.nvimなどを使用している場合):

return {
	"epwalsh/obsidian.nvim",
	version = "*",
	lazy = true,
	ft = "markdown",
	dependencies = { "nvim-lua/plenary.nvim" },
}

3. obsidian.nvimの設定

daily noteに関する設定

obsidian.nvimのpluginを使用すると、ObsidienDailiesを実行することで、Daily Noteを作成できます。

Obsidianのdaily note機能は便利ですが、デフォルトではいくつかの課題があります。

課題

  • デフォルト設定ではdaily noteがvaultのルートに作成される。
  • ファイル名のフォーマットが「YYYY-MM-DD」形式で味気ない。

解決策

これらの問題は、daily_notesセクションの設定で簡単に解決できます。

以下は実際の設定例です:

daily_notes = {
	folder = "日記", -- 日記フォルダに保存
	date_format = "%Y年%-m月%-d日", -- ファイル名を「2025年5月1日」のようにする
	template = nil, -- テンプレートの設定(必要なら指定)
},

これで、ObsidianTodayなどを実行すると、日記/2025年5月1日.mdという形でdaily noteが作成されます。

ファイル内リンク(Wikiリンク)に関する設定

obsidian.nvimのpluginを有効化することで、[[任意のタイトル]]と書くだけでwikiリンクの作成&リンク先の新しいノートの作成まで行うことができます。

しかし、デフォルトの挙動には少し不便な点があります。

課題

  • 作成されるノートのファイル名がランダムな文字列(例えば 1746321026-XART.md)になってしまう。
  • 作成されるノートがvaultのルートディレクトリに置かれてしまう。

解決策

これらの問題を解決するためには、note_id_funcnote_path_funcという2つの設定を使います。

ファイル名をWikiリンクのタイトルにする設定 (note_id_func)

以下の設定により、Wikiリンクで指定したタイトルがそのままファイル名になります。

note_id_func = function(title)
	if title ~= nil then
		return title:gsub('[\\/:%*%?"<>|]', "") -- ファイル名に使えない文字を除去
	else
		return tostring(os.time()) -- タイトルがない場合はタイムスタンプを使う
	end
end,

例えば、[[2025年5月3日]]とリンクを書いた場合、作成されるファイル名もリンク通り2025年5月3日.mdになります。

新しいノートをカレントディレクトリに作成する設定 (note_path_func)

以下の設定により、Wikiリンクを作成したファイルと同じディレクトリに新しいノートが作成されます。

note_path_func = function(spec)
	local current_dir = vim.fn.expand("%:p:h")
	return require("plenary.path"):new(current_dir) / (spec.id .. ".md")
end,

この設定で、日記/2025年5月3日.mdというファイル内で新しいリンクを作った場合、新規ノートはリンクを作成したファイルがあるのと同じディレクトリに、日記/新しいノート.mdという形で作成されます。

これらふたつの設定により、wikiリンクの使い勝手も大幅に改善されました🎉

完成したobsidian.nvimの設定

ここまでの設定をまとめると以下のようになります。

return {![](https://storage.googleapis.com/zenn-user-upload/2eba95876e5c-20250504.png)
	"epwalsh/obsidian.nvim",
	version = "*",
	lazy = true,
	ft = "markdown",
	dependencies = { "nvim-lua/plenary.nvim" },
	opts = {
		workspaces = {
			{
				name = "scratches",
				path = "~/Library/Application Support/JetBrains/IntelliJIdea2023.3/scratches",
			},
		},
		daily_notes = {
			folder = "日記",
			date_format = "%Y年%-m月%-d日",
			template = nil,
		},
		note_id_func = function(title)
			if title ~= nil then
				return title:gsub('[\\/:%*%?"<>|]', "")
			else
				return tostring(os.time())
			end
		end,
		note_path_func = function(spec)
			local current_dir = vim.fn.expand("%:p:h")
			return require("plenary.path"):new(current_dir) / (spec.id .. ".md")
		end,
	},
}

以上で、Neovimを使ってObsidianを快適に利用するための設定は完了です。ぜひ自分の環境に合わせてカスタマイズしてみてください。

Discussion