Skip to content

Latest commit

 

History

History
190 lines (137 loc) · 7.56 KB

README.md

File metadata and controls

190 lines (137 loc) · 7.56 KB

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 Justfile located 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.

  1. It enhances 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(around your matches, all the surrounding Treesitter nodes will be labeled)
Remote Flash yr, dr, cr, (around 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
Next tab ]b
Previous tab [b

Window Navigation

  • Switch between windows: <Ctrl> + h/j/k/l
  • Resize windows: <Ctrl> + Up/Down/Left/Right (<Ctrl-w> + -/+/</>)
    • 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
Find files by name (include hidden files) <Space> + fF
Grep string in files (ripgrep) <Space> + fw
Grep string in files (include hidden files) <Space> + fW

Git

Action Shortcut
Git Commits (repository) :<Space> + gc
Git Commits (current file) :<Space> + gC
Git Branches :<Space> + gb
Git Status :<Space> + gt

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 via cli(fd + sad + delta):

fd "\\.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
Show the path of the current file :!echo $%

Additional Resources

For more detailed information and advanced usage, refer to:

  1. AstroNvim walkthrough
  2. ./astronvim_user/mapping.lua
  3. All the plugins' documentations