强制更新插件

This commit is contained in:
caprain 2026-04-16 23:00:30 +08:00
parent b7c38200f4
commit ef46f8a6ad
4 changed files with 36 additions and 29 deletions

5
.github/README.md vendored
View file

@ -1,6 +1,11 @@
> [!IMPORTANT]
> 本人是colemak键位用户
可以用下面命令来更新插件:(不指定插件名默认更新全部)
* `:PackUpdate` 弹出界面让你审查,按 `:w` 确认
* `:PackUpdate!` 跳过界面,直接后台拉取并更新
某些插件需要安装特定的软件才能正常使用如果是arch用户可以使用`paru`或者`yay`安装,示例如下
```bash

View file

@ -1,33 +1,47 @@
-- === LSP 核心配置 (Lspconfig + Mason) ===
if vim.g.vscode then return end
-- 1. 环境探测:判断 CPU 架构,决定安装哪些 LSP
-- 环境探测:判断 CPU 架构,决定安装哪些 LSP
local arch = jit and jit.arch or ""
local is_arm = arch:match("arm") or arch:match("aarch64")
local servers = { "lua_ls", "rust_analyzer", "pylsp", "denols", }
if not is_arm then
vim.list_extend(servers, { "marksman", "svelte", "cssls", "html" })
vim.list_extend(servers, { "marksman", "svelte", "cssls", "html" })
end
-- 2. 插件配置清单
-- 插件配置清单
local P = {
name = "nvim-lspconfig",
deps = { "mason.nvim", "mason-lspconfig.nvim", "inlay-hints.nvim" },
}
-- 3. 懒加载触发器:当打开文件时触发
-- === 全局快捷键映射 ===
local opts = { noremap = true, silent = true }
vim.keymap.set("n", "<leader>h", vim.lsp.buf.hover, opts) -- <space>h显示提示文档
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) -- gd跳转到定义
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) -- gD跳转到声明(例如c语言中的头文件中的原型、一个变量的extern声明)
vim.keymap.set("n", "go", vim.lsp.buf.type_definition, opts) -- go跳转到变量类型定义的位置(例如一些自定义类型)
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) -- <space>rn变量重命名
vim.keymap.set("n", "<leader>aw", vim.lsp.buf.code_action, opts) -- <space>aw可以在出现警告或错误的地方打开建议的修复方法
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts) -- <space>d浮动窗口显示所在行警告或错误信息
vim.keymap.set("n", "<leader>-", vim.diagnostic.goto_prev, opts) -- <space>-跳转到上一处警告或错误的地方
vim.keymap.set("n", "<leader>=", vim.diagnostic.goto_next, opts) -- <space>+跳转到下一处警告或错误的地方
-- vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) -- gr跳转到引用了对应变量或函数的位置改用snacks
-- vim.keymap.set({ 'n', 'x' }, '<leader>f', function() vim.lsp.buf.format({ async = true }) end, opts) -- <space>f进行代码格式化
-- 懒加载触发器:当打开文件时触发
vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, {
callback = function()
PackUtils.load(P, function()
-- === A. 基础依赖初始化 (Mason) ===
-- === 基础依赖初始化 (Mason) ===
require("mason").setup()
require("mason-lspconfig").setup({
ensure_installed = servers,
})
require("inlay-hints").setup()
-- === B. 全局诊断设置 ===
-- === 全局诊断设置 ===
vim.diagnostic.config({
signs = {
text = {
@ -39,21 +53,7 @@ vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, {
},
})
-- === C. 全局快捷键映射 ===
-- local opts = { noremap = true, silent = true }
vim.keymap.set("n", "<leader>h", vim.lsp.buf.hover, opts) -- <space>h显示提示文档
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) -- gd跳转到定义
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) -- gD跳转到声明(例如c语言中的头文件中的原型、一个变量的extern声明)
vim.keymap.set("n", "go", vim.lsp.buf.type_definition, opts) -- go跳转到变量类型定义的位置(例如一些自定义类型)
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) -- <space>rn变量重命名
vim.keymap.set("n", "<leader>aw", vim.lsp.buf.code_action, opts) -- <space>aw可以在出现警告或错误的地方打开建议的修复方法
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts) -- <space>d浮动窗口显示所在行警告或错误信息
vim.keymap.set("n", "<leader>-", vim.diagnostic.goto_prev, opts) -- <space>-跳转到上一处警告或错误的地方
vim.keymap.set("n", "<leader>=", vim.diagnostic.goto_next, opts) -- <space>+跳转到下一处警告或错误的地方
-- vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) -- gr跳转到引用了对应变量或函数的位置改用snacks
-- vim.keymap.set({ 'n', 'x' }, '<leader>f', function() vim.lsp.buf.format({ async = true }) end, opts) -- <space>f进行代码格式化
-- === D. 特定 LSP 配置 (使用 Neovim 0.11+ vim.lsp.config 语法) ===
-- === 特定 LSP 配置 (使用 Neovim 0.11+ vim.lsp.config 语法) ===
-- Python (pylsp) + uv 虚拟环境自适应
vim.lsp.config("pylsp", {

View file

@ -82,19 +82,21 @@ local function get_plugin_names(arg_lead)
return names
end
-- :PackUpdate 命令更新插件,不带参数更新全部
-- :PackUpdate 命令更新插件,不带参数更新全部,默认显示审查界面(需按 :w 确认);可以加 ! 强制直接更新
vim.api.nvim_create_user_command("PackUpdate", function(opts)
local targets = #opts.fargs > 0 and opts.fargs or nil
local force = opts.bang -- 如果输入了 PackUpdate! 则 opts.bang 为 true
if targets then
vim.notify("Checking updates for: " .. table.concat(targets, ", "), vim.log.levels.INFO)
else
vim.notify("Checking updates for all plugins...", vim.log.levels.INFO)
end
vim.pack.update(targets)
vim.pack.update(targets, { force = force })
end, {
nargs = "*", -- 支持 0 到多个参数
complete = get_plugin_names, -- 绑定补全函数,可以改用'packadd'不过补全列表会有一些非vim.pack管理的插件
desc = "Update specified or all plugins",
nargs = "*",
bang = true, -- 声明支持 ! 符号
complete = get_plugin_names,
desc = "Update plugins (use ! to skip confirmation)",
})
-- :PackStatus 命令查看插件当前状态和版本

View file

@ -1,7 +1,7 @@
{
"plugins": {
"blink.cmp": {
"rev": "456d38d1cd3743926f329204c2340f3e7840aad6",
"rev": "c573a15a62bd0bfd4006ee0849b24f5404395500",
"src": "https://github.com/saghen/blink.cmp"
},
"bufferline.nvim": {
@ -65,7 +65,7 @@
"src": "https://github.com/windwp/nvim-autopairs"
},
"nvim-lspconfig": {
"rev": "bedca8b426b2fee0ccac596d167d71bbe971253f",
"rev": "4b7fbaa239c5db6b36f424a4521ca9f1a401be33",
"src": "https://github.com/neovim/nvim-lspconfig"
},
"nvim-treesitter": {
@ -89,7 +89,7 @@
"src": "https://github.com/hedyhli/outline.nvim"
},
"peek.nvim": {
"rev": "803815d18689b8f9e69d433b08ed767d7555128c",
"rev": "81365a4dee6f0314d1ab4f65b7f8aee804e741ed",
"src": "https://github.com/cap153/peek.nvim"
},
"plenary.nvim": {