52 lines
1.8 KiB
Lua
52 lines
1.8 KiB
Lua
-- 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" })
|
||
|