update
This commit is contained in:
@@ -79,9 +79,36 @@ keymap("n", "<leader>sv", "<cmd>vsplit<cr>", { desc = "垂直分屏" })
|
||||
keymap("n", "<leader>sh", "<cmd>split<cr>", { desc = "水平分屏" })
|
||||
keymap("n", "<leader>sc", "<cmd>close<cr>", { desc = "关闭窗口" })
|
||||
|
||||
-- Buffer 导航
|
||||
keymap("n", "<S-h>", "<cmd>bprevious<cr>", { desc = "下一个 buffer" })
|
||||
keymap("n", "<S-l>", "<cmd>bnext<cr>", { desc = "上一个 buffer" })
|
||||
-- Buffer 导航(跳过终端类 buffer)
|
||||
local function skip_terminal_buffers(direction)
|
||||
local bufs = vim.api.nvim_list_bufs()
|
||||
-- 收集所有可显示、非终端、非特殊类型的 buffer
|
||||
local valid = {}
|
||||
for _, b in ipairs(bufs) do
|
||||
if vim.api.nvim_buf_is_loaded(b) and vim.bo[b].buflisted then
|
||||
local bt = vim.bo[b].buftype
|
||||
-- 跳过 terminal/nofile/help/quickfix 等
|
||||
if bt == "" or bt == "acwrite" then
|
||||
table.insert(valid, b)
|
||||
end
|
||||
end
|
||||
end
|
||||
if #valid == 0 then return end
|
||||
|
||||
-- 找当前 buffer 在 valid 列表中的位置
|
||||
local current = vim.api.nvim_get_current_buf()
|
||||
local idx = 1
|
||||
for i, b in ipairs(valid) do
|
||||
if b == current then idx = i break end
|
||||
end
|
||||
|
||||
-- 按方向计算下一个(-1 = previous, 1 = next)
|
||||
local next_idx = (idx + direction - 1) % #valid + 1
|
||||
vim.api.nvim_set_current_buf(valid[next_idx])
|
||||
end
|
||||
|
||||
keymap("n", "<S-h>", function() skip_terminal_buffers(-1) end, { desc = "上一个 buffer" })
|
||||
keymap("n", "<S-l>", function() skip_terminal_buffers(1) end, { desc = "下一个 buffer" })
|
||||
|
||||
-- Buffer 操作
|
||||
keymap("n", "<leader>bc", "<cmd>Bdelete<cr>", { desc = "关闭当前 buffer" })
|
||||
|
||||
Reference in New Issue
Block a user