Home

Awesome

Deprecation and archive notice

This project is now deprecated. I decided that having so many great features in a single editor is not the right way to write software, and I wanted to do something different outside of Neovim. There are many other Neovim Lua plugin alternatives out there.

Thanks for having used mind.nvim!

<h1 align="center">mind.nvim</h1> <p align="center"> <img src="https://user-images.githubusercontent.com/506592/185793543-e12baf93-8329-4e3b-96d2-da38547691ee.png"/> </p> <p align="center"> <img src="https://img.shields.io/github/issues/phaazon/mind.nvim?color=cyan&style=for-the-badge"/> <img src="https://img.shields.io/github/issues-pr/phaazon/mind.nvim?color=green&style=for-the-badge"/> <img src="https://img.shields.io/github/last-commit/phaazon/mind.nvim?style=for-the-badge"/> <img src="https://img.shields.io/github/v/tag/phaazon/mind.nvim?color=pink&label=release&style=for-the-badge"/> </p> <p align="center"> <a href="#installation">Install</a> </p>

This plugin is a new take on note taking and task workflows. The idea is derived from using several famous plugins, such as org-mode or even standalone applications, like Notion, and add new and interesting ideas.

<!-- vim-markdown-toc GFM --> <!-- vim-markdown-toc -->

Motivation

Mind is an organizer tool for Neovim. It can be used to accomplish and implement a wide variety of workflows. It is designed to quickly add items in trees. Why a tree? Well, list of things like TODO lists are great but they lack the organization part. Most of them can be gathered in “lists of lists” — you probably have that on your phone. A list of list is basically a tree. But editing and operating a list of list is annoying, so it’s better to have a tool that has the concept of a node and a tree as a primitive.

Mind trees can be used to implement workflows like:

The possibilities are endless.

Features

Mind features two main concepts; global trees and local trees:

Atop of that, Mind has the concept of “project” trees, which are either a global tree, or a local tree. A global project tree is stored at the same place as your main tree and the purpose of such a tree is to be opened only when your cwd is the same as the tree, but you don’t want the tree to be in the actual cwd. That can be the case if you work on a project where you don’t want to check the tree in Git or any versioning system.

On the other side, a local project tree is what it means: it lives in the cwd, under .mind, basically.

Besides that, Mind allows you to manipulate trees and nodes. Feature set:

Getting started

This section will guide you through the list of steps you must take to be able to get started with Mind.

Prerequisites

This plugin was written against Neovim 0.7.2, so you need to ensure you are running Neovim 0.7.2 or higher.

Lua dependencies:

Installation

This installation guide uses packer.nvim but the procedure should be quite similar for other package managers.

use {
  'phaazon/mind.nvim',
  branch = 'v2.2',
  requires = { 'nvim-lua/plenary.nvim' },
  config = function()
    require'mind'.setup()
  end
}

This will bring you a default experience. Feel free to customize later the setup invocation (:h mind.setup).

Important note about versioning

This plugin implements SemVer via git branches and tags. Versions are prefixed with a v, and only patch versions are git tags. Major and minor versions are git branches. You are very strongly advised to use a major version dependency to be sure your config will not break when Mind gets updated.

It is strongly discouraged to use master as that branch can introduce breaking changes at any time.

Nightly users

Mind supports nightly releases of Neovim. However, keep in mind that if you are on a nightly version, you must be on the last one. If you are not, then you are exposed to Neovim compatibility issues / breakage.

Usage

A wiki is planned, but for now, you can simply have a look at :h mind-usage and :h mind-commands.

Keybindings

The user commands defined by Mind are mapped to no keybindings by default. However, once you have a tree open, buffer-local keybindings are automatically inserted. You can change them by setting they behavior you want in opts.keymaps. More information about that in :h mind-config-keymaps.