Base configuration for Neovim. For those looking to make Neovim their new main editor. Here you'll find a popular combination of plugin to make your experience a little bit better.
A few things have been configured to resemble other modern text editors. You'll find a file explorer with tree style view, list open files in tabs, git integration and a terminal easy to toggle.
Autocompletion and "code intellisense" is provided by the LSP client built into Neovim. The following language servers are configured:
- tsserver
- eslint
- cssls
- html
Most of the code in this configuration is explained in this series:
- Build your first Neovim configuration in lua
- Neovim: Plugins to get started
- Setup nvim-lspconfig + nvim-cmp
- Neovim v0.8 or greater.
- git.
- A
C
compiler. Can begcc
,tcc
orzig
. - make, the build tool.
- npm cli. Javascript package manager.
- nodejs. Javascript runtime. Required by the language servers listed above.
- (optional) ripgrep. Improves project wide search speed.
- (optional) fd. Improves file search speed.
- (optional) A patched font to display icons. I hear nerdfonts has a good collection.
Here's the config compatible with v0.7.
-
Backup your existing configuration if you have one.
-
If you don't know the path of the Neovim configuration folder use this command.
nvim --headless -c 'echo stdpath("config") | quit'
- Now clone this repository in that location.
git clone https://github.com/VonHeikemen/nvim-starter /tmp/nvim-config-path
Do not execute this command as is. Replace
/tmp/nvim-config-path
with the correct path from the previous step.
- Move to the configuration folder where you clone the repository. Change branch to
05-modular
.
git checkout 05-modular
- Next time you start Neovim all plugins will be downloaded automatically. After this process is done
nvim-treesitter
will install language parsers for treesitter. And,mason.nvim
will download language servers listed in the configuration. Use the command:Mason
to check the download process of language servers.
Leader key: Space
.
Mode | Key | Action |
---|---|---|
Normal | <leader>h |
Go to first non empty character in line. |
Normal | <leader>l |
Go to last non empty character in line. |
Normal | <leader>a |
Select all text. |
Normal | gy |
Copy selected text to clipboard. |
Normal | gp |
Paste clipboard content. |
Normal | <leader>w |
Save file. |
Normal | <leader>bq |
Close current buffer. |
Normal | <leader>bc |
Close current buffer while preserving the window layout. |
Normal | <leader>bl |
Go to last active buffer. |
Normal | <leader>? |
Search oldfiles history. |
Normal | <leader><space> |
Search open buffers. |
Normal | <leader>ff |
Find file in current working directory. |
Normal | <leader>fg |
Search pattern in current working directory. Interactive "grep search". |
Normal | <leader>fd |
Search diagnostics in current file. |
Normal | <leader>fs |
Search pattern in current file. |
Normal | <leader>e |
Open file explorer. |
Normal | <Ctrl-g> |
Toggle the builtin terminal. |
Normal | K |
Displays hover information about the symbol under the cursor. |
Normal | gd |
Jump to the definition. |
Normal | gD |
Jump to declaration. |
Normal | gi |
Lists all the implementations for the symbol under the cursor. |
Normal | go |
Jumps to the definition of the type symbol |
Normal | gr |
Lists all the references. |
Normal | gs |
Displays a function's signature information. |
Normal | <F2> |
Renames all references to the symbol under the cursor. |
Normal | <F3> |
Format code in current buffer. |
Normal | <F4> |
Selects a code action available at the current cursor position. |
Visual | <F4> |
Selects a code action available in the selected text. |
Normal | gl |
Show diagnostics in a floating window. |
Normal | [d |
Move to the previous diagnostic. |
Normal | ]d |
Move to the next diagnostic. |
Mode | Key | Action |
---|---|---|
Insert | <Up> |
Move to previous item. |
Insert | <Down> |
Move to next item. |
Insert | <Ctrl-p> |
Move to previous item. |
Insert | <Ctrl-n> |
Move to next item. |
Insert | <Ctrl-u> |
Scroll up in documentation window. |
Insert | <Ctrl-d> |
Scroll down in documentation window. |
Insert | <Ctrl-e> |
Cancel completion. |
Insert | <C-y> |
Confirm completion. |
Insert | <Enter> |
Confirm completion. |
Insert | <Ctrl-f> |
Go to next placeholder in snippet. |
Insert | <Ctrl-b> |
Go to previous placeholder in snippet. |
Insert | <Tab> |
If completion menu is open, go to next item. Else, open completion menu. |
Insert | <Shift-Tab> |
If completion menu is open, go to previous item. |
Name | Description |
---|---|
lazy.nvim | Plugin manager. |
tokyonight.nvim | Collection of colorscheme for Neovim. |
onedark.vim | Colorscheme based on Atom's default theme. |
monokai.nvim | Colorscheme based on Sublime text's default theme. |
darkplus.nvim | Colorscheme based on VS Code's default theme. |
nvim-web-devicons | Helper functions to show icons. |
lualine.nvim | Pretty statusline. |
bufferline.nvim | Pretty tabline. |
indent-blankline.nvim | Shows indent guides in current file. |
nvim-tree.lua | File explorer. |
telescope.nvim | Fuzzy finder. |
telescope-fzf-native.nvim | Extension for telescope. Allows fzf-like syntax in searches. |
gitsigns.nvim | Shows indicators in gutter based on file changes detected by git. |
vim-fugitive | Git integration into Neovim/Vim. |
nvim-treesitter | Configures treesitter parsers. Provides modules to manipulate code. |
nvim-treesitter-textobjects | Creates textobjects based on treesitter queries. |
Comment.nvim | Toggle comments. |
vim-surround | Add, remove, change "surroundings". |
targets.vim | Creates new textobjects. |
vim-repeat | Add "repeat" support for plugins. |
vim-bbye | Close buffers without closing the current window. |
plenary.nvim | Collection of modules. Used internaly by other plugins. |
toggleterm.nvim | Manage terminal windows easily. |
mason.nvim | Portable package manager for Neovim. |
mason-lspconfig.nvim | Integrates nvim-lspconfig and mason.nvim. |
nvim-lspconfig | Quickstart configs for Neovim's LSP client. |
nvim-cmp | Autocompletion engine. |
cmp-buffer | nvim-cmp source. Suggest words in the current buffer. |
cmp-path | nvim-cmp source. Show suggestions based on file system paths. |
cmp_luasnip | nvim-cmp source. Show suggestions based on installed snippets. |
cmp-nvim-lsp | nvim-cmp source. Show suggestions based on LSP servers queries. |
LuaSnip | Snippet engine. |
friendly-snippets | Collection of snippets. |