mirror of
https://github.com/Rainyy21/framework_note.git
synced 2026-10-11 01:10:28 -04:00
112 lines
4.3 KiB
Markdown
112 lines
4.3 KiB
Markdown
---
|
|
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).
|