• Stars
    star
    2,309
  • Rank 19,141 (Top 0.4 %)
  • Language
    Lua
  • License
    MIT License
  • Created almost 3 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Library of 30+ independent Lua modules improving overall Neovim (version 0.7 and higher) experience with minimal effort


GitHub license GitHub tag Current version

Library of 30+ independent Lua modules improving overall Neovim (version 0.7 and higher) experience with minimal effort. They all share same configuration approaches and general design principles.

Think about this project as "Swiss Army knife" among Neovim plugins: it has many different independent tools (modules) suitable for most common tasks. Each module can be used separately without any startup and usage overhead.

If you want to help this project grow but don't know where to start, check out contributing guides or leave a Github star for 'mini.nvim' project and/or any its standalone Git repositories.

Table of contents

Installation

There are two branches to install from:

  • main (default, recommended) will have latest development version of plugin. All changes since last stable release should be perceived as being in beta testing phase (meaning they already passed alpha-testing and are moderately settled).
  • stable will be updated only upon releases with code tested during public beta-testing phase in main branch.

Here are code snippets for some common installation methods:

Branch Code snippet
Main { 'echasnovski/mini.nvim', version = false },
Stable { 'echasnovski/mini.nvim', version = '*' },
Branch Code snippet
Main use 'echasnovski/mini.nvim'
Stable use { 'echasnovski/mini.nvim', branch = 'stable' }
Branch Code snippet
Main Plug 'echasnovski/mini.nvim'
Stable Plug 'echasnovski/mini.nvim', { 'branch': 'stable' }
  • Every module is also distributed as a standalone Git repository. Check out module's information for more details.

Important: don't forget to call module's setup() (if required) to enable its functionality.

Note: if you are on Windows, there might be problems with too long file paths (like error: unable to create file <some file name>: Filename too long). Try doing one of the following:

  • Enable corresponding git global config value: git config --system core.longpaths true. Then try to reinstall.
  • Install plugin in other place with shorter path.

Modules

Module Description Overview Details
mini.ai Extend and create a/i textobjects README Help file
mini.align Align text interactively README Help file
mini.animate Animate common Neovim actions README Help file
mini.base16 Base16 colorscheme creation README Help file
mini.basics Common configuration presets README Help file
mini.bracketed Go forward/backward with square brackets README Help file
mini.bufremove Remove buffers README Help file
mini.colors Tweak and save any color scheme README Help file
mini.comment Comment lines README Help file
mini.completion Completion and signature help README Help file
mini.cursorword Autohighlight word under cursor README Help file
mini.doc Generate Neovim help files README Help file
mini.fuzzy Fuzzy matching README Help file
mini.hipatterns Highlight patterns in text README Help file
mini.hues Generate configurable color scheme README Help file
mini.indentscope Visualize and work with indent scope README Help file
mini.jump Jump to next/previous single character README Help file
mini.jump2d Jump within visible lines README Help file
mini.map Window with buffer text overview README Help file
mini.misc Miscellaneous functions README Help file
mini.move Move any selection in any direction README Help file
mini.pairs Autopairs README Help file
mini.sessions Session management README Help file
mini.splitjoin Split and join arguments README Help file
mini.starter Start screen README Help file
mini.statusline Statusline README Help file
mini.surround Surround actions README Help file
mini.tabline Tabline README Help file
mini.test Test Neovim plugins README Help file
mini.trailspace Trailspace (highlight and remove) README Help file

