Files
My-Blog/content/about-lazyvim.md
2025-06-14 14:01:25 +08:00

304 lines
11 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

+++
title = "乱七八糟:lazyvim快速上手"
date = 2025-04-20
[taxonomies]
tags = ["乱七八糟"]
+++
前言 LazyVim 是一个基于 Neovim 的现代化配置框架,易于定制和扩展,这里对其介绍并说明使用方法。
<!-- more -->
## Lazy!
> LazyVim 是一个基于 Neovim 的现代化配置框架,旨在简化 Neovim 的配置过程。它通过集成的 lazy.nvim 插件管理器,提供了一种易于定制和扩展配置的方式,结合了从头开始配置的灵活性和预配置设置的便利性 。
> LazyVim 是在Neovim的基础上进行配置Neovim又继承了vim的操作模式对vim不熟悉的同学可以看[这里](https://vimsheet.com/)。
## 安装
首先安装neovim,在arch linux上是
```
paru -S neovim
```
在Ubuntu上是
```
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt update
sudo apt install -y \ neovim git curl unzip build-essential ripgrep fd-find
```
备份现有配置:
```
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
```
克隆 LazyVim Starter 模板:
```
git clone https://github.com/LazyVim/starter ~/.config/nvim
```
启动 Neovim
```
nvim
```
首次启动时LazyVim 会自动安装并配置所需的插件。
## 结构
LazyVim 的配置目录通常位于``~/.config/nvim/``中:
```
~/.config/nvim
tree
.
├── init.lua
├── lazy-lock.json
├── lazyvim.json
├── LICENSE
├── lua
│   ├── config
│   │   ├── autocmds.lua
│   │   ├── keymaps.lua
│   │   ├── lazy.lua
│   │   └── options.lua
│   └── plugins
│   ├── example.lua
│   └── mp.lua
├── README.md
└── stylua.toml
4 directories, 12 files
```
另外在``~/.local/share/nvim/lazy/LazyVim/lua/lazyvim/plugins/``目录下看到的文件结构,是 LazyVim 为其核心插件和扩展插件提供的模块化配置体系。这些配置文件并不直接出现在``~/.config/nvim/lua/plugins/``目录中,是因为 LazyVim 采用了模块化和懒加载的设计理念,将核心插件和配置封装在其自身的代码库中。
### 各文件和目录的作用
* **`init.lua`**:主配置文件,负责加载 `lua/config/lazy.lua`,从而引导整个 LazyVim 的初始化过程。
* **`lazy-lock.json`**:由 `lazy.nvim` 插件管理器生成的锁定文件,记录了已安装插件的精确版本,确保插件的一致性。
* **`lazyvim.json`**:用于记录通过 `:LazyExtras` 命令启用的额外功能Extras便于在不同设备间同步配置。
* **`LICENSE`** 和 **`README.md`**:分别为许可协议和项目说明文档。
* **`stylua.toml`**`stylua` 的配置文件,用于格式化 Lua 代码。
* **`lua/config/`**:包含 Neovim 的基础配置文件,如自动命令(`autocmds.lua`)、快捷键(`keymaps.lua`)、插件管理(`lazy.lua`)和编辑器选项(`options.lua`)。这些文件会被 LazyVim 自动加载,无需手动引入。
* **`lua/plugins/`**:用于添加或修改插件配置的目录。您可以在此目录中添加新的 Lua 文件,以引入其他插件或更改现有插件的设置。
## Lazyvim自带配置
在 LazyVim 中插件被分类为已加载Loaded和未加载Not Loaded
### ✅ 已加载的插件Loaded
* **blink.cmp**:一个高性能、开箱即用的自动补全引擎,旨在替代 `nvim-cmp`,提供更快的性能和更少的配置需求。
* **bufferline.nvim**:用于在顶部显示缓冲区列表的插件,提供类似于浏览器标签页的界面。
* **friendly-snippets**:一个包含多种语言代码片段的集合,可与多个片段引擎(如 `luasnip`)配合使用。
* **gitsigns.nvim**:在编辑器中显示 Git 更改标记(如添加、修改、删除)的插件,增强版本控制的可视化。
* **lazy.nvim**LazyVim 的插件管理器,支持懒加载和依赖管理,提升启动速度和性能。
* **lualine.nvim**:一个高度可定制的状态栏插件,支持多种主题和组件。
* **mason-lspconfig.nvim** & **mason.nvim**:用于自动安装和配置 LSP语言服务器协议服务器的插件组合简化开发环境的设置。
* **mini.ai**、**mini.pairs**`mini.nvim` 插件集合的一部分,分别用于增强文本对象操作和自动括号配对功能。
* **noice.nvim**:改进 Neovim 消息和命令行界面的插件,提供更丰富的 UI 体验。
* **nui.nvim**:一个用于构建 Neovim 用户界面的 Lua 库,被多个插件作为依赖使用。
* **nvim-lint**:一个异步代码检查器,支持多种语言的语法和风格检查。
* **nvim-lspconfig**:提供预配置的 LSP 客户端设置,简化语言服务器的集成。
* **nvim-treesitter**、**nvim-treesitter-textobjects**、**nvim-ts-autotag**:基于 Tree-sitter 的语法高亮和代码结构分析插件,增强代码编辑体验。
* **persistence.nvim**:自动保存和恢复会话的插件,方便在不同项目之间切换。
* **snacks.nvim**:提供快速导航和编辑功能的插件,提升编辑效率。
* **todo-comments.nvim**:高亮和管理代码中的 TODO、FIXME 等注释的插件,方便任务跟踪。
* **tokyonight.nvim**:一个流行的 Neovim 主题,提供多种配色方案。
* **trouble.nvim**:一个用于显示诊断信息(如 LSP 错误、警告)的插件,提供统一的界面。
* **ts-comments.nvim**:基于 Tree-sitter 的注释插件,支持多语言的智能注释功能。
* **which-key.nvim**:在按下快捷键时弹出可用键位提示的插件,帮助记忆和发现快捷键。
### ❌ 未加载的插件Not Loaded
* **catppuccin**:一个柔和的 Neovim 主题,提供多种风格的配色方案。
* **conform.nvim**:一个用于代码格式化的插件,支持多种语言的格式化工具。
* **grug-far.nvim**:一个快速的全局查找和替换插件,提供直观的界面和操作。
* **lazydev.nvim**:用于 LazyVim 插件开发的辅助工具,简化开发流程。
* **markdown-preview.nvim**:在浏览器中实时预览 Markdown 文件的插件,提升写作体验。
* **plenary.nvim**:一个 Lua 函数库,提供多种实用功能,被许多插件作为依赖使用。
## 自定义配置
- **添加插件**:​在 lua/plugins/ 目录下创建一个新的 Lua 文件,返回插件的配置表。
- **修改快捷键**:​编辑 lua/config/keymaps.lua 文件,添加或修改快捷键映射。
- **调整选项**:​编辑 lua/config/options.lua 文件,设置 Neovim 的行为选项。​
## 常用快捷键
LazyVim 默认使用``<space> 作为 <leader>``\ 作为``<localleader>``,并通过 which-key.nvim 插件动态展示所有以``<space>``开头的可用映射,极大降低了记忆成本。​
- **导航与窗口管理**
```
- 在窗口间切换Ctrl +h / Ctrl +j / Ctrl +k / Ctrl +l
- 调整当前窗口尺寸Ctrl + ↑ / Ctrl + ↓ / Ctrl + ← / Ctrl + →
```
- **缓冲区切换与管理**
```
- 切换到上一个/下一个缓冲区Shift +h / Shift +l
- 切换“另一个”缓冲区Space + b + b
- 关闭当前缓冲区Space + b + d
- 只保留当前缓冲区Space + b + o
```
- **文件与搜索**
```
- 新建文件Space + f + n
- 打开文件(普通命令):输入 :e <文件名> 回车
- 在项目根目录查找文件Space + Space
- 在项目根目录查找文件另一路径Space + f + f
- 在当前工作目录查找文件Space + f + F
- 查找 Git 管理的文件Space + f + g
- 列出最近打开的文件Space + f + r
- 列出所有缓冲区Space + ,
- 全局全文搜索Space + /
```
- **分割与终端**
```
- 向下分割Space + -
- 向右分割Space + |
- 关闭当前窗口Space + w + d
- 窗口最大化/恢复Space + w + m 或 Space + u + Z
- 打开根目录终端Space + f + t
- 打开当前目录终端Space + f + T
- 切换(隐藏/显示终端Ctrl + /
```
- **LSP 相关**
```
- 跳转到定义g + d
- 查找引用g + r
- 跳转到实现g + I
- 跳转到声明g + D
- 查看文档悬停K
- 插入模式签名帮助Ctrl + k
- 代码操作Space + c + a
- 重命名Space + c + r
- 运行 CodeLensSpace + c + c
- 显示行诊断Space + c + d
```
- **Git 操作**
```
- 查看状态Space + g + s
- 查看差异Space + g + d
- 查看行级 BlameSpace + g + b
- 在浏览器打开当前文件Space + g + B
- Git Stashsnacks.nvimSpace + g + S
```
- **诊断与快速修复**
```
- 打开 Location ListSpace + x + l
- 打开 Quickfix ListSpace + x + q
- 在 Quickfix 跳转:[ q / ] q
```
## 添加插件
- **Markdown预览**
在``~/config/nvim/lua/plugins/``下新建一个mp.lua写入如下配置
```
return {
{
"iamcco/markdown-preview.nvim",
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
ft = { "markdown" },
build = ':call mkdp#util#install()'
}
}
```
随后即可在 Neovim 中打开一个 Markdown 文件,执行以下命令启动预览:​
```
:MarkdownPreview
```
## tips
- lazyvim中的行号是非自然序的这是为了方便光标移动而设置的你可以在正常模式中通过10k快速移动光标到10行前10j10h10l同理。
- lazyvim的字体是和终端相同的不同单独设置
- lazyvim中在侧边栏选择文件按d删除,按y复制,按p粘贴,按a创建,按r重命名
- gcc:注释当前行;
- g+ctrl+g:显示信息;
- alt+h显示隐藏文件
- space+c+f:将当前代码格式化;
- 设置文件编码``:set fileencoding?``
- 设置换行符``:set fileformat=unix``
- LSP快捷操作
| 快捷键 | 功能 |
| ------------ | ----------------------- |
| `gd` | 跳转到定义Go to Definition |
| `gr` | 查找引用Go to References |
| `K` | 显示悬浮文档Hover |
| `<leader>rn` | 重命名Rename |
| `<leader>ca` | Code Action修复 |
| `gl` | 显示诊断信息Diagnostic |
| `[d` / `]d` | 上/下一个诊断问题 |
## Edit!
> 编辑器的基本素养
``文件操作``
- 创建文件/文件夹
- 打开/关闭/切换文件
- 复制/粘贴
- 写入/保存/退出
- 搜索替换
``字符处理``
- LF/CRLF处理
- 零宽字符处理
- GBK/UTF-8处理
``终端``
- 打开终端/复用终端
``其他功能``
- LSP
- 代码调试
- 工作区切换
- Git支持
- 主题与显示效果
🔗
[用 neovim 写 markdown 是一种什么样的体验](https://yelog.org/2024/08/02/write-markdown-in-neovim-experience-and-tips/)
---
**Done.**