当前位置: 首页 > news >正文

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)使用步骤

  1. 输入 :GrugFar
  2. Search 中输入被替换的词
  3. Replace 中输入要替换成的词
  4. 输入 <localleader>r,完成替换

例如全局将 aa 替换成 ccc,不仅会显示会替换的所有词,还会显示替换所耗时长。

http://www.xdnf.cn/news/882703.html

相关文章:

  • 2024年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 八:操作系统设备管理之缓冲、缓存与假脱机
  • PHP文件读取漏洞全面剖析:触发点与利用技术
  • SpringBoot项目移动之后无法运行
  • PPT转图片拼贴工具 v1.0
  • k8S 命令
  • Java原型模式深度解析:高效对象复制的艺术与实践
  • windows10 php报错
  • Vue 中组件命名与引用
  • DJango项目
  • uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
  • 苹果“Findmy”功能正式在韩国启用,结束多年缺席局面
  • 【学习笔记】MIME
  • 【Git系列】如何同步原始仓库的更新到你的fork仓库?
  • 【数据结构】5. 双向链表
  • 老年生活照护实训室建设规划:照护质量评估与持续改进实训体系
  • 2025前端微服务 - 无界 的实战应用
  • 机器学习与深度学习12-K近邻算法
  • C++虚函数表(虚表Virtual Table,简称vtable、VFT)(编译器为支持运行时多态(动态绑定)而自动生成的一种内部数据结构)虚函数指针vptr
  • 关于akka官方quickstart示例程序(scala)的记录
  • 【C++项目】负载均衡在线OJ系统-2
  • 解构与重构:PLM 系统如何从管理工具进化为创新操作系统?
  • 通过Chain Prompts方式将LLM的能力引入测试平台:正交实验测试用例生成
  • 多模态大语言模型arxiv论文略读(109)
  • 计算机基础知识(第四篇)
  • Apache Doris + MCP:Agent 时代的实时数据分析底座
  • Ntfs!ReadIndexBuffer函数分析之nt!CcGetVirtualAddress函数之nt!CcGetVacbMiss
  • 如何在电脑上轻松访问 iPhone 文件
  • 斐波那契数列------矩阵幂法
  • 【Python3教程】Python3基础篇之错误和异常