mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-01-11 22:30:25 +01:00
Neovim Editor
My Neovim config based on AstroNvim. For more details, visit the AstroNvim website.
This document outlines neovim's configuration structure and various shortcuts/commands for efficient usage.
Screenshots
Configuration Structure
| Description | Standard Location | My Location |
|---|---|---|
| Neovim's config | ~/.config/nvim |
AstroNvim's github repository, referenced as a flake input in this flake. |
| AstroNvim's user configuration | $XDG_CONFIG_HOME/astronvim/lua/user |
./astronvim_user/ |
| Plugins installation directory (lazy.nvim) | ~/.local/share/nvim/ |
The same as standard location, generated and managed by lazy.nvim. |
| LSP servers, DAP servers, linters, and formatters | ~/.local/share/nvim/mason/(by mason.nvim) |
./default.nix, installed by nix. |
Update/Clean Plugins
Note that lazy.nvim will not automatically update plugins, so you need to update them manually.
:Lazy update
Remove all unused plugins:
:Lazy clean
Testing
via
Justfilelocated at the root of this repo.
# testing
just nvim-test
# clear test data
just nvim-clear
Cheetsheet
Here is the cheetsheet related to my Neovim configs. Please read vim's common cheetsheet at ../README.md before reading the following.
Incremental Selection
Provided by nvim-treesitter.
| Action | Shortcut |
|---|---|
| init selection | <Ctrl-space> |
| node incremental | <Ctrl-space> |
| scope incremental | <Alt-Space> |
| node decremental | Backspace |
Search and Jump
Provided by flash.nvim, it's a intelligent search and jump plugin.
- It enhaces the default search and jump behavior of neovim.(search with prefix
/)
| Action | Shortcut |
|---|---|
| Search | /(normal search), s(disable all code highlight, only highlight matches) |
| Treesitter Search | yR,dR, cR, vR, ctrl+v+R(arround your matches, all the surrounding Treesitter nodes will be labeled) |
| Remote Flash | yr, dr, cr, (arround your matches, all the surrounding Treesitter nodes will be labeled) |
Commands & Shortcuts
| Action | Shortcut |
|---|---|
| Open file explorer | <Space> + e |
| Focus Neotree to current file | <Space> + o |
| Toggle line wrap | <Space> + uw |
| Show line diagnostics | gl |
| Show function/variable info | K |
| References of a symbol | gr |
Window Navigation
- Switch between windows:
<Ctrl> + h/j/k/l - Resize windows:
<Ctrl> + Up/Down/Left/Right- Note: On macOS, conflicts with system shortcuts
- Disable in System Preferences -> Keyboard -> Shortcuts -> Mission Control
Splitting and Buffers
|
| Action | Shortcut |
|---|---|
| Horizontal Split | \ |
| Vertical Split | | |
| Close Buffer | <Space> + c |
Editing and Formatting
| Action | Shortcut |
|---|---|
| Toggle buffer auto formatting | <Space> + uf |
| Format Document | <Space> + lf |
| Code Actions | <Space> + la |
| Rename | <Space> + lr |
| Opening LSP symbols | <Space> + lS |
| Comment Line(support multiple lines) | <Space> + / |
| Open filepath/URL at cursor(neovim's builtin command) | gx |
| Find files by name (fzf) | <Space> + ff |
| Grep string in files (ripgrep) | <Space> + fw |
Sessions
| Action | Shortcut |
|---|---|
| Save Session | <Space> + Ss |
| Last Session | <Space> + Sl |
| Delete Session | <Space> + Sd |
| Search Session | <Space> + Sf |
| Load Current Directory Session | <Space> + S. |
Debugging
Press <Space> + D to view available bindings and options.
Search and Replace Globally
| Description | Shortcut |
|---|---|
| Open spectre.nvim search and replace panel | <Space> + ss |
Search and replace in command line(need install sad first) |
find -name "*.nix" | sad '<pattern>' '<replacement>' | delta |
Surrounding Characters
Provided by mini.surround plugin.
- Prefix
gz
| Action | Shortcut | Description |
|---|---|---|
| Add surrounding characters | gzaiw' |
Add ' around the word under cursor |
| Delete surrounding characters | gzd' |
Delete ' around the word under cursor |
| Replace surrounding characters | gzr'" |
Replace ' by " around the word under cursor |
| Highlight surrounding | gzh' |
Highlight ' around the word under cursor |
Text Manipulation
| Action | |
|---|---|
| Join with LSP intelligence(treesj) | <Space> + j |
| Split Line into Multiple Lines(treesj) | <Space> + s |
Miscellaneous
| Action | |
|---|---|
| Show all Yank History | :<Space> + yh |
| Show undo history | :<Space> + uh |
Additional Resources
For more detailed information and advanced usage, refer to:
- AstroNvim walkthrough
- ./astronvim_user/mapping.lua
- All the plugins' documentations

