Manage your Zettelkasten with the help of neuron in {n}vim.
(This is an actively maintaned fork of ihsanturk/neuron.vim that works with newer versions of neuron and changes basically everything, with extra features, commands and different options.)
Using vim-plug
Plug 'junegunn/fzf.vim'
Plug 'fiatjaf/neuron.vim'Using home-manager
There are several ways to manage {n}vim plugins with home-manager. The current release has been tested with the programs.neovim module (tracking nixpkgs-unstable) like so:
{
programs.neovim = {
enable = true;
plugins = with pkgs.vimPlugins; [
neuron-vim
# ...
];
};
# ...
}- Open a zettel with
vimornvim. Onnvimit should- show a virtual floating text on the first line saying how many backlinks it has;
- show a virtual title for each linked zettel in the body.
Most operations are executed in normal mode
gzZshows a list of backlinks. Selecting one will navigate to it.gzzshows a list of all zettels, you can search their titles. Selecting one will navigate to it.- Type
gzito show the samegzzlist. Selecting one will insert a link to it right in front of the your cursor.gzIinstead will insert a folgezettel link ([[[...]]]). You can also select a zettel from insert mode with<c-x><c-u>or<c-x><c-y>and then insert a normal link or a folgezettel link respectively. - If you put your cursor on top of a link to another zettel and press
gzoyou'll navigate to that. gzlinserts a link to the previous zettel you visited.gzLwill do the same but with a folgezettel.
gzugoes back after editing another zettel type.gzurepeatedly will cycle between the two last visited zettels.
gzUgoes back multiple times in the history of visited zettels (andgzPwill go forward).gzncreates a new blank zettelgzNcreates a new zettel using the current word under the cursor as its title.- if you're in visual selection mode
gzNwill instead use the selected text (only the first line if there are more than one selected). This will replace the selected text or current word with a link to the newly-created zettel.
- if you're in visual selection mode
gzsworks likegzz, but instead it searches the content of the zettels, not only the title. For this it calls the external commandag.gztwill allow you to insert new tags orgzTwill show you a list of existing tags to then insert.
-
neuron.vimuses a custom function to generate ids for new zettels that it creates, bypassingneuron newcompletely. By default it generates a random hex string of 8 characters. You can hook into the process by defining a functiong:CustomNeuronIDGeneratorin your.vimrcthat takes an optionaltitleargument. For example:To make it use the title as kebab-cased ID (when using
gzN):func! g:CustomNeuronIDGenerator(title) return substitute(a:title, " ", "-", "g") endfIf
g:CustomNeuronIDGeneratoris not defined in your.vimrcor returns an empty string,neuron.vimwill fall back to generating random IDs.
