Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Neovim | 71,298 | a day ago | 1,692 | other | Vim Script | |||||
Vim-fork focused on extensibility and usability | ||||||||||
Fzf | 55,666 | 8 | 11 | 2 days ago | 62 | April 17, 2021 | 353 | mit | Go | |
:cherry_blossom: A command-line fuzzy finder | ||||||||||
Vim Plug | 32,286 | 16 days ago | 132 | mit | Vim Script | |||||
:hibiscus: Minimalist Vim Plugin Manager | ||||||||||
Coc.nvim | 23,507 | 82 | 324 | 2 days ago | 109 | August 31, 2023 | 39 | other | TypeScript | |
Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers. | ||||||||||
Nvchad | 20,301 | 2 days ago | 2 | August 19, 2021 | 1 | gpl-3.0 | Lua | |||
Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience. | ||||||||||
Lunarvim | 16,451 | a day ago | 59 | gpl-3.0 | Lua | |||||
🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven. | ||||||||||
Vim Galore | 15,684 | 4 months ago | 8 | cc-by-sa-4.0 | Vim script | |||||
:mortar_board: All things Vim! | ||||||||||
Vim | 12,637 | 5 days ago | 1,565 | mit | TypeScript | |||||
:star: Vim for Visual Studio Code | ||||||||||
Awesome Neovim | 12,345 | a day ago | 11 | cc0-1.0 | ||||||
Collections of awesome neovim plugins. | ||||||||||
Telescope.nvim | 11,972 | a day ago | 293 | mit | Lua | |||||
Find, Filter, Preview, Pick. All lua, all the time. |
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
${HOME}/.config/nvim
/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).
/nvim/lua/core
autocmds.lua: Define autocommands with Lua APIs
colors.lua: Define Neovim and plugins color scheme
keymaps.lua: Keymaps configuration file, vim/neovim and plugins keymaps
lazy.lua: Plugin manager configuration file
options.lua: General Neovim settings
statusline.lua: Statusline configuration file
/nvim/lua/lsp
/nvim/lua/plugins
alpha-nvim.lua: Dashboard
indent-blankline.lua: Indent line
nvim-cmp.lua: Autocompletion settings
nvim-tree.lua: File manager settings
nvim-treesitter: Treesitter interface configuration
Install Neovim v0.8.x.
Install Nerd Fonts, (the font of the screenshots are JetBrainsMono Nerd Font
).
Install Node.js - npm for download packages of LSP language servers, see: LSP Configuration.
Make a backup of your current nvim
folder if necessary:
mv ~/.config/nvim ~/.config/nvim.backup
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/
Install lazy.nvim for install and manage the plugins, see: lazy.nvim - Installation
Run Neovim for download/sync plugins with lazy
nvim
npm
sudo npm install -g bash-language-server pyright vscode-langservers-extracted typescript typescript-language-server
C, C++:
Python:
Lua - builtin
Bash - bashls
Python - pyright
C, C++ - clangd
HTML, CSS, JSON - vscode-html
JavaScript, TypeScript - tsserver
See: nvim-lspconfig #doc/server_configurations.md
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
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 |
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
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
OneDark (darker)
Monokai
Ros Pine
lazy.nvim
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/
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.
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.