nvim/lua/config/keymaps.lua
2026-04-23 21:23:52 +08:00

52 lines
1.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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", "<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" })