General principles

  • Design. Each module is designed to solve a particular problem targeting balance between feature-richness (handling as many edge-cases as possible) and simplicity of implementation/support. Granted, not all of them ended up with the same balance, but it is the goal nevertheless.

  • Independence. Modules are independent of each other and can be run without external dependencies. Although some of them may need dependencies for full experience.

  • Structure. Each module is a submodule for a placeholder "mini" module. So, for example, "surround" module should be referred to as "mini.surround". As later will be explained, this plugin can also be referred to as "MiniSurround".

  • Setup:

    • Each module (if needed) should be setup separately with require(<name of module>).setup({}) (possibly replace {} with your config table or omit to use defaults). You can supply only values which differ from defaults, which will be used for the rest ones.

    • Call to module's setup() always creates a global Lua object with coherent camel-case name: require('mini.surround').setup() creates _G.MiniSurround. This allows for a simpler usage of plugin functionality: instead of require('mini.surround') use MiniSurround (or manually :lua MiniSurround.* in command line); available from v:lua like v:lua.MiniSurround. Considering this, "module" and "Lua object" names can be used interchangeably: 'mini.surround' and 'MiniSurround' will mean the same thing.

    • Each supplied config table is stored in config field of global object. Like MiniSurround.config.

    • Values of config, which affect runtime activity, can be changed on the fly to have effect. For example, MiniSurround.config.n_lines can be changed during runtime; but changing MiniSurround.config.mappings won't have any effect (as mappings are created once during setup()).

  • Buffer local configuration. Each module can be additionally configured to use certain runtime config settings locally to buffer. See mini.nvim-buffer-local-config section in help file for more information.

  • Disabling. Each module's core functionality can be disabled globally or locally to buffer. See "Disabling" section in module's help page for more details. See mini.nvim-disabling-recipes section in main help file for common recipes.

  • Silencing. Each module providing non-error feedback can be configured to not do that by setting config.silent = true (either inside setup() call or on the fly).

  • Highlight groups. Appearance of module's output is controlled by certain highlight group (see :h highlight-groups). To customize them, use highlight command. Note: currently not many Neovim themes support this plugin's highlight groups; fixing this situation is highly appreciated. To see a more calibrated look, use 'mini.hues', 'mini.base16', or any of plugin's colorscheme.

  • Stability. Each module upon release is considered to be relatively stable: both in terms of setup and functionality. Any non-bugfix backward-incompatible change will be released gradually as much as possible.

Plugin colorschemes

This plugin comes with several color schemes (all have both dark and light variants):

  • randomhue - random background and foreground of the same hue with medium saturation.
  • minicyan - cyan and grey main colors with medium contrast and saturation palette.
  • minischeme - blue and yellow main colors with high contrast and saturation palette.

Activate them as regular colorscheme (for example, :colorscheme randomhue or :colorscheme minicyan). You can see how they look in demo of 'mini.hues' or demo of 'mini.base16'.

Planned modules

This is the list of modules I currently intend to implement eventually (as my free time and dedication will allow), in alphabetical order:

  • 'mini.clue' - "show as you type" floating window with customizable information. Something like folke/which-key.nvim and anuvyklack/hydra.nvim
  • 'mini.exchange' - exchange two regions of text. Something like tommcdo/vim-exchange.
  • 'mini.filetree' - file tree viewer. Simplified version of nvim-tree/nvim-tree.lua.
  • 'mini.keymap' - utilities to make non-trivial mappings (like max397574/better-escape.nvim and dot-repeatable mappings).
  • 'mini.pick' - fuzzy picker. A very simplified version of nvim-telescope/telescope.nvim.
  • 'mini.snippets' - work with snippets. Something like L3MON4D3/LuaSnip but only with more straightforward functionality.
  • 'mini.statuscolumn' - customizable 'statuscolumn'.
  • 'mini.terminals' - coherently manage terminal windows and send text from buffers to terminal windows. Something like kassio/neoterm.
  • 'mini.quickfix' - fuzzy search and preview of quickfix entries. Possibly with some presets for populating quickfix list (like files, help tags, etc.). Similar to kevinhwang91/nvim-bqf.

More Repositories

1

mini.surround

Neovim Lua plugin with fast and feature-rich surround actions. Part of 'mini.nvim' library.
Lua
77
star
2

mini.indentscope

Neovim Lua plugin to visualize and operate on indent scope. Part of 'mini.nvim' library.
Lua
66
star
3

nvim

My custom NeoVim setup
Lua
59
star
4

mini.animate

Neovim Lua plugin to animate common Neovim actions. Part of 'mini.nvim' library.
Lua
57
star
5

mini.ai

Neovim Lua plugin to extend and create `a`/`i` textobjects. Part of 'mini.nvim' library.
Lua
40
star
6

mini.comment

Neovim Lua plugin for fast and familiar per-line commenting. Part of 'mini.nvim' library.
Lua
39
star
7

ruler

Tidy Data Validation Reports
R
31
star
8

