Awesome
My Neovim Setup
My personal Neovim setup written in Lua.
<div align="center">
<img src="https://raw.githubusercontent.com/wuelnerdotexe/nvim/main/assets/screenshot_(default).png">
<small>Setup without <a href="https://github.com/wuelnerdotexe/nvim/blob/8c6872f430dd31e15f155afe4a812d840dfcd4cd/lua/wuelnerdotexe/plugin/init.lua#L19"><code>opt</code></a> plugins imported (default).</small>
</div>
<div align="center">
<img src="https://raw.githubusercontent.com/wuelnerdotexe/nvim/main/assets/screenshot_(enhanced).png">
<small>Setup with <a href="https://github.com/wuelnerdotexe/nvim/blob/8c6872f430dd31e15f155afe4a812d840dfcd4cd/lua/wuelnerdotexe/plugin/init.lua#L19"><code>opt</code></a> plugins imported (enhanced).</small>
</div>
Table of Contents
Features
The main features and plugins provided by this setup are as follows:
Philosophy
My Neovim setup, unlike many others, has and follows a well-defined philosophy, governed by coherence and minimalism. You won't find any unnecessary plugins or redundant plugins here, and every little aspect is tweaked to keep everything consistent as a whole; for example, all the icons used are the standard ones and all floating windows have a rounded edge. As it should be...
DISCLAIMER: due to this you will see that I make many commits perfecting aspects that seem insignificant, I apologize for my sick perfectionism.
Requirements
Installation
First, if you have a previous Neovim config, make sure to make a backup before installing this setup in case something goes wrong in the process. This is done by backing up the ~/.config/nvim/
folder and its contents.
To install this configuration, you just need to clone this repository to the Neovim user config runtime directory for your operating system, which you can find here, or by running the :help config
help command within Neovim. For a clean install, make sure you have all Neovim runtime folders ~/.local/share/nvim
(Linux/MacOS) and $LOCALAPPDATA/nvim-data
(Windows) clean.
For example, to install on Linux/MacOS:
git clone https://github.com/wuelnerdotexe/nvim ~/.config/nvim --depth 1
Keymaps
The keymaps created by this config are very well thought out to be intuitive, meaningful, and most of all, to stick to the essence of Vim without conflicting with it. Keymaps are normally assigned two letters, which signify an action, for example: d
+ p
= d
iagnostic p
review. Keep in mind that the functionality will always come first and then the action. This is the standard created and used by this configuration for unique consistency.
IMPORTANT: the \
(backslash) remains as the <leader>
key, and the |
(pipe) remains as the <localleader>
key.
General
VI Mode | Keymap | Description |
---|
Normal | <leader> + f + t | Toggle the folders explorer |
Normal | <leader> + f + f | Find files in the current directory |
Normal | <leader> + p + f | Find the workspace projects |
Normal | <leader> + o + f | Find recently opened files |
Normal | <leader> + m + f | Find Vim files marks |
Normal and visual | <leader> + w + f | Find word in the current directory |
Normal and visual | <leader> + w + r | Replace word in the current directory |
Normal and visual | <leader> + s + r | Structural search and replace in the current directory |
Normal | <leader> + g + t | Toggle the git explorer |
Normal | <leader> + g + f | Find files from git status |
Normal | <leader> + b + f | Find opened buffers |
Normal | <leader> + r + f | Find resume |
Normal | <leader> + s + t | Toggle document symbols |
Normal | <leader> + t + o | Open the terminal in a new buffer |
Explorer
VI Mode | Keymap | Description |
---|
Normal | Double left mouse click | Expand/open or collapse node |
Normal | ENTER | Expand/open or collapse node |
Normal | CTRL + t | Open in a new tab |
Normal | CTRL + s | Open in a new split |
Normal | CTRL + v | Open to the side |
Normal | a | Add node |
Normal | r | Rename node |
Normal | m | Move node |
Normal | c | Copy node |
Normal | d | Delete node |
Normal | y | Copy node to clipboard |
Normal | x | Cut node to clipboard |
Normal | p | Paste node from clipboard |
Normal | <localleader> + pt | Toggle preview |
Normal | q | Exit |
Normal | <F5> | Refresh the explorer |
Folders Explorer
VI Mode | Keymap | Description |
---|
Normal | > | Enter directory |
Normal | < | Leave directory |
Normal | / | Fuzzy finder |
Normal | CTRL + f | Filter nodes |
Normal | <Esc> | Clear filter |
Normal | [ + g | Go to previous git modified node |
Normal | ] + g | Go to next git modified node |
Git Explorer
VI Mode | Keymap | Description |
---|
Normal | g + s | Git stage file |
Normal | g + u | Git unstage file |
Normal | g + r | Git revert file |
Normal | g + A | Git add all |
Normal | g + c | Git commit |
Windows
VI Mode | Keymap | Description |
---|
Normal and visual | CTRL + h | Move to the left window |
Normal and visual | CTRL + j | Move to the down window |
Normal and visual | CTRL + k | Move to the up window |
Normal and visual | CTRL + l | Move to the right window |
Normal and visual | Alt + h | Resize the window on the left |
Normal and visual | Alt + j | Resize the window on the down |
Normal and visual | Alt + k | Resize the window on the up |
Normal and visual | Alt + l | Resize the window on the right |
Normal and visual | CTRL + w + h | Swap window to left |
Normal and visual | CTRL + w + j | Swap window to down |
Normal and visual | CTRL + w + k | Swap window to up |
Normal and visual | CTRL + w + l | Swap window to right |
Normal and visual | CTRL + w + o | Close all windows except the current one |
Normal and visual | CTRL + w + t | Open the current file in a new tab |
Normal and visual | CTRL + w + s | Split horizontally the current file |
Normal and visual | CTRL + w + v | Split vertically the current file |
Buffers
VI Mode | Keymap | Description |
---|
Normal | g + B | Go to previous buffer |
Insert | SHIFT + PAGE UP | Go to previous buffer |
Normal | g + b | Go to next buffer |
Insert | SHIFT + PAGE DOWN | Go to next buffer |
Normal | SHIFT + Home | Move buffer left |
Normal | SHIFT + End | Move buffer right |
Tabs
VI Mode | Keymap | Description |
---|
Normal | g + T | Go to the previous tab |
Insert | CTRL + PAGE UP | Go to the previous tab |
Normal | g + t | Go to the next tab |
Insert | CTRL + PAGE DOWN | Go to the next tab |
Snippets
VI Mode | Keymap | Description |
---|
Insert | TAB | Expand snippet or jump to the next snippet node |
Insert and select | SHIFT + TAB | Jump to the previous snippet node |
select | TAB | Jump to the next snippet node |
Selection
VI Mode | Keymap | Description |
---|
Normal | Space | Init incremental selection |
Visual | Space | Increment the node selection |
Visual | CTRL + Space | Increment the scope selection |
Visual | Backspace | Decrement the node selection |
Visual and operator pending | a + f | Select arround function |
Visual and operator pending | i + f | Select inner function |
Visual and operator pending | a + c | Select arround condition |
Visual and operator pending | i + c | Select inner condition |
Visual and operator pending | a + l | Select arround loop |
Visual and operator pending | i + l | Select inner loop |
Commenting
VI Mode | Keymap | Description |
---|
Normal | g + c + c | Comment the current line |
Visual and operator pending | g + c | Comment current selection |
Moving text
VI Mode | Keymap | Description |
---|
Normal and visual | Alt + Left | Move char left |
Normal and visual | Alt + Down | Move line down |
Normal and visual | Alt + Up | Move line up |
Normal and visual | Alt + Right | Move char right |
Git
VI Mode | Keymap | Description |
---|
Normal | <localleader> + g + d | Split git diffs |
Normal | <localleader> + d + t | Toggle show deleted lines |
Normal | [ + h | Go to the previous hunk (can be repetable with , and ; ) |
Normal | ] + h | Go to the next hunk (can be repetable with , and ; ) |
Normal | <localleader> + h + p | Preview the current hunk |
Normal | <localleader> + b + p | Preview the current line blame |
Normal and Visual | <localleader> + h + s | Stage the current hunk |
Normal | <localleader> + h + r | Reset the current hunk |
Language servers
VI Mode | Keymap | Description |
---|
Normal | <leader> + l + t | Toggle lines diagnostics |
Normal | <leader> + h + t | Toggle inlay hints |
Normal | <leader> + d + p | Preview of the current diagnostic |
Normal | <leader> + d + l | Show list of diagnostics |
Normal | [ + d | Go to previous diagnostic (can be repetable with , and ; ) |
Normal | ] + d | Go to next diagnostic (can be repetable with , and ; ) |
Insert | CTRL + b | Scroll up in the documentation |
Insert | CTRL + f | Scroll down in the documentation |
Normal | K | Show hover documentation |
Insert | CTRL + k | Show signature help |
Normal | <localleader> + s + r | Rename the current symbol |
Normal | <localleader> + r + l | Show list of references |
Normal | g + d | Go to definition |
Normal | g + D | Peek definition |
Normal | g + i | Go to implementation |
Normal | <localleader> + c + a | Show current code actions |
Normal and Visual | <localleader> + c + f | Format the code |
Debugging
VI Mode | Keymap | Description |
---|
Normal | <F9> | Toggle breakpoint on the current line |
Normal | <F5> | Run and debug |
Normal | SHIFT + <F5> | Terminate the current debugging session |
Normal | SHIFT + CTRL + <F5> | Restart the current debugging session |
Normal | <F6> | Debug pause |
Normal | <F10> | Debug step over |
Normal | <F11> | Debug step into |
Normal | CTRL + <F11> | Debug step into targets |
Normal | SHIFT + <F11> | Debug step out |
NOTE: only custom keymaps unique to this configuration are documented here. There are many more keymaps available by default in each installed plugin, in addition to the hundreds that come with Vim by default.
Recommendations
Fonts
In order for the Enfocado's Human Writing feature work as it should, I recommend that you use either of these three beautiful fonts, which align with the "Mankind and Machine" concept.
Maintainer
Hi π, I'm Wuelner, a software developer from Guatemala, passionate about creating minimalist solutions using solid fundamentals focused on "how things should be".
License
GPL-3.0 Β© Wuelner MartΓnez.
<p align="center">With π from <strong>LATAM</strong> to the world!</p>