Files
vim-denote/doc/denote.txt
2026-02-26 14:20:03 +01:00

155 lines
5.6 KiB
Plaintext

*denote.txt* For Vim version 9.0. Last change: 2026 Feb 26
This is the documentation for the denote plugin.
==============================================================================
CONTENTS *vim-denote* *denote*
1. Introduction |denote-intro|
2. Commands |denote-commands|
3. Settings |denote-settings|
4. Keys |denote-keys|
==============================================================================
*denote-intro*
Introduction ~
Denote is a file-naming scheme developed by Protesilaos Stavrou and an Emacs
tool for handling such files. Notes and other files that follow this scheme
can be linked, and the links are preserved even when the files are renamed due
do adjusting the tags or changing the title of a note. The official manual is
available online:
https://protesilaos.com/emacs/denote
The denote plugin adds denote functionality to vim --- the vim way. We are
aware of two other plugins, but we fear that these plugins are not flexible
enough, and more importantly, do not follow the vim philosophy for handling
denote notes. These mentioned plugins are available here:
https://github.com/shuckster/denote-md
https://git.sr.ht/~ashton314/vim-denote
In contrast to these plugins, the present package relies on the
|location-list| features for displaying denote entries, and on the options
|'quickfixtextfunc'|, |'includeexpr'|, and |'omnifunc'|. With these, denote
links can be followed using |gf|, and completed using omni comletion (see,
|compl-omni|). For link completion, press |i_CTRL-X_CTRL-O| after typing any
prefix of a denote link. This completion also works with titles: by invoking
omni completion after typing "denote:foo", denote links are completed for
entries containing "foo" in the title.
*denote-commands*
Commands ~
*:DenoteDirectory*
*:DenoteDirectory!*
:DenoteDirectory[!] {path}
Set the provided {path} as the denote directory that will be used by
all following commands. The {path} argument is autocompleted. With the
bang, the autocompletion works for all directories available on your
system. Without the bang, only directories listed in the
|g:denote_directories| variable are autocompleted.
*:Denote*
:Denote [{keyword ..}]
Populate the location list of the current window with the denote
entries present in the current directory. This command may be
supplemented with any number of arguments that filter the entries
according to the appearance of the keywords in the file name.
*:DenoteTag*
:DenoteTag {tag}
This command takes as argument a tag, and populates the location list
with all denote entries of that are tagged accordingly. The tags are
autocompleted (see, |c_<Tab>|). Also fuzzy matching is possible when
"fuzzy" is contained in |'wildoptions'|.
*:DenoteGrep*
:DenoteGrep /{pattern}/[g][j][f]
This command is a wrapper around |:lvimgrep| to search for a pattern
in the denote entries. The required argument is a pattern as required
by |:vimgrep|, i.e., /{pattern}/[g][j][f].
*:DenoteNew*
:DenoteNew {title}
This command takes as argument a note title, and generates a new
denote entry with the specified title. The entry file type is
controlled by the setting |g:denote_new_ft|.
*:DenoteBackReferences*
:DenoteBackReferences
This command populates the location list with all references to the
current note. This command can only be called from an opened denote
note.
*denote-settings*
Settings ~
*g:denote_directories*
g:denote_directories list
With this option, may may specify a list of your denote directories.
This list is used for the autocompletion of the |:DenoteDirectory|
command. The default value is
>
let g:denote_directories = []
<
*g:denote_note_file_extension*
g:denote_note_file_extension list
With this setting, you may specify the file extensions of all denote
entries within which |:DenoteGrep| will search, and for which files
denote link completion and the |:DenoteBackReferences| command will be
available. If left unspecified, it is set to the following default
value:
>
let g:denote_note_file_extension = ['md', 'org', 'txt']
<
*g:denote_loc_title_columns*
g:denote_loc_title_columns number
This integer specifies the number of columns used to display the
titles of denote entries. Per default, it is set to:
>
let g:denote_loc_title_columns = 60
<
*g:denote_new_ft*
g:denote_new_ft string
Newly created notes are of this file type. Possible values are 'md',
'org', or 'txt', with the following default:
>
let g:denote_new_ft = 'md'
<
*g:denote_fm_md_type*
g:denote_fm_md_type string
The front matter of 'md' notes is given as 'yaml' or as 'toml'. By
default, this package uses 'yaml':
>
let g:denote_fm_md_type = 'yaml'
<
*g:Denote_identifier_fun*
g:Denote_identifier_fun Funcref
Denote allows the use of custom identifiers. This variable, if set,
points to a function that generates identifiers for newly created
notes. The function is supposed to return a unique string. By default,
the variable set as
>
let g:Denote_identifier_fun = function('denote#meta#identifier_generate')
<
which calls |strftime('%Y%m%dT%H%M%S')| if |strftime()| is available, and
|rand()| otherwise. Another reasonable setting would be to use some uuid
generator and to specify, e.g.,
>
let g:Denote_identifier_fun = { -> system('uuidgen')
\ ->substitute('[^[:xdigit:]]', '', 'g') }
<
*denote-keys*
Keys ~
*denote-r*
r Reload the location list showing denote entries or denote grep matches
found. This key is only active in location lists generated by the
present package.
vim:tw=78:sw=4:ts=8:noet:ft=help:norl: