参考

文章

Dotfyle

发现并分享Neovim插件
Dotfyle | Neovim Plugins & Neovim News

mini.vim

GitHub - echasnovski/mini.nvim: Library of 35+ independent Lua modules improving overall Neovim (version 0.7 and higher) experience with minimal effort

Lspsaga

Lspsaga 是一个基于 Neovim 内置的 Language Server Protocol (LSP) 客户端的插件,它提供了更加丰富的 UI 和功能来增强 LSP 的用户体验。Lspsaga 提供了很多便利的功能,例如悬浮窗口、代码操作、定义预览、符号文档、滚动窗口等,使得在 Neovim 中使用 LSP 更加友好和美观。

功能

  • 悬浮窗口:显示函数签名、悬停文档等信息。
  • 代码操作:更易于访问的代码操作菜单。
  • 定义预览:在弹出窗口中预览符号定义,而不离开当前视图。
  • 符号文档:查看文件中的所有符号。
  • 滚动窗口:滚动长文档或长悬浮窗口的内容。
  • 诊断信息:增强的错误和警告显示。
    nvim-autopairs 是一个用于 Neovim 的插件,旨在自动补全括号、引号等成对符号,提升代码编写效率。这个插件能够智能地识别代码上下文,在你输入左括号(或引号)时自动插入对应的右括号(或引号),并在你删除左括号时自动删除对应的右括号。

nvim-autopairs

功能

  • 自动补全括号、引号等成对符号
  • 在删除左括号时自动删除右括号
  • 支持不同语言的智能补全
  • 与其他插件(如 nvim-cmp)集成,提供更加智能的补全体验
return {
  "windwp/nvim-autopairs",
  event = { "InsertEnter" },
  dependencies = {
    "hrsh7th/nvim-cmp",
  },
  config = function()
    -- import nvim-autopairs
    local autopairs = require("nvim-autopairs")
 
    -- configure autopairs
    autopairs.setup({
      check_ts = true, -- enable treesitter
      -- 为特定语言配置 Tree-sitter 的行为:
      ts_config = {
        lua = { "string" }, -- 在 Lua 中的字符串节点内不自动添加成对符号。
        javascript = { "template_string" }, -- 在 JavaScript 的模板字符串节点内不自动添加成对符号。
      },
    })
 
    -- 导入 nvim-autopairs 与 nvim-cmp 的集成功能
    local cmp_autopairs = require("nvim-autopairs.completion.cmp")
 
    -- 导入 nvim-autopairs 插件的补全功能模块,以便与 nvim-cmp 结合使用。
    local cmp = require("cmp")
 
    -- 	监听 nvim-cmp 的 confirm_done 事件(当补全项被确认时触发),并调用 nvim-autopairs 的 on_confirm_done 方法,使得括号补全功能与代码补全功能能够协同工作。
    cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
  end,
}
 
 

Comment.nvim

Comment.nvim 是一个用于 Neovim 的插件,专门用于简化注释和取消注释操作。它提供了直观且高效的注释功能,支持多种编程语言,并与 Tree-sitter 集成以提供更精确的注释行为。

主要功能

  • 注释与取消注释:可以快速注释和取消注释单行或多行代码。
  • 支持多种语言:自动识别当前文件类型并使用适当的注释符号。
  • 与 Tree-sitter 集成:通过 Tree-sitter 提供更智能和准确的注释行为。
  • 自定义快捷键:允许用户自定义注释和取消注释的快捷键。

trouble.nvim

trouble.nvim 是一个用于 Neovim 的插件,用于显示和管理 LSP(语言服务器协议)诊断、快速修复(quickfix)、定位列表(location list)和其他类似的诊断信息。它提供了一个简洁且易于导航的 UI,使得用户能够轻松地查看和解决代码中的问题。

主要功能

  • 显示 LSP 诊断信息:包括错误、警告、提示等。
  • 快速修复和定位列表:支持 quickfix 和 location list。
  • 跳转到问题所在的代码:轻松跳转到具体的代码位置。
  • 与 Neovim 内置 LSP 客户端集成:无缝集成 LSP 提供的诊断信息。
  • 自定义快捷键和命令:用户可以根据需要配置快捷键和命令。

conform.nvim

Conform.nvim 是一个用于 Neovim 的插件,旨在简化和增强代码格式化功能。它提供了一致且可配置的代码格式化体验,支持多种编程语言,并能够与各种格式化工具集成。

主要功能

  • 多语言支持:支持多种编程语言的代码格式化。
  • 与多种格式化工具集成:支持 prettier、black、clang-format 等多种流行的代码格式化工具。
  • 自动格式化:在保存文件时自动格式化代码。
  • 自定义配置:允许用户根据需要配置格式化工具和选项。

typescript-tools.nvim

typescript-tools.vim 是一个用于 Neovim 和 Vim 的插件,专门为 TypeScript 提供增强的开发工具和集成功能。这个插件通过集成 TypeScript 语言服务(如 tsserver),提供了许多实用的功能,如代码补全、跳转到定义、查找引用、重命名符号等,从而大大提升了 TypeScript 开发的效率和体验。

主要功能

  • 代码补全:智能代码补全和建议。
  • 跳转到定义:快速跳转到变量、函数或类的定义。
  • 查找引用:查找并列出所有引用某个符号的地方。
  • 重命名符号:重命名变量、函数、类等符号,并更新所有引用。
  • 代码格式化:使用 tsserver 或配置的格式化工具格式化代码。
  • 签名帮助:显示函数和方法的签名信息。
  • 文档查看:查看 TypeScript 中的 JSDoc 注释和类型信息。
return {
  "pmizio/typescript-tools.nvim",
  dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" },
  config = function()
    local api = require("typescript-tools.api")
    require("typescript-tools").setup({
      handlers = {
        -- 过滤诊断信息,排除特定的诊断代码
        ["textDocument/publishDiagnostics"] = api.filter_diagnostics({ 6133 }),
      },
      settings = {
        tsserver_file_preferences = {
          -- 设置 tsserver 文件偏好,使用非相对路径的模块导入
          importModuleSpecifierPreference = "non-relative",
        },
      },
    })
    local autocmd = vim.api.nvim_create_autocmd
    -- 在保存文件之前执行的操作
    autocmd("BufWritePre", {
      pattern = "*.ts,*.tsx,*.jsx,*.js",
      callback = function(args)
        vim.cmd("TSToolsAddMissingImports sync") --  添加缺失的导入
        vim.cmd("TSToolsOrganizeImports sync") -- 组织导入顺序
        require("conform").format({ bufnr = args.buf }) -- 使用 conform 格式化文件
      end,
    })
  end,
}
 

maximizer.vim

旨在简化窗口最大化和还原操作。在多个分割窗口情况下,使用该插件,你可以快速最大化、还原当前窗口

return {
  "szw/vim-maximizer",
  keys = {
    { "<leader>sm", "<cmd>MaximizerToggle<CR>", desc = "Maximize/minimize a split" },
  },
}
 

key-analyzer.nvim

可以轻松分析哪些键已被使用/未使用,查看 :maps 甚至 :Maps (fzf) 很烦人,因为您必须逐个检查每个键。此插件可让您概览键盘,并能够将鼠标悬停在某个键上以查看其映射。