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:
- lua-language-server
- rust-analyzer
To understand more about this configuration you can read these resources:
- Build your first Neovim configuration in lua
- Neovim: Plugins to get started
- About nvim-lspconfig
- mason.nvim
- mason-lspconfig
- Neovim v0.11.4 or greater.
- git.
- tree-sitter CLI
- A
Ccompiler. Can begcc,tccorzig. - (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.
-
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 --branch=05-modular https://github.com/VonHeikemen/nvim-starter /tmp/nvim-config-path
Do not execute this command as is. Replace
/tmp/nvim-config-pathwith the correct path from the previous step. -
Next time you start Neovim all plugins will be downloaded automatically. After this process is done
nvim-treesitterwill install language parsers for treesitter. And,mason.nvimwill download language servers listed in the configuration. Use the command:Masonto 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 | x |
Delete character under cursor without modifying any register. |
| Operator | X |
Delete operator, like d but it doesn't modify any register. |
| 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 | gcc |
Toggle comment in current line. |
| Operator | gc |
Toggle comment in text. |
| Normal | gt |
Pick a visible tab. |
| Normal | <leader><space> |
Search open buffers. |
| Normal | <leader>ff |
Find file in current working directory. |
| Normal | <leader>fh |
Search oldfiles history. |
| 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>u |
Search undo history. |
| Normal | <leader>? |
Search keymaps. |
| Normal | <leader>/ |
Search all available snack pickers. |
| Normal | <leader>e |
Open file explorer. |
| Normal | <Ctrl-g> |
Toggle a terminal window. |
| Terminal | <Esc><Esc> |
Pressing Escape twice quickly goes back to normal mode. |
| 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-Space> |
Toggle documentation window. |
| Insert | <Ctrl-e> |
Cancel completion. |
| Insert | <C-y> |
Confirm completion. |
| Insert | <Enter> |
Confirm completion. |
| Insert | <Ctrl-l> |
Go to next placeholder in snippet. |
| Insert | <Ctrl-h> |
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 |
|---|---|
| tokyonight.nvim | A dark theme for Neovim. |
| mini.nvim | Collection of independent lua modules that enhance Neovim's features. |
| snacks.nvim | Collection of QoL plugins. |
| bufferline.nvim | Pretty tabline. |
| nvim-lspconfig | Quickstart configurations for various language servers. |
| mason.nvim | Installer for external tools. |
| mason-lspconfig.nvim | mason.nvim extension. Provides the command :LspInstall. |
| nvim-lspconfig | Quickstart configurations for various language servers. |
| nvim-treesitter | Provides easy access to treesitter parsers and queries. |
| ts-enable.nvim | Enable treesitter based features. |
| vim-repeat | Add "repeat" support for plugins. |
| friendly-snippets | Collection of custom snippets for many programming languages. |