Archive Note: This repo has been moved to https://codeberg.org/Historia/denote-fzf-lua.
Neovim plugin that uses fzf-lua
to search a directory of notes formatted with the Emacs Denote package's file-naming scheme:
DATE==SIGNATURE--TITLE__KEYWORDS.EXTENSION
The nice custom table for Denote files is the only unique feature of this plugin. If you don't care about that you should just configure fzf-lua
alone however you like it.
Example config via lazy.nvim
{
"DefaultGen/denote-fzf-lua",
opts = {
dir = "~/notes" -- Denote notes directory
-- Toggle which Denote fields are displayed in search
search_fields = {
path = false,
date = true,
time = false,
sig = false,
title = true,
keywords = true,
ext = false,
},
-- OPTIONAL:
-- fzf-lua plugin options. Check fzf-lua docs for full details.
-- Use this to set custom window and fzf options (and more)
fzf_lua_opts = {
winopts = {
height = 0.85,
width = 0.80,
row = 0.35,
col = 0.50,
preview = {
layout = 'vertical', -- vertical, horizontal, or flex
vertical = 'down:45%', -- Alt: horizontal = 'right:50%'
},
},
-- Options sent to fzf. If you don't include these, it will be
-- set to the defaults below (which look like the screenshot)
fzf_opts = {
['--reverse'] = true,
['--no-info'] = true,
['--no-separator'] = true,
['--no-hscroll'] = true,
['-i'] = true,
},
},
},
},
ibhagwan/fzf-lua
- Neovim pluginfzf
- Fuzzy finder- (OPTIONAL)
fd
- Fastfind
replacement - (OPTIONAL)
sd
- Fastsed
replacement - (OPTIONAL)
qsv
- Fastcolumn
replacement - (OPTIONAL)
bat
- Nicer preview thancat
- (OPTIONAL)
ripgrep
- Required to search note contents
Arch Linux: sudo pacman -S fzf ripgrep fd sd bat
yay -S qsv-bin
Debian: sudo apt install fzf ripgrep fd-find sd bat
export PATH=/usr/lib/cargo/bin/:$PATH (to add `fd` to path)
Install qsv from Github
If the optional dependencies are missing denote-fzf-lua
falls back to standard Unix tools. The Rust tools are 2-3x faster. On my PC this is a difference of 0.1s vs 0.2s for 10k notes, or 0.6s vs 1.9s for 100k notes.
qsv
is used over the smaller, more ubiquitous xsv
because it can table format very large inputs (e.g. 100k notes) without errors.
" Searches filenames in `dir` with fzf and displays results as a table
:DenoteSearch files
" Standard rg search through file contents in `dir`.
" Nothing special about this, it's just a convenient command that uses the same fzf-lua options
:DenoteSearch contents
GNU AGPL (fzf-lua
license)