Files
dotfiles/nvim/lua/plugins/editor.lua
T
2026-07-19 19:36:54 +08:00

110 lines
3.0 KiB
Lua

-- =============================================================================
-- editor.lua — 编辑器增强插件
-- =============================================================================
return {
-- Comment.nvim: 注释快捷键 gcc / gc
{
"numToStr/Comment.nvim",
event = { "BufReadPre", "BufNewFile" },
opts = {},
},
-- nvim-surround: 环绕操作 ysiw" / cs"' / ds"
{
"kylechui/nvim-surround",
event = { "BufReadPre", "BufNewFile" },
version = "*",
opts = {},
},
-- vim-illuminate: 高亮光标下相同单词
{
"RRethy/vim-illuminate",
event = { "BufReadPre", "BufNewFile" },
opts = {
delay = 200,
large_file_cutoff = 2000,
},
config = function(_, opts)
require("illuminate").configure(opts)
end,
},
-- toggleterm.nvim: 集成终端
{
"akinsho/toggleterm.nvim",
version = "*",
keys = {
{ "<C-`>", "<cmd>ToggleTerm<cr>", mode = { "n", "t" }, desc = "终端" },
{ "<leader>tg", "<cmd>ToggleTerm direction=float<cr>", desc = "浮动终端" },
{ "<leader>th", "<cmd>ToggleTerm direction=horizontal<cr>", desc = "水平终端" },
{ "<leader>tv", "<cmd>ToggleTerm direction=vertical<cr>", desc = "垂直终端" },
},
opts = {
size = function(term)
if term.direction == "horizontal" then
return vim.o.lines * 0.3
elseif term.direction == "vertical" then
return vim.o.columns * 0.4
end
end,
direction = "horizontal",
float_opts = { border = "curved", winblend = 0 },
shell = vim.o.shell,
},
},
-- flash.nvim: 快速跳转
{
"folke/flash.nvim",
event = "VeryLazy",
opts = {},
},
-- indent-blankline: 缩进参考线
{
"lukas-reineke/indent-blankline.nvim",
event = { "BufReadPost", "BufNewFile" },
main = "ibl",
opts = {
indent = { char = "│" },
scope = { enabled = true },
},
},
-- nvim-ufo: 代码折叠
{
"kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" },
event = { "BufReadPost", "BufNewFile" },
config = function()
vim.o.foldmethod = "expr"
vim.o.foldexpr = "v:lua.vim.treesitter.foldexpr()"
vim.o.foldlevel = 99
vim.o.foldlevelstart = 99
require('ufo').setup({
provider_selector = function(bufnr, filetype, buftype)
return { "treesitter", "indent" }
end,
})
vim.keymap.set('n', 'zM', require('ufo').closeAllFolds, { desc = "关闭所有折叠" })
vim.keymap.set('n', 'zR', require('ufo').openAllFolds, { desc = "展开所有折叠" })
end,
},
-- rainbow-delimiters: 彩虹括号
{
"HiPhish/rainbow-delimiters.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter" },
config = function()
local rainbow_delimiters = require("rainbow-delimiters")
vim.g.rainbow_delimiters = {
strategy = { [''] = rainbow_delimiters.strategy.global },
query = { [''] = 'rainbow-delimiters' },
}
end,
},
}