packer.nvim - A use-package inspired plugin manager for Neovim
nvim-tree.lua - A File Explorer written In Lua
indentBlankline - Adds indentation guides to all lines (including empty lines)
nvim-autopairs - A super powerful autopairs for Neovim
feline.nvim - A minimal, stylish and customizable statusline for Neovim written in Lua
nvim-web-devicons - A Lua fork of vim-devicons
vista.vim - View and search LSP symbols, tags in Vim/NeoVim
nvim-treesitter - Nvim Treesitter configurations and abstraction layer
nvim-cmp - Auto completion plugin
nvim-lspconfig - A collection of common configurations for Neovim's built-in language server client
LuaSnip - Snippet Engine for Neovim written in Lua
gitsigns - Super fast git decorations implemented purely in lua/teal
alpha-nvim - A fast and highly customizable greeter for neovim.
${HOME}/.config/nvim
├── lua
│ ├── core
│ │ ├── colors.lua
│ │ ├── keymaps.lua
│ │ └── settings.lua
│ ├── plugins
│ │ ├── alpha-nvim.lua
│ │ ├── feline.lua
│ │ ├── indent-blankline.lua
│ │ ├── nvim-cmp.lua
│ │ ├── nvim-lspconfig.lua
│ │ ├── nvim-tree.lua
│ │ ├── nvim-treesitter.lua
│ │ └── vista.lua
│ └── packer_init.lua
├── plugin
│ └── packer_compiled.lua
└── init.lua
/nvim
-
init.lua: Main configuration file that call
lua
modules -
lua: Folder of
lua
modules, here reside all the Lua modules that needed. These modules are called frominit.lua
file (see below).
See: https://github.com/nanotee/nvim-lua-guide#where-to-put-lua-files
/nvim/lua
- packer_init.lua: Load plugins
/nvim/lua/core
-
settings.lua: General Neovim settings and configuration
-
keymaps.lua: Keymaps configuration file, vim/neovim and plugins keymaps.
-
colors.lua: Define Neovim and plugins color scheme
/nvim/lua/plugins
-
packer.lua: Plugin manager settings
-
alpha-nvim.lua: Dashboard
-
feline.lua: Statusline configuration file
-
indent-blankline.lua: Indent line
-
nvim-cmp.lua: Autocompletion settings
-
nvim-lspconfig.lua: LSP configuration (language servers, keybinding)
-
nvim-tree.lua: File manager settings
-
nvim-treesitter: Treesitter interface configuration
-
vista.lua: Tag viewer settings
Colorschemes:
Fonts: Cozette
Icons: nvim-web-devicons
-
Install neovim v0.6.x
-
Install npm (for download the packages of LSP language servers)
-
Download this repository with
git
and copy thenvim
folder in the${HOME}/.config
directory (make a backup of your currentnvim
folder if necessary):
git clone https://github.com/brainfucksec/neovim-lua.git
cd neovim-lua/
cp -Rv nvim ~/.config/
- Install packer.nvim for install and manage plugins, see: https://github.com/wbthomason/packer.nvim#quickstart
- Install LSP language servers with
npm
sudo npm install -g bash-language-server pyright vscode-langservers-extracted typescript typescript-language-server
-
Open a source file of one of the supported languages with
neovim
, in the Neovim cmd line run command :LspInfo for testing the LSP support.
Lua - builtin
Bash - bashls
Python - pyright
C, C++ - clangd
HTML, CSS, JSON - vscode-html
JavaScript, TypeScript - tsserver
See: nvim-lspconfig #doc/server_configurations.md
The color scheme is defined in the following files (default: OneDark):
- Neovim UI - nvim/lua/core/settings.lua:
-- Load colorscheme
require('onedark').setup {
style = 'darker'
}
require('onedark').load()
- Statusline - nvim/lua/plugins/feline.lua:
-- Set colorscheme (from core/colors.lua/colorscheme_name)
local colors = require('core/colors').onedark
- Open nvim and run command
checkhealth
, you should not see any error in the output (except for the one related to the Python 2 interpreter if don't have it):
:checkhealth
- You can also use the
startuptime
option to read the nvim startup logs:
nvim --startuptime > /tmp/nvim-start.log
nvim /tmp/nvim-start.log
See: :help startuptime
- Improve "Autocommands" management
- Improve LSP configuration
-
Lua in Y minutes - https://learnxinyminutes.com/docs/lua/
-
Lua Quick Guide - https://github.com/medwatt/Notes/blob/main/Lua/Lua_Quick_Guide.ipynb
-
Lua 5.4 Reference Manual - https://www.lua.org/manual/5.4/
As all my setups I try to follow the KISS principle, probably some concepts may not be valid for everyone, then feel free to take what you need but don't install anything without checking first!
Thanks to all the authors of the sources mentioned above and to all the others from whom I "stole" some configs :)