-- 自动安装 Packer.nvim -- 插件安装目录 -- ~/.local/share/nvim/site/pack/packer/ local fn = vim.fn local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" local paccker_bootstrap if fn.empty(fn.glob(install_path)) > 0 then vim.notify("正在安装Pakcer.nvim,请稍后...") paccker_bootstrap = fn.system({ "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", -- "https://gitcode.net/mirrors/wbthomason/packer.nvim", install_path }) -- https://github.com/wbthomason/packer.nvim/issues/750 local rtp_addition = vim.fn.stdpath("data") .. "/site/pack/*/start/*" if not string.find(vim.o.runtimepath, rtp_addition) then vim.o.runtimepath = rtp_addition .. "," .. vim.o.runtimepath end vim.notify("Pakcer.nvim 安装完毕") end -- Use a protected call so we don't error out on first use local status_ok, packer = pcall(require, "packer") if not status_ok then vim.notify("没有安装 packer.nvim") return end packer.startup({ function(use) -- Packer 可以管理自己本身 use 'wbthomason/packer.nvim' -- 底部状态栏 use { 'nvim-lualine/lualine.nvim', requires = { 'nvim-tree/nvim-web-devicons', opt = true } } use('nvim-tree/nvim-web-devicons') -- tokyonight 主题 use("folke/tokyonight.nvim") -- nvim-tree 文件侧边栏 use({ "kyazdani42/nvim-tree.lua", requires = "kyazdani42/nvim-web-devicons" }) -- 文件搜索 use { 'nvim-telescope/telescope.nvim', requires = { "nvim-lua/plenary.nvim" } } -- dashboard-nvim vim 主页 use { 'glepnir/dashboard-nvim', requires = { 'nvim-tree/nvim-web-devicons' } } -- 悬浮终端 use 'voldikss/vim-floaterm' -- project use("ahmedkhalf/project.nvim") -- treesitter 代码高亮 use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate', requires = { { "p00f/nvim-ts-rainbow" }, { "JoosepAlviste/nvim-ts-context-commentstring" }, { "windwp/nvim-ts-autotag" }, { "nvim-treesitter/nvim-treesitter-refactor" }, { "nvim-treesitter/nvim-treesitter-textobjects" }, }, config = function() require("plugin-config.nvim-treesitter") end, } use('nvim-treesitter/nvim-tree-docs') --------------------- LSP -------------------- -- use { -- 'neoclide/coc.nvim', -- branch = 'release' -- } -- mason use { "williamboman/mason.nvim", run = ":MasonUpdate" -- :MasonUpdate updates registry contents } use("williamboman/mason-lspconfig.nvim") use({ "neovim/nvim-lspconfig" }) use("hrsh7th/nvim-cmp") -- completion plugin use("hrsh7th/cmp-nvim-lsp") use("jose-elias-alvarez/null-ls.nvim") -- configure formatters & linters use("jayp0521/mason-null-ls.nvim") -- bridges gap b/w mason & null-ls use("onsails/lspkind.nvim") -- 自动关闭标签 use { 'windwp/nvim-ts-autotag' } -- snippet 引擎 use({ "L3MON4D3/LuaSnip", run = "make install_jsregexp" }) use("hrsh7th/vim-vsnip") -- 补全源 use("hrsh7th/cmp-vsnip") --use("hrsh7th/cmp-nvim-lsp") -- { name = nvim_lsp } use("hrsh7th/cmp-buffer") -- { name = 'buffer' }, use("hrsh7th/cmp-path") -- { name = 'path' } use("hrsh7th/cmp-cmdline") -- { name = 'cmdline' } -- 常见编程语言代码段 use("rafamadriz/friendly-snippets") -- git use { 'lewis6991/gitsigns.nvim' } -- lazygit use({ "kdheepak/lazygit.nvim", -- optional for floating window border decoration requires = { "nvim-lua/plenary.nvim", }, }) -- eslint use('MunifTanjim/eslint.nvim') -- indent use("lukas-reineke/indent-blankline.nvim") -- 闭合高亮 use('leafOfTree/vim-matchtag') -- 切换窗口大小 use("szw/vim-maximizer") -- 错误提示 use({ "folke/trouble.nvim", requires = "kyazdani42/nvim-web-devicons" }) -- 括号自动补全 use { "windwp/nvim-autopairs", config = function() require("nvim-autopairs").setup {} end } -- 代码格式化 use('MunifTanjim/prettier.nvim') -- 代码注释 gcc use { 'numToStr/Comment.nvim', config = function() require('Comment').setup() end } -- hop 快速跳转 use { 'phaazon/hop.nvim', branch = 'v2', -- optional but strongly recommended config = function() -- you can configure Hop the way you like here; see :h hop-config require'hop'.setup { keys = 'etovxqpdygfblzhckisuran' } end } -- lspsage use("tami5/lspsaga.nvim") -- TypeScript 增强 use({ "jose-elias-alvarez/nvim-lsp-ts-utils", requires = "nvim-lua/plenary.nvim" }) use("jose-elias-alvarez/typescript.nvim") -- formatter use("mhartington/formatter.nvim") -- lua 增强 use("folke/neodev.nvim") --json 增强 use("b0o/schemastore.nvim") -- Rust 增强 use("simrat39/rust-tools.nvim") -- 彩虹括号 use("p00f/nvim-ts-rainbow") -- nvim-notify use({ "rcarriga/nvim-notify", config = function() require("plugin-config.nvim-notify") end, }) -- fidget.nvim use({ "j-hui/fidget.nvim", config = function() require("plugin-config.fidget") end, }) end, config = { -- 并发数限制 max_jobs = 16, -- 自定义源 git = { -- default_url_format = "https://hub.fastgit.xyz/%s", -- default_url_format = "https://mirror.ghproxy.com/https://github.com/%s" -- default_url_format = "https://gitcode.net/mirrors/%s" -- default_url_format = "https://gitclone.com/github.com/%s", }, display = { open_fn = function() return require("packer.util").float({ border = "single" }) end } } }) -- 每次保存 plugins.lua 自动安装插件 pcall(vim.cmd, [[ augroup packer_user_config autocmd! autocmd BufWritePost plugins.lua source | PackerSync augroup end ]])