147 lines
5.3 KiB
Plaintext
147 lines
5.3 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|
|
|
|
|
==============================================================================
|
|
*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') }
|
|
<
|
|
|
|
|
|
vim:tw=78:sw=4:ts=8:noet:ft=help:norl:
|