Neovim - 常用插件,提升体验(三)
文章目录
- nvim-tree
- lualine
- indent-blankline
- telescope
- grug-far
nvim-tree
官方文档:https://github.com/nvim-tree/nvim-tree.lua
以前我们都是通过 :e
的方式打开一个 buffer,但是这种方式需要记忆文件路径,因此这里可以通过 nvim-tree 插件实现类似于 IDEA 目录侧边栏的效果。
创建 lua/plugins/nvim-tree.lua
文件,配置如下:
return {"nvim-tree/nvim-tree.lua",dependencies = {"nvim-tree/nvim-web-devicons",},lazy = false,keys = {{ "<A-1>", ":NvimTreeToggle<CR>" }},opts = {},
}
默认情况下,nvim-tree 提供了很多快捷键,例如:
- a:新建文件
- d:删除文件
- r:重命名
- x:剪切文件
- y:复制文件
- p:粘贴
- Enter:打开文件
效果如下:
Ps:nvim-tree 作者不建议这里使用延迟加载,原因如下
- 此插件几乎没有性能损耗
- 由于其他插件、会话管理器、"VimEnter"事件等启动顺序不稳定,延迟加载可能会有问题
lualine
官方文档:https://github.com/nvim-lualine/lualine.nvim
1)一个使用 lua 编写的 Neovim 底部状态栏。
return {'nvim-lualine/lualine.nvim',dependencies = {'nvim-tree/nvim-web-devicons'},opts = {},
}
效果如下:
Ps:默认配置就够用了
2)目前有一个问题,比如进入插入模式的时候,不仅 lualine 会显示当前为 insert 模式,neovim 自身也会显示,如下:
那么可以在 basic.lua 中新增一个配置,隐藏 neovim 自身的模式提示,如下:
-- 隐藏模式显示
vim.opt.showmode = false
indent-blankline
官方文档:https://github.com/lukas-reineke/indent-blankline.nvim
在写代码的时候,有时会看不清楚缩进(当前层级)的情况,而 IDEA 就会通过竖线的方式进行提示。indent-blankline 就是用来解决这个问题的。
创建 lua/plugins/indent-blankline.lua
文件,配置如下:
return {"lukas-reineke/indent-blankline.nvim",event = "VeryLazy",main = "ibl",opts = {},
}
效果如下,可以观察到不同层级都会显示竖线,并且光标所在层级的竖线会高亮显示:
telescope
官方文档:https://github.com/nvim-telescope/telescope.nvim
实现类似于 IDEA 中双击 shift 时的文件查找器
1)首先需要安装 gcc 编译器,官网:https://winlibs.com/
,下载适用 Win 的 GCC,例如 GCC 13.x mingw-w64
(版本不要太高),下载后解压到 D:\compiler\gcc\mingw64
(自定义)
按下 Win
搜索环境变量,点击编辑系统环境变量
> 环境变量
,然后在下方的 系统变量
中找到并选中 Path,点击 “编辑”,最后新建,添加 bin 路径,例如 D:\compiler\gcc\mingw64\bin
重新打开终端,输入 gcc --version
验证
2)创建 lua\plugins\telescope.lua
文件,配置如下:
return {"nvim-telescope/telescope.nvim",dependencies = {"nvim-lua/plenary.nvim",{"nvim-telescope/telescope-fzf-native.nvim",build = "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && ".. "cmake --build build --config Release && ".. "cmake --install build --prefix build",},},keys = {{ "<leader>ff", "<Cmd>Telescope live_grep<CR>" }},opts = {extensions = {fzf = {fuzzy = true,override_generic_sorter = true,override_file_sorter = true,case_mode = "smart_case",},},},config = function(_, opts)local telescope = require "telescope"telescope.setup(opts)telescope.load_extension("fzf")end,
}
效果如下:
另外还可以支持:
Telescope colorscheme
:查找并切换配色主题Telescope git_commits
:查找 git commit
另外,Telescope 默认提供了快捷键,可以通过 <C-n>
和 <C-p>
切换条目。
3)如果 cmake 构建 telescope-fzf-native.nvim
有问题,可以打开终端自行构建:
cd ~/AppData/Local/nvim-data/lazy/telescope-fzf-native.nvim
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
4):Telescope live_grep
功能依赖于 ripgrep,如果这个也有问题,也可以自己手动下载,地址为 https://github.com/BurntSushi/ripgrep/releases
,下载 .zip 安装包,解压后吧 rg.exe 所在目录添加到环境变量 Path 中。
终端运行 rg --version
验证成功。
grug-far
官方文档:https://github.com/MagicDuck/grug-far.nvim
1)上一个讲到的 telescope 是全局查找功能,而这要讲的 grug-far 是实现全局替换(虽然nvim 本身也提供了,但是非常的难用)
2)在 plugins 下创建 grug-far.lua,内容如下:
return {'MagicDuck/grug-far.nvim',cmd = "GrugFar",opts = {},
}
安装后,输入 :GruaFar
后能全局查找,但还不能全局替换,因为他需要通过 <localleader>r
才能触发全局替换(localleader还没配置),如下图
因此这里需要修改 keymap.lua,配置 localleader:
vim.g.maplocalleader = ","
Ps:键位定义成自己用着舒服的即可
3)使用步骤
- 输入
:GrugFar
- Search 中输入
被替换的词
- Replace 中输入
要替换成的词
- 输入
<localleader>r
,完成替换
例如全局将 aa
替换成 ccc
,不仅会显示会替换的所有词,还会显示替换所耗时长。