mcpField
O
obsidian-nvim

obsidian-nvim

github.com/julianobarbosa生産性14114 回インストール2 日前に更新
リポジトリ

obsidian-nvim について

Obsidian vaultをNeovimで管理するプラグイン、obsidian.nvimの設定と使い方を案内するスキルです。主要コマンド、リンク操作、補完、テンプレート、frontmatterの設定とトラブルシューティングを扱います。

主な機能

  1. 01Obsidianワークスペースの設定
  2. 02ノートの作成、検索、切り替え
  3. 03ノートリンクとバックリンクの管理
  4. 04テンプレートとfrontmatterの設定
  5. 05補完とピッカーの設定

活用シーン

  1. 01NeovimでObsidian vaultを管理
  2. 02テンプレートからデイリーノートを作成
  3. 03ノートを検索して内部リンクを追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill obsidian-nvim

インストール後、Claude Code で/obsidian-nvimを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
commands.md
configuration.md
examples.md
troubleshooting.md

詳細

obsidian.nvim スキル

obsidian.nvim(Obsidian の Vault を管理する Neovim プラグイン)の実装と設定に関する包括的なガイドです。

クイックスタート

最小限のインストール(lazy.nvim)
return {
  "obsidian-nvim/obsidian.nvim",
  version = "*",
  ft = "markdown",
  opts = {
    workspaces = {
      { name = "personal", path = "~/vaults/personal" },
    },
  },
}
システム要件
  • Neovim:>= 0.10.0
  • ripgrep:補完と検索に必要です(brew install ripgrep)
  • pngpaste(macOS):画像の貼り付けに必要です(brew install pngpaste)
  • xclip/wl-clipboard(Linux):画像の貼り付けに必要です

設定

設定オプションの全容については、references/configuration.md を参照してください。

基本的な設定オプション
require("obsidian").setup({
  -- Workspace configuration (required)
  workspaces = {
    { name = "personal", path = "~/vaults/personal" },
    { name = "work", path = "~/vaults/work" },
  },

  -- Daily notes
  daily_notes = {
    folder = "daily",
    date_format = "%Y-%m-%d",
    alias_format = "%B %-d, %Y",
    default_tags = { "daily-notes" },
  },

  -- Templates
  templates = {
    folder = "templates",
    date_format = "%Y-%m-%d",
    time_format = "%H:%M",
  },

  -- Note ID generation (Zettelkasten-style by default)
  note_id_func = function(title)
    local suffix = ""
    if title ~= nil then
      suffix = title:gsub(" ", "-"):gsub("[^A-Za-z0-9-]", ""):lower()
    else
      for _ = 1, 4 do
        suffix = suffix .. string.char(math.random(65, 90))
      end
    end
    return tostring(os.time()) .. "-" .. suffix
  end,

  -- Completion settings
  completion = {
    nvim_cmp = true,  -- or blink = true for blink.cmp
    min_chars = 2,
  },

  -- UI customization
  ui = {
    enable = true,
    checkboxes = {
      [" "] = { char = "󰄱", hl_group = "ObsidianTodo" },
      ["x"] = { char = "", hl_group = "ObsidianDone" },
    },
  },
})

コマンド

コマンドの全容については、references/commands.md を参照してください。

主なコマンド
コマンド説明
:Obsidianコマンドピッカーを開きます
:Obsidian today [OFFSET]デイリーノートを開く/作成します
:Obsidian new [TITLE]新しいノートを作成します
:Obsidian search [QUERY]ripgrep で Vault を検索します
:Obsidian quick_switchノートをファジー検索します
:Obsidian backlinks現在のノートへの参照を表示します
:Obsidian template [NAME]テンプレートを挿入します
:Obsidian workspace [NAME]ワークスペースを切り替えます
ビジュアルモードのコマンド
コマンド説明
:Obsidian link [QUERY]選択範囲を既存のノートにリンクします
:Obsidian link_new [TITLE]ノートを作成し、選択範囲をリンクします
:Obsidian extract_note [TITLE]選択範囲を新しいノートに切り出します

