This commit is contained in:
veypi
2026-04-23 21:23:52 +08:00
parent 66c9ba4297
commit 095acafb62
3 changed files with 94 additions and 24 deletions
+42
View File
@@ -7,3 +7,45 @@ local map = LazyVim.safe_keymap_set
map("n", "q", "<cmd>bd<cr>", { desc = "Quit one" })
map("n", "Q", "<cmd>qa<cr>", { desc = "Quit All" })
map("n", "<F2>", ":Neotree toggle<cr>", { 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", "<leader>yy", copy_lines_with_location, { desc = "Copy line(s) with location" })