Awesome
Modern Neovim Configuration
Neovim + Linux = Best Almighty IDE
This configuration is for linux only.
Mainly Supported Language/Framework List
- Rust
- Javascript/Typescript
- Python
- Shell
- SQL
- Lua
- GLSL
- WGSL
- Vue
- React
To support a new one, check these.
- treesitter
- lsp
- dap (nvim-dap, neotest)
- formatter
- snippet
Personal Environment
OS: Gentoo
Terminal: WezTerm
Neovim: V0.10+
Dependencies
nodejs
,rust
(required formason.nvim
andnvim-treesitter
). Use:h mason-requirements
to check more dependencies.rg
,fd
command (required fortelescope.nvim
)fcitx5
(required forfcitx.nvim
)deeplx
(required fortranslate.nvim
)cargo-nextest
(required forneotest-rust.nvim
)@vue/typescript-plugin
(required for vue project)dolphin
(required fornvim-tree.lua
)nushell
(recommended)
QuickStart
Installation
-
Install all dependencies.
-
git clone https://github.com/niuiic/modern-neovim-configuration ~/.config/nvim
-
Open neovim and then all plugins would be installed automatically.
-
Install lsps, formatters, linters, debuggers with
mason.nvim
. Checklua/plugin/mason.lua
for details. -
Check if something is missing with
:checkhealth
. -
Look for specific functions in
lua/plugins.lua
.
Keymap
which-key.nvim
will tell you. Check lua/plugin/*
and lua/keymap.lua
for details.
leader:
\
localLeader:
<space>
LSP
Create lspname.lua
in lua/lsp
.
Update lsp_list
in lua/lsp/init.lua
.
Remap lsp commands with lsp-utils.nvim
in lua/plugin/lsp-utils.lua
.
Formatter
Use your favorite formatters with niuiic/format.nvim.
DAP
Create dapname.lua
in lua/debugger
.
Update debugger_list
in lua/debugger/init.lua
.
Custom Snippets
Create filetype.lua
in lua/snippet
.
Update lang_list
in lua/snippet/init.lua
.
Snippet examples and snippet document may help you.
Config for Workspace
The root path of a workspace is where .git
located. $rootPath/.nvim/init.lua
is the entry of the local configuration.
Showcase
Some functions are not convenient to display with pictures, please check lua/plugins.lua
.
Plugins
-
Bilal2453/luvit-meta - Meta type definitions for the Lua platform Luvit.
-
FelipeLema/cmp-async-path - nvim-cmp source for path (async version)
-
HiPhish/rainbow-delimiters.nvim - Rainbow delimiters for Neovim with Tree-sitter
-
L3MON4D3/LuaSnip - Snippet Engine for Neovim written in Lua.
-
LelouchHe/xmake-luals-addon - Lua-LS Addon for Xmake
-
LhKipp/nvim-nu - Basic editor support for the nushell language
-
LiadOz/nvim-dap-repl-highlights - Add syntax highlighting to the nvim-dap REPL
-
MagicDuck/grug-far.nvim - Find And Replace plugin for neovim
-
Mr-LLLLL/treesitter-outer - Jump outer node smartly
-
MunifTanjim/nui.nvim - UI Component Library for Neovim.
-
Wansmer/treesj - Neovim plugin for splitting/joining blocks of code
-
akinsho/bufferline.nvim - A snazzy bufferline for Neovim
-
andrewferrier/debugprint.nvim - Debugging in NeoVim the print() way!
-
andymass/vim-matchup - vim match-up: even better % :facepunch: navigate and highlight matching words :facepunch: modern matchit and matchparen. Supports both vim and neovim + tree-sitter.
-
andythigpen/nvim-coverage - Displays test coverage data in the sign column
-
antoinemadec/FixCursorHold.nvim - Fix CursorHold Performance.
-
brenoprata10/nvim-highlight-colors - Highlight colors for neovim
-
chrisgrieser/nvim-rip-substitute - Perform search and replace operations in the current buffer using a modern user interface and contemporary regex syntax.
-
cljoly/telescope-repo.nvim - π¦ Jump into the repositories (git, mercurialβ¦) of your filesystem with telescope.nvim, without any setup
-
cshuaimin/ssr.nvim - Treesitter based structural search and replace plugin for Neovim.
-
danymat/neogen - A better annotation generator. Supports multiple languages and annotation conventions.
-
debugloop/telescope-undo.nvim - A telescope extension to view and search your undo tree π΄
-
dmitmel/cmp-cmdline-history - Source for nvim-cmp which reads results from command-line or search histories
-
dmmulroy/ts-error-translator.nvim
-
echasnovski/mini.bufremove - Neovim Lua plugin to remove buffers. Part of 'mini.nvim' library.
-
echasnovski/mini.comment - Neovim Lua plugin for fast and familiar per-line commenting. Part of 'mini.nvim' library.
-
echasnovski/mini.indentscope - Neovim Lua plugin to visualize and operate on indent scope. Part of 'mini.nvim' library.
-
echasnovski/mini.move - Neovim Lua plugin to move any selection in any direction. Part of 'mini.nvim' library.
-
ecthelionvi/NeoColumn.nvim - Neovim plugin that highlights individual characters with a toggleable ColorColumn.
-
folke/flash.nvim - Navigate your code with search labels, enhanced character motions and Treesitter integration
-
folke/lazydev.nvim - Faster LuaLS setup for Neovim
-
folke/lsp-colors.nvim - π Plugin that creates missing LSP diagnostics highlight groups for color schemes that don't yet support the Neovim 0.5 builtin LSP client.
-
folke/noice.nvim - π₯ Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu.
-
folke/todo-comments.nvim - β Highlight, list and search todo comments in your projects
-
folke/tokyonight.nvim - π A clean, dark Neovim theme written in Lua, with support for lsp, treesitter and lots of plugins. Includes additional themes for Kitty, Alacritty, iTerm and Fish.
-
folke/trouble.nvim - π¦ A pretty diagnostics, references, telescope results, quickfix and location list to help you solve all the trouble your code is causing.
-
folke/ts-comments.nvim - Tiny plugin to enhance Neovim's native comments
-
folke/which-key.nvim - π₯ Create key bindings that stick. WhichKey helps you remember your Neovim keymaps, by showing available keybindings in a popup as you type.
-
-
-
hedyhli/outline.nvim - Code outline sidebar powered by LSP. Significantly enhanced & refactored fork of symbols-outline.nvim.
-
hrsh7th/cmp-buffer - nvim-cmp source for buffer words
-
hrsh7th/cmp-cmdline - nvim-cmp source for vim's cmdline
-
hrsh7th/cmp-nvim-lsp - nvim-cmp source for neovim builtin LSP client
-
hrsh7th/nvim-cmp - A completion plugin for neovim coded in Lua.
-
jbyuki/one-small-step-for-vimkind - Debug adapter for Neovim plugins
-
kdheepak/lazygit.nvim - Plugin for calling lazygit from within neovim.
-
kevinhwang91/nvim-ufo - Not UFO in the sky, but an ultra fold in Neovim.
-
kevinhwang91/promise-async - Promise & Async in Lua
-
-
-
kylechui/nvim-surround - Add/change/delete surrounding delimiter pairs with ease. Written with :heart: in Lua.
-
lewis6991/gitsigns.nvim - Git integration for buffers
-
lukas-reineke/cmp-rg - ripgrep source for nvim-cmp
-
luozhiya/fittencode.nvim - Fitten Code AI Programming Assistant for Neovim
-
m-demare/hlargs.nvim - Highlight arguments' definitions and usages, using Treesitter
-
marilari88/neotest-vitest - Vitest adapter for Neovim Neotest plugin
-
mfussenegger/nvim-dap - Debug Adapter Protocol client implementation for Neovim
-
mrcjkb/rustaceanvim - π¦ Supercharge your Rust experience in Neovim! A heavily modified fork of rust-tools.nvim
-
mxsdev/nvim-dap-vscode-js - nvim-dap adapter for vscode-js-debug
-
neovim/nvim-lspconfig - Quickstart configs for Nvim LSP
-
niuiic/code-shot.nvim - Neovim plugin to shot code
-
niuiic/core.nvim - Neovim utils
-
niuiic/dap-utils.nvim - Better use of nvim-dap
-
niuiic/divider.nvim - Divider line for neovim
-
niuiic/fcitx.nvim - Neovim plugin to automatically switch fcitx input method
-
niuiic/format.nvim - An asynchronous, multitasking, and highly configurable formatting plugin.
-
niuiic/git-log.nvim - Check git log of the selected code.
-
-
niuiic/multiple-session.nvim - Session manager for neovim
-
niuiic/part-edit.nvim - Edit a part of a file individually
-
niuiic/quickfix.nvim - Neovim plugin providing extended functionality for quickfix.
-
niuiic/remote.nvim - Edit remote files locally.
-
niuiic/scroll.nvim - Smooth scroll for neovim.
-
niuiic/task.nvim - Task manager for neovim.
-
niuiic/terminal.nvim - Simple and highly configurable terminal plugin for neovim.
-
niuiic/track.nvim - Neovim plugin to track the thought process of reading source code.
-
niuiic/translate.nvim - Highly configurable translation plugin for neovim.
-
-
nvim-lua/plenary.nvim - plenary: full; complete; entire; absolute; unqualified. All the lua functions I don't want to write twice.
-
nvim-lualine/lualine.nvim - A blazing fast and easy to configure neovim statusline plugin written in pure lua.
-
-
nvim-neotest/neotest - An extensible framework for interacting with tests within NeoVim.
-
nvim-neotest/nvim-nio - A library for asynchronous IO in Neovim
-
nvim-telescope/telescope.nvim - Find, Filter, Preview, Pick. All lua, all the time.
-
nvim-treesitter/nvim-treesitter - Nvim Treesitter configurations and abstraction layer
-
ofirgall/goto-breakpoints.nvim - Cycle between breakpoints with keymappings for nvim-dap
-
-
rafamadriz/friendly-snippets - Set of preconfigured snippets for different languages.
-
ray-x/cmp-treesitter - cmp source for treesitter
-
rcarriga/cmp-dap - nvim-cmp source for nvim-dap REPL and nvim-dap-ui buffers
-
rcarriga/nvim-dap-ui - A UI for nvim-dap
-
rcarriga/nvim-notify - A fancy, configurable, notification manager for NeoVim
-
rktjmp/highlight-current-n.nvim - Highlights the current /, ? or * match under your cursor when pressing n or N and gets out of the way afterwards.
-
s1n7ax/nvim-window-picker - This plugins prompts the user to pick a window and returns the window id of the picked window
-
saadparwaiz1/cmp_luasnip - luasnip completion source for nvim-cmp
-
sindrets/diffview.nvim - Single tabpage interface for easily cycling through diffs for all modified files for any git rev.
-
sitiom/nvim-numbertoggle - Neovim plugin to automatically toggle between relative and absolute line numbers. Written in Lua.
-
smartpde/telescope-recent-files - Telescope extension for Neovim to pick a recent file
-
sontungexpt/url-open - Minimal plugin allow you to open url under cursor in neovim without netrw with default browser of your system and highlight url
-
stevearc/dressing.nvim - Neovim plugin to improve the default vim.ui interfaces
-
theHamsta/nvim-dap-virtual-text
-
-
williamboman/mason.nvim - Portable package manager for Neovim that runs everywhere Neovim runs. Easily install and manage LSP servers, DAP servers, linters, and formatters.
-
windwp/nvim-autopairs - autopairs for neovim written in lua
-
windwp/nvim-ts-autotag - Use treesitter to auto close and auto rename html tag
-
-
zjp-CN/nvim-cmp-lsp-rs - Refine nvim-cmp completion behavior by applying useful filtering and sorting for candidates from Rust Analyzer. (Won't cause side effects on other cmp sources)