-- Keymaps are automatically loaded on the VeryLazy event -- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua -- Add any additional keymaps here local map = LazyVim.safe_keymap_set map("n", "q", "bd", { desc = "Quit one" }) map("n", "Q", "qa", { desc = "Quit All" }) map("n", "", ":Neotree toggle", { desc = "toggle neotree" }) -- 自定义复制:文件名 + 行号范围 + 内容 -- 用法:yp(当前行),2yp(当前行及以下共2行) _G.copy_lines_with_location = function() local ok, err = pcall(function() local count = vim.v.count1 local bufnr = vim.api.nvim_get_current_buf() local filepath = vim.api.nvim_buf_get_name(bufnr) local relative_path = vim.fn.fnamemodify(filepath, ":.") if relative_path == "" then relative_path = "[No Name]" end local start_line = vim.api.nvim_win_get_cursor(0)[1] local end_line = start_line + count - 1 local lines = vim.api.nvim_buf_get_lines(bufnr, start_line - 1, end_line, false) local range_str if count == 1 then range_str = tostring(start_line) else range_str = string.format("%d-%d", start_line, end_line) end local parts = { string.format("%s:%s:", relative_path, range_str) } for i, line in ipairs(lines) do table.insert(parts, string.format(" %d: %s", start_line + i - 1, line)) end local result = table.concat(parts, "\n") vim.fn.setreg("+", result) vim.fn.setreg('"', result) vim.notify("Copied " .. #lines .. " line(s)", vim.log.levels.INFO) end) if not ok then vim.notify("copy_lines_with_location error: " .. tostring(err), vim.log.levels.ERROR) end end local copy_lines_with_location = _G.copy_lines_with_location map("n", "yy", copy_lines_with_location, { desc = "Copy line(s) with location" })