vault backup: 2026-05-30 16:02:33

This commit is contained in:
Rainyy21
2026-05-30 16:02:33 -04:00
commit 96449f8968
43 changed files with 2837 additions and 0 deletions
+111
View File
@@ -0,0 +1,111 @@
---
tags: [neovim, lazyvim, coding-tools, ide, tutorial]
created: 2026-05-29
status: complete
type: lesson
---
# Master Class: In-Depth Guide to LazyVim
LazyVim is not just a configuration; it is a **Neovim setup framework** designed to provide a high-performance, IDE-like experience while remaining modular and easy to customize. It leverages the power of `lazy.nvim` to ensure that your editor starts instantly by loading components only when they are needed.
---
## 1. The Core Philosophy
LazyVim is built on three pillars:
1. **Speed:** Everything is lazy-loaded. If you aren't editing a Python file, the Python LSP doesn't load.
2. **Sane Defaults:** It comes pre-configured with industry-standard settings for UI, indentation, and search.
3. **Modularity:** It separates its core logic from your user configuration, allowing you to update the framework without breaking your personal tweaks.
---
## 2. The Integrated Toolbox
LazyVim integrates several powerful tools into a cohesive workflow:
### A. **lazy.nvim (The Engine)**
The heart of the system. It manages plugin installation, updates, and lazy-loading.
- **Command:** `:Lazy`
- **Capabilities:** Check for updates, profile startup time, and manage plugin states.
### B. **Mason.nvim (The Tool Manager)**
A "package manager" for your external dependencies.
- **Command:** `:Mason`
- **Capabilities:** Easily install and manage LSP servers, DAP (debuggers), linters, and formatters directly from within Neovim.
### C. **nvim-treesitter (The Parser)**
Provides high-performance syntax highlighting and code understanding.
- **Command:** `:TSUpdate`
- **Capabilities:** Better highlighting, indentation, and "incremental selection" (selecting code blocks logically).
### D. **Telescope.nvim / fzf-lua (The Searcher)**
A fuzzy finder that allows you to find anything in your project.
- **Keybinds:** `<leader>ff` (files), `<leader>/` (live grep), `<leader>sk` (keymaps).
---
## 3. Essential Keybindings & Workflow
LazyVim uses the `<Space>` key as the **Leader**. One of its best features is `which-key.nvim`, which displays a popup showing available commands whenever you press your leader key.
### **Navigation**
- `<leader>e`: Toggle **Neo-tree** (File Explorer).
- `H` / `L`: Quickly cycle through open buffers (tabs).
- `<leader>bb`: Switch between open buffers.
- `<leader>fT`: Open a floating terminal.
### **Coding & LSP**
- `K`: Hover documentation (show what a function/variable does).
- `gd`: Go to definition.
- `gr`: Go to references.
- `<leader>ca`: **Code Actions** (Fixes, imports, refactors).
- `<leader>cr`: Rename the symbol under the cursor project-wide.
- `[d` / `]d`: Jump to previous/next error or warning.
### **Git Integration**
- `<leader>gg`: Open **LazyGit** (a full TUI for Git).
- `<leader>gj`: Next Git hunk.
- `<leader>gk`: Previous Git hunk.
---
## 4. Customizing Your Setup
LazyVim's structure is designed to be clean:
- `lua/config/options.lua`: Global Neovim settings (e.g., line numbers, tab widths).
- `lua/config/keymaps.lua`: Your custom keyboard shortcuts.
- `lua/plugins/`: Any `.lua` file created here is automatically loaded as a plugin configuration.
### **Adding a Plugin**
Create `lua/plugins/example.lua`:
```lua
return {
"username/plugin-name",
opts = {
-- plugin configuration goes here
},
}
```
### **Enabling "Extras"**
LazyVim provides "Packs" for specific needs. You can enable them in `lua/config/lazy.lua`:
```lua
require("lazyvim.util").plugin.setup({
spec = {
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
-- Enable extras like Python, Docker, or Copilot:
{ import = "lazyvim.plugins.extras.lang.python" },
{ import = "lazyvim.plugins.extras.ui.mini-animate" },
{ import = "lazyvim.plugins.extras.coding.copilot" },
{ import = "lua.plugins" },
},
})
```
---
## 5. Why LazyVim?
Unlike building a config from scratch (which can take months to perfect) or using a "thick" distro like LunarVim (which can feel bloated), LazyVim gives you a professional-grade starting point that feels like **your** config. It provides the "glue" that makes LSP, completion, and UI tools work together seamlessly.
---
**Next Steps:**
- Run `:LazyHealth` to check your environment.
- Install `lazygit` on your system to enable the `<leader>gg` shortcut.
- Explore the [Official LazyVim Docs](https://www.lazyvim.org).