update:nvim11->12 config
This commit is contained in:
165
nvim/lua/settings/keymaps.lua
Normal file
165
nvim/lua/settings/keymaps.lua
Normal file
@@ -0,0 +1,165 @@
|
||||
-- project / netrw
|
||||
vim.keymap.set("n", "<leader>E", "<cmd>Ex<CR>", { desc = "Open netrw" })
|
||||
vim.keymap.set("n", "<leader>ER", "<cmd>bw<CR>", { desc = "Close buffer" })
|
||||
vim.keymap.set("n", "<leader>sr", ":cd %:p:h<CR>", { desc = "Set cwd to file dir" })
|
||||
|
||||
-- split navigation
|
||||
vim.keymap.set("n", "<A-Left>", "<C-w>h")
|
||||
vim.keymap.set("n", "<A-Down>", "<C-w>j")
|
||||
vim.keymap.set("n", "<A-Up>", "<C-w>k")
|
||||
vim.keymap.set("n", "<A-Right>", "<C-w>l")
|
||||
|
||||
-- netrw duplicate helper (<leader>d)
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "netrw",
|
||||
callback = function()
|
||||
vim.keymap.set("n", "<leader>d", function()
|
||||
local cwd = vim.fn.getcwd()
|
||||
vim.cmd("lcd %:p:h")
|
||||
vim.api.nvim_feedkeys("mt", "x", false)
|
||||
vim.api.nvim_feedkeys("mf", "x", false)
|
||||
vim.api.nvim_feedkeys("mc", "x", false)
|
||||
vim.defer_fn(function()
|
||||
vim.fn.chdir(cwd)
|
||||
end, 500)
|
||||
end, { buffer = true, desc = "Duplicate file in netrw" })
|
||||
end,
|
||||
})
|
||||
|
||||
-- buffer history (per-tab)
|
||||
local hist_by_tab = {}
|
||||
local navigating = false
|
||||
|
||||
local function tab_hist()
|
||||
local t = vim.fn.tabpagenr()
|
||||
hist_by_tab[t] = hist_by_tab[t] or { bufs = {}, idx = 1 }
|
||||
return hist_by_tab[t]
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("BufEnter", {
|
||||
callback = function()
|
||||
if navigating then
|
||||
return
|
||||
end
|
||||
local b = vim.fn.bufnr("%")
|
||||
if not vim.bo[b].buflisted then
|
||||
return
|
||||
end
|
||||
local h = tab_hist()
|
||||
|
||||
for i = #h.bufs, 1, -1 do
|
||||
if h.bufs[i] == b then
|
||||
table.remove(h.bufs, i)
|
||||
if i <= h.idx then
|
||||
h.idx = math.max(1, h.idx - 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
while h.idx < #h.bufs do
|
||||
table.remove(h.bufs)
|
||||
end
|
||||
|
||||
table.insert(h.bufs, b)
|
||||
h.idx = #h.bufs
|
||||
end,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<A-b>", function()
|
||||
local h = tab_hist()
|
||||
if h.idx <= 1 then
|
||||
return
|
||||
end
|
||||
navigating = true
|
||||
h.idx = h.idx - 1
|
||||
local b = h.bufs[h.idx]
|
||||
if vim.fn.bufexists(b) == 1 and vim.bo[b].buflisted then
|
||||
vim.cmd("buffer " .. b)
|
||||
else
|
||||
table.remove(h.bufs, h.idx)
|
||||
h.idx = math.max(1, h.idx - 1)
|
||||
end
|
||||
vim.schedule(function()
|
||||
navigating = false
|
||||
end)
|
||||
end, { desc = "Prev buffer (history)" })
|
||||
|
||||
vim.keymap.set("n", "<A-n>", function()
|
||||
local h = tab_hist()
|
||||
if h.idx >= #h.bufs then
|
||||
return
|
||||
end
|
||||
navigating = true
|
||||
h.idx = h.idx + 1
|
||||
local b = h.bufs[h.idx]
|
||||
if vim.fn.bufexists(b) == 1 and vim.bo[b].buflisted then
|
||||
vim.cmd("buffer " .. b)
|
||||
else
|
||||
table.remove(h.bufs, h.idx)
|
||||
h.idx = math.min(#h.bufs, h.idx)
|
||||
end
|
||||
vim.schedule(function()
|
||||
navigating = false
|
||||
end)
|
||||
end, { desc = "Next buffer (history)" })
|
||||
|
||||
vim.keymap.set("n", "<A-c>", function()
|
||||
local h = tab_hist()
|
||||
h.bufs = { vim.fn.bufnr("%") }
|
||||
h.idx = 1
|
||||
vim.notify("Buffer history cleared")
|
||||
end, { desc = "Clear buffer history" })
|
||||
|
||||
vim.keymap.set("n", "<A-q>", function()
|
||||
local current = vim.fn.bufnr("%")
|
||||
local h = tab_hist()
|
||||
|
||||
for i = #h.bufs, 1, -1 do
|
||||
if h.bufs[i] == current then
|
||||
table.remove(h.bufs, i)
|
||||
if i <= h.idx then
|
||||
h.idx = math.max(1, h.idx - 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if #h.bufs > 0 and h.idx <= #h.bufs then
|
||||
navigating = true
|
||||
vim.cmd("buffer " .. h.bufs[h.idx])
|
||||
vim.schedule(function()
|
||||
navigating = false
|
||||
end)
|
||||
end
|
||||
|
||||
vim.cmd("bd " .. current)
|
||||
end, { desc = "Close buffer + keep history" })
|
||||
|
||||
vim.api.nvim_create_autocmd("TabClosed", {
|
||||
callback = function()
|
||||
local closed = tonumber(vim.fn.expand("<afile>"))
|
||||
if closed then
|
||||
hist_by_tab[closed] = nil
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- editing helpers
|
||||
vim.keymap.set("n", "J", "mzJ`z")
|
||||
vim.keymap.set("n", "<leader>j", "gJdw:j!<CR>", { silent = true, desc = "Collapse tag line" })
|
||||
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
|
||||
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
|
||||
|
||||
-- centered paging
|
||||
vim.keymap.set("n", "<C-d>", "<C-d>zz")
|
||||
vim.keymap.set("n", "<C-u>", "<C-u>zz")
|
||||
|
||||
-- close floats + clear refs
|
||||
vim.keymap.set("n", "<leader>x", function()
|
||||
vim.lsp.buf.clear_references()
|
||||
for _, win in ipairs(vim.api.nvim_list_wins()) do
|
||||
local cfg = vim.api.nvim_win_get_config(win)
|
||||
if cfg.relative ~= "" then
|
||||
pcall(vim.api.nvim_win_close, win, false)
|
||||
end
|
||||
end
|
||||
end, { desc = "Close floating windows" })
|
||||
72
nvim/lua/settings/options.lua
Normal file
72
nvim/lua/settings/options.lua
Normal file
@@ -0,0 +1,72 @@
|
||||
vim.g.mapleader = " "
|
||||
|
||||
vim.opt.timeoutlen = 350
|
||||
vim.opt.updatetime = 50
|
||||
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.cursorline = true
|
||||
vim.opt.wrap = true
|
||||
vim.opt.termguicolors = true
|
||||
vim.opt.signcolumn = "no"
|
||||
vim.opt.scrolloff = 8
|
||||
vim.opt.mouse = "nvi"
|
||||
vim.opt.guicursor = "i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150"
|
||||
|
||||
vim.opt.clipboard = "unnamedplus"
|
||||
|
||||
vim.opt.backup = false
|
||||
vim.opt.writebackup = false
|
||||
|
||||
local undo_dir = vim.fs.joinpath(vim.fn.stdpath("state"), "undo")
|
||||
vim.fn.mkdir(undo_dir, "p")
|
||||
vim.opt.undodir = undo_dir
|
||||
vim.opt.undofile = true
|
||||
|
||||
vim.opt.tabstop = 4
|
||||
vim.opt.softtabstop = 4
|
||||
vim.opt.shiftwidth = 4
|
||||
vim.opt.expandtab = true
|
||||
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = {
|
||||
"typescriptreact",
|
||||
"typescript",
|
||||
"javascript",
|
||||
"css",
|
||||
"html",
|
||||
"htmldjango",
|
||||
"yaml",
|
||||
"json",
|
||||
"markdown",
|
||||
"toml",
|
||||
},
|
||||
callback = function()
|
||||
vim.opt_local.shiftwidth = 2
|
||||
vim.opt_local.tabstop = 2
|
||||
vim.opt_local.softtabstop = 2
|
||||
end,
|
||||
})
|
||||
|
||||
vim.opt.wildignore:append({ "*/node_modules/*", "*/venv/*" })
|
||||
vim.opt.path:append({ "**" })
|
||||
|
||||
vim.g.python3_host_prog = "/usr/bin/python3"
|
||||
|
||||
vim.filetype.add({
|
||||
extension = { templ = "templ" },
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("BufNewFile", {
|
||||
pattern = "*.py",
|
||||
callback = function()
|
||||
vim.cmd("0r " .. vim.fn.fnameescape(vim.fs.joinpath(vim.fn.stdpath("config"), "templates", "skeleton.py")))
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("BufNewFile", {
|
||||
pattern = "*.sh",
|
||||
callback = function()
|
||||
vim.cmd("0r " .. vim.fn.fnameescape(vim.fs.joinpath(vim.fn.stdpath("config"), "templates", "skeleton.sh")))
|
||||
end,
|
||||
})
|
||||
Reference in New Issue
Block a user