Added
- External config file paths (desktop only) — custom vimrc and init.lua paths now accept absolute filesystem paths (e.g.
~/.config/obsidian/init.lua,C:\Users\<you>\.config\obsidian\vimrc), enabling shared config across multiple vaults. Paths starting with/,~, or a drive letter are read directly from the filesystem viawindow.requireinstead of the vault adapter. Tilde (~) is expanded to the user's home directory. Mobile gracefully falls back to vault-only paths. (#51)- Plugin:
src/util/external-fs.ts(new module:isAbsolutePath,readExternalFile,externalFileExists,expandTilde,getObsidianUserDataDir),src/lua/loader.ts(fileExists/readLuaFileexternal path fallback),src/vimrc/loader.ts(fileExists/readVimrcFileexternal path fallback),src/settings.ts(updated descriptions)
- Plugin:
- Unified picker / fuzzy finder — telescope.nvim-inspired fuzzy picker with 11 sources, preview pane, live grep, frecency scoring, and split-open support
- 10 built-in sources: files (
:files), buffers (:buffers), commands (:commands), headings (:headings), outline (:outline), backlinks (:backlinks), tags (:tags), recent files (:recent), marks (:marks), registers (:registers) - Live grep (
:livegrep): real-time vault content search with 200ms debounce, generation-based cancellation, and minimum 2-character query - Preview pane: side-by-side file content preview with per-source content (file content, surrounding lines for headings/grep/marks, command info, register content), responsive collapse on narrow screens (<600px),
<C-d>/<C-u>preview scrolling - Frecency scoring: recently/frequently accessed items rank higher. Time-bucket weights (1h–30d), 1000-entry cap, persists across restarts via plugin data. Applies to files, buffers, commands, headings, backlinks, grep, recent.
- Picker resume:
:resume/<leader>fp/vim.obsidian.pick('resume')reopens the last picker with the same query and selection - Split-open:
<C-x>(horizontal split),<C-v>(vertical split),<C-t>(new tab) from any file-based picker - Leader mappings: 11
<leader>f*bindings with which-key "Find" group (opt-out viapickerLeaderMappingssetting, default: on) - Keyboard navigation:
<C-n>/<C-p>,<C-j>/<C-k>, arrows,<Enter>,<Escape>,<C-c> - Matching engine: uFuzzy (7.5KB, unicode support) with match highlighting
- Fallback setting:
pickerboolean (default: true) — when disabled, migrated commands (:buffers,:marks,:registers,:grep,:backlinks,:ob) fall back to previous VimInfoModal/SuggestModal behavior - Lua API:
vim.obsidian.pick(source, opts?)— invoke any picker source from Lua - Obsidian command palette: 12 picker commands registered via
addCommandfor discoverability - Global ex command support: all picker commands available in non-editor views via
:global ex command modal - 200-item render cap with
requestAnimationFrame-free synchronous rendering for flicker-free updates - Plugin:
src/picker/(picker.ts, matcher.ts, registry.ts, frecency.ts, types.ts, sources/*.ts),src/picker/sources/(files, buffers, commands, grep, live-grep, headings, backlinks, tags, recent, marks, registers, split-open, preview-utils)
- 10 built-in sources: files (
isEasyMotionActive()guard — exported fromsrc/easymotion/register.tsto prevent picker from opening during EasyMotion label selection- Plugin:
src/easymotion/register.ts
- Plugin:
Changed
:buffers/:lsnow opens fuzzy picker instead of VimInfoModal table (whenpickersetting enabled):marksnow opens fuzzy picker with jump-to-mark action (whenpickersetting enabled):registersnow opens fuzzy picker with paste-at-cursor action (whenpickersetting enabled):ob(no args) now opens commands picker instead of VimInfoModal command list (whenpickersetting enabled):grep(no args) now opens live grep picker instead of showing "Usage" notice (whenpickersetting enabled):grep <query>now opens picker with pre-computed results instead of SuggestModal (whenpickersetting enabled):backlinksnow opens fuzzy picker instead of VimInfoModal table (whenpickersetting enabled)- Bundle size: +17.5KB from uFuzzy dependency (unicode mode)
Documentation
docs/features/ex-commands.md: added picker commands sectiondocs/reference/keybindings.md: added picker ex commands and<leader>f*mappingsdocs/configuration/lua-config.md: addedvim.obsidian.pick()API documentation; added "Shared config across vaults" subsection documenting external path supportdocs/configuration/vimrc.md: added "Shared config across vaults" subsection documenting external path supportdocs/configuration/settings.md: updated custom path descriptions to mention absolute path supportKNOWN_LIMITATIONS.md: added picker section with limitations; updated config file resolution section with external path support
Full Changelog: 0.40.0...0.41.0