操作#
- 安装neovim
- 按照官网教程安装lazyvim https://www.lazyvim.org/installation
- 进入
nvim
,安装插件(自动)、安装相关依赖:LazyHealth
、安装mason相关:Mason
- 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 Explorera
Add 文件或目录d
Delete 文件或目录c
Copy 文件或目录,相对目录m
Move 文件或目录,相对目录y
Yank 单文件p
Put 单文件r
Rename 单文件<Tab>
,选中<S-Tab>
,取消选中/
搜索文件,不支持模糊搜索 (<leader>ff
支持模糊搜索)<S-h>
Toggle Hidden 显示/隐藏隐藏文件
常用技巧:
- 可以选中多个文件或目录,再将光标移到目标位置,按下
c
或m
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 Implementationgy
Goto Type DefinitiongD
Goto Declarationgr
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
commitA
commit —amends
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",
},
},
}
效果如下:
快捷键,默认键位映射由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" },
},