キーマップ

スマートアクション(推奨:<CR>)
vim.keymap.set("n", "<CR>", function()
  if require("obsidian").util.cursor_on_markdown_link() then
    return "<cmd>Obsidian follow_link<CR>"
  else
    return "<CR>"
  end
end, { expr = true })
ナビゲーションリンク
vim.keymap.set("n", "[o", function()
  require("obsidian").util.nav_link("prev")
end, { buffer = true, desc = "Previous link" })

vim.keymap.set("n", "]o", function()
  require("obsidian").util.nav_link("next")
end, { buffer = true, desc = "Next link" })

ピッカー連携

お好みのピッカーを設定します。

picker = {
  name = "telescope",  -- or "fzf-lua", "mini.pick", "snacks.picker"
  note_mappings = {
    new = "<C-x>",
    insert_link = "<C-l>",
  },
  tag_mappings = {
    tag_note = "<C-x>",
    insert_tag = "<C-l>",
  },
},

補完連携

blink.cmp との連携
completion = {
  blink = true,
  nvim_cmp = false,
  min_chars = 2,
},
nvim-cmp との連携
completion = {
  nvim_cmp = true,
  blink = false,
  min_chars = 2,
},

トリガー:

  • [[ - Wiki リンク補完
  • [ - Markdown リンク補完
  • # - タグ補完

テンプレート

テンプレート変数
変数説明
{{title}}ノートのタイトル
{{date}}現在の日付
{{time}}現在の時刻
{{id}}ノート ID
カスタム置換
templates = {
  folder = "templates",
  substitutions = {
    yesterday = function()
      return os.date("%Y-%m-%d", os.time() - 86400)
    end,
    tomorrow = function()
      return os.date("%Y-%m-%d", os.time() + 86400)
    end,
  },
},

Frontmatter の管理

frontmatter = {
  enabled = true,
  func = function(note)
    local out = { id = note.id, aliases = note.aliases, tags = note.tags }
    if note.metadata ~= nil and not vim.tbl_isempty(note.metadata) then
      for k, v in pairs(note.metadata) do
        out[k] = v
      end
    end
    return out
  end,
  sort = { "id", "aliases", "tags" },
},

トラブルシューティング

包括的なトラブルシューティングについては、references/troubleshooting.md を参照してください。

ヘルスチェック
:checkhealth obsidian
クイック修正
問題解決策
補完が動作しないripgrep をインストールします:brew install ripgrep
ピッカーが開かないピッカー名がインストール済みのプラグインと一致していることを確認します
画像を貼り付けられないmacOS:brew install pngpaste
リンクをたどれないカーソルが [[link]] または [text](link) 上にあることを確認します
チェックボックスが表示されない:set conceallevel=2 を設定します
ワークスペースが見つからないパスが存在し、ファイルが Vault 内にあることを確認します
デバッグモード
log_level = vim.log.levels.DEBUG,

例

実用的な設定例については、references/examples.md を参照してください。

リソース


注意点

  • ライブアップデートには Obsidian の起動が必要です — Neovim からの保管庫の変更は、アプリを起動して保管庫にフォーカスするまで Obsidian のインデックスに反映されません。
  • 補完ソースの順序が cmp-buffer と競合します — バッファーソースの順位が高いと、LSP 補完でノートの候補が表示されない場合があります。sorting.priority_weight を明示的に調整する必要があります。
  • デイリーノートのテンプレートパスには、Obsidian の自然言語形式の日付ではなく、Lua の os.date 形式を使用します — nvim では %Y-%m-%d、Obsidian では YYYY-MM-DD です。
  • インデックス未登録のファイルでは、require("obsidian").get_client():resolve_link() は nil を返します — ファイルが存在していても同様です。プラグイン外でノートを作成した後は、:ObsidianRefresh を実行してください。
  • lazy.nvim で BufRead 時に遅延読み込みする場合、プラグイン仕様の評価前に開いた最初の保管庫ファイルではノート機能が使えません — obsidian.nvim に lazy=false を設定するか、VeryLazy イベントを使用してください。

コメント