NIVM/Readme.md
Robert Morrison fb537df11b chore(init): Initial working version
Create and push an initial working version of this repo before I change
things on this machine

Signed-off-by: Robert Morrison <robert@closedless.xyz>
2023-09-10 22:22:30 +01:00

98 lines
3.5 KiB
Markdown

# NⅣM
The fourth in a lineage of configurations for neovim.
## Important information
I **strongly** recommend against just copying my entire
configuration, what works for me might not work so well for you.
It would also deprive you of learning what you can do yourself.
To use this configuration you **MUST** have a
[Nerd Font](https://www.nerdfonts.com) installed and
configured as your default terminal font (I personally use Blex mono).
⚠️ This configuration is currently only tested against nightly versions of neovim and
may use features that are not available in the current stable version.
## Current features
- [Lazy plugin loading](#lazy)
- [lualine](#lualine)
- [treesitter support](#treesitter)
- Filetype specific options (see [ftplugin](#ftplugin))
## Features to come (A.K.A TODO:)
- Full help written in proper help format.
- Crazy useful autocommands.
- Figure out why the keybind for knap doesn't appear immediately after the
`autocmd` is triggered.
## In-depth feature details
In this section you can expect to find semi-detailed descriptions of each
feature, this should be enough info for you to understand what does what.
### lazy
As part of this configuration I switched from using `Packer.nvim` to
[`Lazy.nvim`](https://github.com/folke/lazy.nvim) which allows me to easily
make plugins load lazily.
This, in theory, will greatly decrease load times and the overall resource
footprint since I only need to load the plugins that are actually used.
While I haven't (nor do I plan to waste time making) any data to base this
on I certainly feel that using Lazy has made neovim feel faster and more
responsive.
### lualine
[Lualine](https://github.com/nvim-lualine/lualine.nvim) is a slick fast
status line for neovim written in lua.
As I prefer to have as much screen as possible dedicated to each open file
I have configured lualine to use a global line, this means it only displays
once at the bottom of the window.
<!-- TODO: add screenshot of bar -->
I also have my own bar module configured that shows if you have `spell`
enabled or not.
<!-- TODO: add screenshot for this -->
### Treesitter
Treesitter is natively supported in neovim and is a much better way of
highlighting files than the earlier regular expression based highlighting.
Treesitter also fully parses the file into a syntax tree, allowing for more
features including
<dl>
<dt><b>Incremental selection:</b></dt>
<dd>Selecting portions of a file based on their scope</dd>
<dt><b>Indentation:</b></dt>
<dd>Indentation based purely on semantics, not on what came before.</dd>
<dt><b>Rainbow brackets</b></dt>
<dd>Brackets that are colour matched based purely on code scope</dd>
<dt><b>Folding</b></dt>
<dd>Code folding that requires no language server, markers, or regular
expressions and cares not for indentation</dd>
<dt><b></b></dt>
</dl>
### ftplugin
Neovim is an advanced editor with many useful features. In some cases I
would like some of these features to be set certain ways when editing
specific file-types. This is configured using the `ftplugin` directory.
Each file is named after the file-type I would like the options set for.
If you feel you want to make a specific file-type have specific options then
this is where you can make that happen.
The headings below let you know what options are set for currently
configured file-types.
#### mail
- spell enabled
- textwidth 75
#### markdown
- spell enabled
- textwidth 75
#### vimwiki
- spell enabled
- textwidth 75