Neovim - 常用插件,提升体验(三)

文章目录

nvim-tree

官方文档:https://github.com/nvim-tree/nvim-tree.lua

以前我们都是通过 :e 的方式打开一个 buffer,但是这种方式需要记忆文件路径,因此这里可以通过 nvim-tree 插件实现类似于 IDEA 目录侧边栏的效果。

创建 lua/plugins/nvim-tree.lua 文件,配置如下:

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 底部状态栏。

lua 复制代码
return {
    'nvim-lualine/lualine.nvim',
    dependencies = {
        'nvim-tree/nvim-web-devicons'
    },
    opts = {},
}

效果如下:

Ps:默认配置就够用了

2)目前有一个问题,比如进入插入模式的时候,不仅 lualine 会显示当前为 insert 模式,neovim 自身也会显示,如下:

那么可以在 basic.lua 中新增一个配置,隐藏 neovim 自身的模式提示,如下:

lua 复制代码
-- 隐藏模式显示
vim.opt.showmode = false

indent-blankline

官方文档:https://github.com/lukas-reineke/indent-blankline.nvim

在写代码的时候,有时会看不清楚缩进(当前层级)的情况,而 IDEA 就会通过竖线的方式进行提示。indent-blankline 就是用来解决这个问题的。

创建 lua/plugins/indent-blankline.lua 文件,配置如下:

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 文件,配置如下:

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 有问题,可以打开终端自行构建:

bash 复制代码
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,内容如下:

lua 复制代码
return {
    'MagicDuck/grug-far.nvim',
    cmd = "GrugFar",
    opts = {},
}

安装后,输入 :GruaFar 后能全局查找,但还不能全局替换,因为他需要通过 <localleader>r 才能触发全局替换(localleader还没配置),如下图

因此这里需要修改 keymap.lua,配置 localleader:

lua 复制代码
vim.g.maplocalleader = ","

Ps:键位定义成自己用着舒服的即可

3)使用步骤

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

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

相关推荐
x-cmd2 个月前
[250401] OpenAI 向免费用户开放 GPT-4o 图像生成功能 | Neovim 0.11 新特性解读
人工智能·gpt·文生图·openai·命令行·neovim
翻滚吧键盘4 个月前
vim操作简要记录
vim·vi·neovim·nvim
goodcitizen10 个月前
老旧 Linux 系统搭建现代 C++ 开发环境 —— 基于 neovim
neovim·clangd·lazy·bear·fzf·dev-env·fd·rg·tree-sitter·efm-langserver·mason·nvimdots
Sxrhhh1 年前
穿透 wsl 和 ssh, 新版本 neovim 跨设备任意复制,copy anywhere!
linux·vim·wsl·neovim·osc52
yann_qu2 年前
neovim为工作区添加本地clangd配置
vim·lua·neovim·clangd·nvim-lspconfig