local ensure_packer = function() local fn = vim.fn local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" if fn.empty(fn.glob(install_path)) > 0 then fn.system({ "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path }) vim.cmd([[packadd packer.nvim]]) return true end return false end local packer_bootstrap = ensure_packer() return require("packer").startup(function(use) use({ "https://github.com/lewis6991/impatient.nvim", as = "impatient.nvim", config = function() require("impatient") end, }) use({ "wbthomason/packer.nvim" }) use({ "folke/tokyonight.nvim" }) use({ "stevearc/dressing.nvim" }) use({ "catppuccin/nvim", as = "catppuccin" }) -- bufferline use({ "akinsho/bufferline.nvim", tag = "v3.*", requires = "nvim-tree/nvim-web-devicons" }) -- 行号模式自动切换 use({ "nkakouros-original/numbers.nvim" }) -- 文件树 use({ "nvim-tree/nvim-tree.lua", requires = { "nvim-tree/nvim-web-devicons", -- optional, for file icons }, tag = "nightly", -- optional, updated every week. (see issue #1193) }) -- 终端管理 use({ "akinsho/toggleterm.nvim", tag = "*" }) -- LSP管理器 use({ "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim", "neovim/nvim-lspconfig", "jose-elias-alvarez/null-ls.nvim", }) -- 命令行 use({ "VonHeikemen/fine-cmdline.nvim", requires = { { "MunifTanjim/nui.nvim" }, }, }) -- 通知 use({ "rcarriga/nvim-notify" }) -- 缩进线 use({ "lukas-reineke/indent-blankline.nvim" }) -- 注释管理 use({ "numToStr/Comment.nvim", config = function() require("Comment").setup({}) end, }) -- git管理 use({ "lewis6991/gitsigns.nvim" }) use({ "nvim-lualine/lualine.nvim", requires = { "kyazdani42/nvim-web-devicons", opt = true }, }) -- 自动修复部分按键 use({ "tummetott/unimpaired.nvim" }) -- 标签补全 use({ "windwp/nvim-autopairs" }) use({ "windwp/nvim-ts-autotag" }) -- 自动保存 use({ "Pocco81/auto-save.nvim", }) -- lspsaga use({ "glepnir/lspsaga.nvim", branch = "main", requires = { "nvim-tree/nvim-web-devicons", --Please make sure you install markdown and markdown_inline parser "nvim-treesitter/nvim-treesitter", "folke/lsp-colors.nvim", }, }) -- 错误列表 use({ "folke/trouble.nvim", requires = "nvim-tree/nvim-web-devicons", }) -- 上下高亮跳动 use({ "danilamihailov/beacon.nvim" }) -- markdown lsp use({ "mzlogin/vim-markdown-toc", ft = "markdown" }) use({ "iamcco/markdown-preview.nvim", run = "cd app && npm install", setup = function() vim.g.mkdp_filetypes = { "markdown" } end, ft = { "markdown" }, }) -- 跳转 use({ "ggandor/leap.nvim" }) use({ "ggandor/flit.nvim" }) -- 项目管理 use({ "ahmedkhalf/project.nvim" }) -- TODO 管理 use({ "folke/todo-comments.nvim", requires = "nvim-lua/plenary.nvim", }) -- 代码高亮 use({ "nvim-treesitter/nvim-treesitter", run = ":TSUpdate", }) use({ "nvim-treesitter/playground", after = "nvim-treesitter" }) -- 自动完成相关 use({ "hrsh7th/nvim-cmp", requires = { "onsails/lspkind-nvim", "octaltree/cmp-look", "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", "hrsh7th/cmp-calc", "hrsh7th/cmp-cmdline", "hrsh7th/nvim-cmp", "hrsh7th/cmp-vsnip", "hrsh7th/vim-vsnip", "hrsh7th/cmp-emoji", }, }) use({ "L3MON4D3/LuaSnip", requires = { "rafamadriz/friendly-snippets", }, tag = "v1.2.1", -- install jsregexp (optional!:). run = "make install_jsregexp", }) -- golang ide use({ "ray-x/go.nvim", "ray-x/guihua.lua", -- recommended if need floating window support }) -- 高亮当前关键词 use({ "RRethy/vim-illuminate" }) -- 罗列文件中的所有url use("axieax/urlview.nvim") -- 快捷键提示 use({ "folke/which-key.nvim", config = function() vim.o.timeout = true vim.o.timeoutlen = 300 end, }) -- debug use({ "theHamsta/nvim-dap-virtual-text", "rcarriga/nvim-dap-ui", "mfussenegger/nvim-dap", "folke/neodev.nvim", }) -- 命令模式增强 use({ "gelguy/wilder.nvim", config = function() -- config goes here end, }) -- lsp 状态 use("nvim-lua/lsp-status.nvim") -- 屏幕保护 use("eandrju/cellular-automaton.nvim") -- LSP 进度同步 use({ "https://github.com/j-hui/fidget.nvim", as = "fidget.nvim", config = function() require("fidget").setup({ text = { spinner = "dots", }, }) end, }) -- 模糊搜索 use({ "nvim-telescope/telescope.nvim", tag = "0.1.1", as = "telescope.nvim", requires = { { "nvim-lua/plenary.nvim" }, { "nvim-treesitter/nvim-treesitter" }, { "kdheepak/lazygit.nvim" }, }, }) if vim.loop.os_uname().sysname == "Linux" then use({ "https://github.com/nvim-telescope/telescope-fzf-native.nvim", run = "make", as = "telescope-fzf-native.nvim", }) end use({ "nvim-telescope/telescope-ui-select.nvim" }) -- 自定义命令 use({ "mrjones2014/legendary.nvim", requires = "kkharji/sqlite.lua", }) -- protobuf 识别 use("wfxr/protobuf.vim") -- 自动保存 if packer_bootstrap then require("packer").sync() end end)