Neovim Lua

Neovim KISS configuration with Lua
Alternatives To Neovim Lua
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Neovim71,298
a day ago1,692otherVim Script
Vim-fork focused on extensibility and usability
Fzf55,6668112 days ago62April 17, 2021353mitGo
:cherry_blossom: A command-line fuzzy finder
Vim Plug32,286
16 days ago132mitVim Script
:hibiscus: Minimalist Vim Plugin Manager
Coc.nvim23,507823242 days ago109August 31, 202339otherTypeScript
Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.
Nvchad20,301
2 days ago2August 19, 20211gpl-3.0Lua
Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.
Lunarvim16,451
a day ago59gpl-3.0Lua
🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.
Vim Galore15,684
4 months ago8cc-by-sa-4.0Vim script
:mortar_board: All things Vim!
Vim12,637
5 days ago1,565mitTypeScript
:star: Vim for Visual Studio Code
Awesome Neovim12,345
a day ago11cc0-1.0
Collections of awesome neovim plugins.
Telescope.nvim11,972
a day ago293mitLua
Find, Filter, Preview, Pick. All lua, all the time.
Alternatives To Neovim Lua
Select To Compare


Alternative Project Comparisons
Readme

neovim-lua_logo

Neovim KISS configuration with Lua


Table of Contents

Plugins

lazy.nvim - A modern plugin manager for Neovim

feline.nvim (freddiehaddad Fork) - A minimal, stylish and customizable statusline for Neovim written in Lua

nvim-lspconfig - A collection of common configurations for Neovim's built-in language server client

nvim-cmp - Auto completion plugin

LuaSnip - Snippet Engine for Neovim written in Lua

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

Tagbar - A class outline viewer for Vim

gitsigns - Super fast git decorations implemented purely in lua/teal

nvim-treesitter - Nvim Treesitter configurations and abstraction layer

alpha-nvim - A fast and highly customizable greeter for neovim.

nvim-web-devicons - A Lua fork of vim-devicons

Directory Tree

${HOME}/.config/nvim

alt text

Files and Settings

/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 from init.lua file (see below).

See: nanotee/nvim-lua-guide

/nvim/lua/core

/nvim/lua/lsp

  • lspconfig.lua: LSP configuration (language servers, keybinding)

/nvim/lua/plugins

Installation

  1. Install Neovim v0.8.x.

  2. Install Nerd Fonts, (the font of the screenshots are JetBrainsMono Nerd Font).

  3. Install Node.js - npm for download packages of LSP language servers, see: LSP Configuration.

  4. Make a backup of your current nvim folder if necessary:

mv ~/.config/nvim ~/.config/nvim.backup
  1. Download neovim-lua with git and copy the nvim folder in the ${HOME}/.config directory:
git clone https://github.com/brainfucksec/neovim-lua.git
cd neovim-lua/
cp -Rv nvim ~/.config/
  1. Install lazy.nvim for install and manage the plugins, see: lazy.nvim - Installation

  2. Run Neovim for download/sync plugins with lazy

nvim

LSP Configuration

  1. Install LSP language servers with npm
sudo npm install -g bash-language-server pyright vscode-langservers-extracted typescript typescript-language-server
  1. Install additional packages for plugins support:

C, C++:

Python:

  1. Open a source file of one of the supported languages with Neovim, and run command :LspInfo for testing the LSP support.

Languages Currently Supported

Lua - builtin

Bash - bashls

Python - pyright

C, C++ - clangd

HTML, CSS, JSON - vscode-html

JavaScript, TypeScript - tsserver

See: nvim-lspconfig #doc/server_configurations.md

Appearance

Available Colorschemes

Fonts: See: Installation

Icons: nvim-web-devicons

The color scheme (default: OneDark) is defined in the following files:

-- Load nvim color scheme:
local status_ok, color_scheme = pcall(require, 'onedark')
require('onedark').setup {
    style = 'darker'
}
require('onedark').load()
-- Set colorscheme (from core/colors.lua/colorscheme_name)
local colors = require('core/colors').onedark_dark

Keymaps

These are the default keymaps, in the following shortcuts, the <leader> key is set up to , (comma) character, see: keymaps.lua.

Shortcut Mode Description
kk Insert Esc with kk
<leader>c Normal Clear search highlights
<F2> Normal Toggle Paste mode
<leader>tk/th Normal Change split orientation (vertical/horizontal)
<Ctrl> + {h,j,k,l} Normal Move around splits windows
<leader>r Normal Reload configuration file
<leader>s Normal Save file
<leader>q Normal Save (close all windows) and exit from Neovim
<Ctrl> + t Normal Open terminal (:Term)
<Esc> Terminal Exit terminal
<Ctrl> + n Normal Open NvimTree
<leader>z Normal Open Tagbar

Configuration Check

  • 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

alt text

  • 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

Also you can check the configuration of the Plugins and Neovim startup time with lazy commands:

:Lazy check

:Lazy profile

See: lazy.nvim - Usage

Screenshots

(Click to expand)

OneDark (darker)

1-onedark.png

Monokai

2-monokai.png

Ros Pine

3-rose-pine.png

lazy.nvim

4-lazy-nvim.png

Guides and Resources

Other Neovim Lua Projects and Examples

Lua Resources


Disclaimer

This setup is based on 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!

This setup is not a Framework but it is the configuration I use to work on Linux, it can be used by default as it can be a start point to understand how Neovim is structured and maybe improve this config.

Thanks to:

  • All the contributors who helped improve this setup with their reports and advices.

  • All the authors of the sources mentioned above.

  • The users of /r/Neovim subreddit for the support of the configuration.

Popular Neovim Projects
Popular Vim Projects
Popular Text Editors Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Lua
Vim
Dotfiles
Ide
Neovim
Vimrc
Nvim