mini.pairs

Neovim Lua plugin to automatically manage character pairs. Part of 'mini.nvim' library.
Lua
30
star
9

mini.map

Neovim Lua plugin to manage window with buffer text overview. Part of 'mini.nvim' library.
Lua
30
star
10

mini.bracketed

Neovim Lua plugin to go forward/backward with square brackets. Part of 'mini.nvim' library.
Lua
29
star
11

mini.move

Neovim Lua plugin to move any selection in any direction. Part of 'mini.nvim' library.
Lua
27
star
12

mini.clue

Show next key clues. Part of 'mini.nvim' library.
Lua
26
star
13

mini.bufremove

Neovim Lua plugin to remove buffers. Part of 'mini.nvim' library.
Lua
24
star
14

mini.align

Neovim Lua plugin to align text interactively. Part of 'mini.nvim' library.
Lua
22
star
15

comperank

Ranking Methods for Competition Results
R
21
star
16

mini.operators

Text edit operators. Part of 'mini.nvim' library.
Lua
18
star
17

mini.splitjoin

Neovim Lua plugin to split and join arguments. Part of 'mini.nvim' library.
Lua
18
star
18

mini.completion

Neovim Lua plugin for completion and signature help. Part of 'mini.nvim' library.
Lua
16
star
19

pdqr

Create, transform, and summarize custom random variables with distribution functions
R
14
star
20

mini.colors

Tweak and save any color scheme. Part of 'mini.nvim' library.
Lua
13
star
21

mini.starter

Neovim Lua plugin with fast and flexible start screen. Part of 'mini.nvim' library.
Lua
10
star
22

mini.cursorword

Neovim Lua plugin for autohighlighting word under cursor. Part of 'mini.nvim' library.
Lua
9
star
23

mini.hipatterns

Highlight patterns in text. Part of 'mini.nvim' library.
Lua
8
star
24

comperes

Manage Competition Results
R
7
star
25

mini.base16

Neovim Lua plugin for Base16 colorscheme creation. Part of 'mini.nvim' library.
Lua
7
star
26

keyholder

Store Data About Rows
R
7
star
27

mini.doc

Neovim Lua plugin to generate Neovim help files. Part of 'mini.nvim' library.
Lua
6
star
28

mini.statusline

Neovim Lua plugin with minimal and fast statusline. Part of 'mini.nvim' library.
Lua
6
star
29

mini.jump

Neovim Lua plugin to jump forward/backward to a single character. Part of 'mini.nvim' library.
Lua
6
star
30

mini.trailspace

Neovim Lua plugin to manage trailspace (highlight and remove). Part of 'mini.nvim' library.
Lua
6
star
31

mini.sessions

Neovim Lua plugin for session management. Part of 'mini.nvim' library.
Lua
5
star
32

mini.test

Neovim Lua plugin to test Neovim plugins. Part of 'mini.nvim' library.
Lua
5
star
33

mini.jump2d

Neovim Lua plugin to jump within visible lines. Part of 'mini.nvim' library.
Lua
5
star
34

mini.tabline

Neovim Lua plugin with minimal and fast tabline. Part of 'mini.nvim' library.
Lua
5
star
35

highdown

Code Highlight for pkgdown Site
R
5
star
36

mini.basics

Neovim Lua plugin with common configuration presets for options, mappings, and autocommands. Part of 'mini.nvim' library.
Lua
4
star
37

mini.misc

Neovim Lua plugin with miscellaneous useful functions. Part of 'mini.nvim' library.
Lua
4
star
38

mini.diff

Work with diff hunks. Part of 'mini.nvim' library.
Lua
4
star
39

mini.fuzzy

Neovim Lua plugin with fuzzy matching functionality. Part of 'mini.nvim' library.
Lua
3
star
40

mini.hues

Generate configurable color scheme. Part of 'mini.nvim' library.
Lua
3
star
41

dotfiles

My personal computer environment setup
C
2
star
42

habr-articles

Source for my habr.com activity
R
1
star
43

jeroha

Jeff-Roger-Hadley text analysis.
R
1
star
44

mini.deps

Plugin manager. Part of 'mini.nvim' library.
1
star
45

questionflow-site

HTML
1
star