Simple NeoVim plugin with Obsidian-like-notes support.
Why is it better than Obsidian:
- Making notes inside NeoVim during coding sessions.
- Lua as extension language.
- Existing NeoVim infrastructure.
Project is currently in WIP status.
This project requires:
- nvim-lua/plenary.nvim: plenary: full; complete; entire; absolute; unqualified. All the lua functions I don't want to write twice.. Collection of useful utilities: testing, IO, etc.
Plugin provides a source for completion using hrsh7th/nvim-cmp: A completion plugin for neovim coded in Lua..
Example installation using folke/lazy.nvim:
return {
{
"IlyasYOY/obs.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
},
dev = true,
config = function()
local obs = require "obs"
obs.setup {
vault_home = "~/Notes",
vault_name = "Notes",
journal = {
template_name = "daily",
},
}
vim.keymap.set("n", "<leader>nn", "<cmd>ObsNvimFollowLink<cr>")
vim.keymap.set("n", "<leader>nr", "<cmd>ObsNvimRandomNote<cr>")
vim.keymap.set("n", "<leader>nN", "<cmd>ObsNvimNewNote<cr>")
vim.keymap.set("n", "<leader>ny", "<cmd>ObsNvimCopyObsidianLinkToNote<cr>")
vim.keymap.set("n", "<leader>no", "<cmd>ObsNvimOpenInObsidian<cr>")
vim.keymap.set("n", "<leader>nd", "<cmd>ObsNvimDailyNote<cr>")
vim.keymap.set("n", "<leader>nw", "<cmd>ObsNvimWeeklyNote<cr>")
vim.keymap.set("n", "<leader>nrn", "<cmd>ObsNvimRename<cr>")
vim.keymap.set("n", "<leader>nT", "<cmd>ObsNvimTemplate<cr>")
vim.keymap.set("n", "<leader>nM", "<cmd>ObsNvimMove<cr>")
vim.keymap.set("n", "<leader>nb", "<cmd>ObsNvimBacklinks<cr>")
end,
},
}My configuration you can find here.
Example setup:
obs.setup {
journal = {
-- setting for daily note template name
daily_template_name = "daily",
},
}Type definition for table is provided here as obs.VaultOpts.
I won't go over all configuration options in details. There are the most important defaults the plugin provides:
~/vimwikias directory for notes, with sub-directories:./meta/templatesas templates folder../diaryas daily notes folder.
Example mappings configuration may be found here.
- Insert template.
:ObsNvimTemplateopens dialog to select and insert template. - Follow link under cursor.
:ObsNvimFollowLink. - Open random note.
:ObsNvimRandomNote. - Copy obsidian link to a current note.
:ObsNvimCopyObsidianLinkToNote. - Open obsidian link to a current note.
:ObsNvimOpenInObsidian. - Creates a new note.
:ObsNvimNewNoteprefixes note withYYYY-MM-dd. In case of empty name plugin generates name from time-stamp. Example:2023-03-12 1678625141.md. - Opens daily note.
:ObsNvimDailyNotecreates one if doesn't exist. - Opens weekly note.
:ObsNvimWeeklyNotecreates one if doesn't exist. - Find backlinks.
:ObsNvimBacklinks. - Renames current note.
:ObsNvimRenameupdates links to the note. I advice you to rename notes inside Obsidian for important notes with lots of back-links. - Move note to directory.
:ObsNvimMoveopens dialog to select directory to move current note to.
- Here you can find useful LuaSnip snippets for Obsidian.