跳过正文
  1. Documentation/

【Vim】LazyVim使用

·1949 字·4 分钟·
Mr. Tree
工具 Vim
作者
Mr. Tree
村口树哥
目录
Vim高手之路 - 这篇文章属于一个选集。
§ 3: 本文

操作
#

  1. 安装neovim
  2. 按照官网教程安装lazyvim https://www.lazyvim.org/installation
  3. 进入 nvim,安装插件(自动)、安装相关依赖 :LazyHealth、安装mason相关 :Mason
  4. keymaps.lua 中修改键位映射:
local map = vim.keymap.set
local desc_opts = function(desc)
  return { noremap = true, silent = true, desc = desc }
end
map({ "i" }, "jj", "<Esc>", desc_opts("进入一般模式"))

快捷键
#

首先列出 <leader>sk 即show keymaps,支持模糊搜索,可以看到所有的键位映射。另外也可以通过 <leader> 键在whichkey.nvim插件的辅助下查看键位映射。

https://www.lazyvim.org/keymaps

Explorer相关
#

类似于VSCode的侧边栏(文件资源管理器)。常用命令如下:

  • ? 查看帮助
  • <leader>e Toggle Explorer
  • a Add 文件或目录
  • d Delete 文件或目录
  • c Copy 文件或目录,相对目录
  • m Move 文件或目录,相对目录
  • y Yank 单文件
  • p Put 单文件
  • r Rename 单文件
  • <Tab>,选中
  • <S-Tab>,取消选中
  • / 搜索文件,不支持模糊搜索 (<leader>ff支持模糊搜索)
  • <S-h> Toggle Hidden 显示/隐藏隐藏文件

常用技巧:

  1. 可以选中多个文件或目录,再将光标移到目标位置,按下 cm

Tab(Buffer)相关
#

VSCode中的tab也叫标签页,这种类似的东西在LazyVim中叫做buffer。常用Buffer相关命令如下:

  • <leader>bd Delete Buffer
  • <leader>bD Delete Buffer and Window
  • <leader>bb Switch to Other Buffer
  • <leader>bo Delete Other Buffers
  • <leader>bl Delete Buffers to the Left
  • <leader>br Delete Buffers to the Right
  • <leader>bp Buffer Pin 置顶Buffer(放到最前)
  • <leader>bP Delete Non-Pinned Buffers
  • <S-h> 前一个(左边)Buffer,同[b
  • <S-l> 后一个(右边)Buffer,同]b
  • <leader>fb Find Buffer 在所有的Buffer中查找

f
#

cwd ,表示执行 nvim 命令的目录,通常在命令中用大写

root dir,表示当前文件所在的项目根目录,通常在命令中用小写

  • <leader>fe Explorer (root dir)
  • <leader>fE Explorer (cwd)
  • <leader>fb Find Buffer
  • <leader>fc Find Config
  • <leader>ff Find File(Root Dir)
  • <leader>fF Find File(cwd)
  • <leader>fr Find Recent(Root Dir)
  • <leader>fR Find Recent(cwd)
  • <leader>ft Find Terminal (Root Dir)
  • <leader>fT Find Terminal (cwd)

s
#

  • <leader>ss Search Symbols 查找符号
  • <leader>sS 查找当前项目的所有符号
  • <leader>sk Seach Keymaps 查找键位映射
  • <leader>sh Search Help 查看帮助手册
  • <leader>st Search Todo 查找所有ToDo
  • <leader>sm Search Marks 查找所有标记
  • <leader>sr Search And Replace 查找并替换!
  • <leader>sc Search Comand History 查找命令历史

LSP Server
#

  • <leader>cm 进入Mason页面
  • gd Goto Definition 查看定义
  • <C-o> 向后跳转
  • <C-i> 向前跳转
  • gI Goto Implementation
  • gy Goto Type Definition
  • gD Goto Declaration
  • gr Goto Reference 查看符号引用
  • K Hover 查看帮助
  • <leader>cs Toggle Code Symbols 右侧栏列出当前文件符号

Git
#

  • <leader>gg LazyGit(root dir)
  • <leader>gG LazyGit(cwd)

插件
#

lazyGit
#

.gitignore 忽略的文件目录不会显示在Explorer中

