update dotfiles
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
-- =============================================================================
|
||||
-- keymaps.lua — 基础键位映射
|
||||
-- =============================================================================
|
||||
|
||||
local keymap = vim.keymap.set
|
||||
|
||||
-- Leader 键
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = " "
|
||||
|
||||
-- 编辑器操作
|
||||
keymap("n", "<leader>w", "<cmd>w<cr>", { desc = "保存" })
|
||||
|
||||
-- 关闭当前 buffer / 窗口(VSCode 风格)
|
||||
-- - quickfix 窗口:cclose(cmake-tools 输出窗口)
|
||||
-- - 普通文件:统计文件 buffer 数量
|
||||
-- - 只剩 1 个文件 buffer → 退出 nvim(不留下 "no name" 空白)
|
||||
-- - 多个文件 buffer → Bdelete 关闭当前标签
|
||||
-- - 其他特殊 buffer(终端等):直接关闭窗口
|
||||
keymap("n", "<leader>q", function()
|
||||
local bt = vim.bo.buftype
|
||||
local ft = vim.bo.filetype
|
||||
|
||||
if bt == "quickfix" then
|
||||
vim.cmd("cclose")
|
||||
return
|
||||
end
|
||||
|
||||
if bt ~= "" then
|
||||
vim.cmd("close")
|
||||
return
|
||||
end
|
||||
|
||||
-- 统计文件 buffer 数量(排除 nvim-tree/dashboard/quickfix/terminal 等)
|
||||
local file_bufs = 0
|
||||
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_is_loaded(bufnr) then
|
||||
local b = vim.bo[bufnr]
|
||||
if b.buftype == "" and b.filetype ~= "" then
|
||||
file_bufs = file_bufs + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if file_bufs <= 1 then
|
||||
vim.cmd("qa")
|
||||
else
|
||||
vim.cmd("Bdelete")
|
||||
end
|
||||
end, { desc = "关闭当前 buffer/窗口" })
|
||||
|
||||
keymap("n", "<leader>/", "<cmd>noh<cr>", { desc = "清除搜索高亮" })
|
||||
|
||||
-- 窗口导航
|
||||
keymap("n", "<C-h>", "<C-w>h", { desc = "跳到左边窗口" })
|
||||
keymap("n", "<C-j>", "<C-w>j", { desc = "跳到下面窗口" })
|
||||
keymap("n", "<C-k>", "<C-w>k", { desc = "跳到上面窗口" })
|
||||
keymap("n", "<C-l>", "<C-w>l", { desc = "跳到右边窗口" })
|
||||
|
||||
-- 窗口操作
|
||||
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>bnext<cr>", { desc = "下一个 buffer" })
|
||||
keymap("n", "<S-l>", "<cmd>bprevious<cr>", { desc = "上一个 buffer" })
|
||||
|
||||
-- 文件树
|
||||
keymap("n", "<leader>e", "<cmd>NvimTreeToggle<cr>", { desc = "文件树" })
|
||||
|
||||
-- 终端
|
||||
keymap("n", "<c-`>", "<cmd>ToggleTerm<cr>", { desc = "终端" })
|
||||
keymap("t", "<c-`>", "<cmd>ToggleTerm<cr>", { desc = "终端" })
|
||||
Reference in New Issue
Block a user