全局操作:

  • 数字选区,或者 <Tab> <S-Tab> 来回切换
  • ? 查看帮助
  • : 执行Shell命令
  • z 撤销上一条命令
  • <C-z> 重做上一条命令
  • [ 某一个框内切换页面
  • ] 某一个框内切换页面
  • R 刷新面板显示内容
  • @ 打开命令面板设置
  • p pull 从对应上游分支拉取
  • 大写P Push 推送到对应上游分支

2 文件 - 工作区 - 子模块:

  • Space 切换文件暂存状态
  • a 切换全部文件暂存状态
  • g 查看上游重置选项
  • d 放弃文件在工作区的变更
  • c commit
  • A commit —amend
  • s stash

3 本地分支 - 远程- 标签:

  • Space 检出
  • u 设置上游
  • d 删除分支
  • n 新建分支

4 提交 - Reflog

5 stash

  • <Space> 检出

C++ lsp相关
#

clangd 是基于 Clang 的语言服务器(Language Server Protocol, LSP)实现,为编辑器 / IDE 提供代码分析功能。

安装clangd后,可跳转定义和自动格式化,但怎么修改格式化的格式?clangd使用clang-format格式化,可以使用.clang-format指定格式,如下:

BasedOnStyle: Google
IndentWidth: 4
TabWidth: 4
UseTab: Never
BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: false

compile_commands.json 是一个 JSON 格式的编译命令数据库,记录了项目中每个源文件的编译参数(如包含路径、宏定义、编译选项等)。它为开发工具(如 IDE、静态分析器)提供准确的编译上下文,使其能够理解项目结构并提供更智能的功能(如代码补全、跳转定义、语法检查)。将其放在项目根目录供其他工具识别。

生成 compile_commands.json 方式:

  • 构建系统原生支持:比如使用CMake构建,可以在CMake执行命令时加上-DCMAKE_EXPORT_COMPILE_COMMANDS=ON 或在CMakeLists.txt中加上set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
  • 捕获现有构建过程:使用 bear, 在原有构建命令前加上 bear -- make
  • 其他方式

cmake --help CMake 会列出所有可用的 Generator, cmake -G “xxx” 指定构建器

todo-comments.nvim
#

https://www.lazyvim.org/plugins/editor#todo-commentsnvim LazyVim对于该插件采用默认配置。

默认配置在插件仓库可见:

https://github.com/folke/todo-comments.nvim

新增一个高亮关键字,可以在plugins目录下新增一个todo-comments.lua,这里面的配置会自动和LazyVim预设配置合并。

  • 颜色:各种取色网站如https://colorhunt.co/
  • 图标icon:https://www.nerdfonts.com/cheat-sheet
return {
  "folke/todo-comments.nvim",
  dependencies = { "nvim-lua/plenary.nvim" },
  opts = {
    keywords = {
      ME = {
        icon = "󱅻",
        color = "me",
        alt = { "MINE", "LYX" },
      },
    },
    colors = {
      me = "#4682A9",
    },
  },
}

效果如下:

image.png

快捷键,默认键位映射由LazyVim负责,常用的就

  • [t 向前搜索
  • ]t 向后搜索
  • <leader>st telescope 搜索窗口,支持模糊搜索;助记符:search todo
keys = {
  { "]t", function() require("todo-comments").jump_next() end, desc = "Next Todo Comment" },
  { "[t", function() require("todo-comments").jump_prev() end, desc = "Previous Todo Comment" },
  { "<leader>xt", "<cmd>Trouble todo toggle<cr>", desc = "Todo (Trouble)" },
  { "<leader>xT", "<cmd>Trouble todo toggle filter = {tag = {TODO,FIX,FIXME}}<cr>", desc = "Todo/Fix/Fixme (Trouble)" },
  { "<leader>st", "<cmd>TodoTelescope<cr>", desc = "Todo" },
  { "<leader>sT", "<cmd>TodoTelescope keywords=TODO,FIX,FIXME<cr>", desc = "Todo/Fix/Fixme" },
},
Vim高手之路 - 这篇文章属于一个选集。
§ 3: 本文

相关文章

【Vim】搜索与替换
·704 字·2 分钟
Mr. Tree
工具 Vim
【Vim】文本对象操作
·257 字·1 分钟
Mr. Tree
工具 Vim
Series
·228 字·2 分钟
Mr. Tree
Dummy Second Author
Series Docs
Welcome to Blowfish
·595 字·3 分钟
Mr. Tree
New Docs