initial commit
This commit is contained in:
commit
120dbdbc64
21 changed files with 2413 additions and 0 deletions
151
home/nvim/settings.lua
Normal file
151
home/nvim/settings.lua
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.cursorline = true
|
||||
vim.opt.wrap = false
|
||||
vim.opt.scrolloff = 10
|
||||
vim.opt.sidescrolloff = 8
|
||||
|
||||
vim.opt.tabstop = 4
|
||||
vim.opt.shiftwidth = 4
|
||||
vim.opt.softtabstop = 4
|
||||
vim.opt.expandtab = true
|
||||
vim.opt.smartindent = true
|
||||
vim.opt.autoindent = true
|
||||
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
vim.opt.hlsearch = false
|
||||
vim.opt.incsearch = true
|
||||
|
||||
vim.opt.termguicolors = true
|
||||
vim.opt.signcolumn = "yes"
|
||||
vim.opt.colorcolumn = "120"
|
||||
vim.opt.showmatch = false
|
||||
--- vim.opt.matchtime = 2
|
||||
vim.opt.conceallevel = 0
|
||||
vim.opt.concealcursor = ""
|
||||
vim.opt.synmaxcol = 1000
|
||||
vim.opt.isfname:append("@-@")
|
||||
|
||||
vim.opt.backup = false
|
||||
vim.opt.writebackup = false
|
||||
vim.opt.swapfile = false
|
||||
vim.opt.undofile = true
|
||||
vim.opt.undodir = vim.fn.expand("~/.cache/vim/undodir")
|
||||
vim.opt.updatetime = 100
|
||||
vim.opt.timeoutlen = 500
|
||||
vim.opt.ttimeoutlen = 0
|
||||
vim.opt.autoread = true
|
||||
vim.opt.autowrite = false
|
||||
|
||||
vim.opt.hidden = true
|
||||
--- vim.opt.errorbells = false
|
||||
vim.opt.backspace = "indent,eol,start"
|
||||
vim.opt.autochdir = false
|
||||
vim.opt.path:append("**")
|
||||
vim.opt.selection = "exclusive"
|
||||
vim.opt.mouse = "a"
|
||||
vim.opt.modifiable = true
|
||||
vim.opt.encoding = "UTF-8"
|
||||
|
||||
-- Split behavior
|
||||
vim.opt.splitbelow = true
|
||||
vim.opt.splitright = true
|
||||
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = " "
|
||||
|
||||
vim.o.exrc = true
|
||||
|
||||
vim.cmd("set title")
|
||||
vim.cmd("set ic")
|
||||
|
||||
-- Delete without yanking
|
||||
vim.keymap.set({ "n", "v" }, "<leader>d", '"_d', { desc = "Delete without yanking" })
|
||||
vim.keymap.set({ "n", "v" }, "<C-c>", '"+y', { desc = "Copy to clipboard" })
|
||||
|
||||
-- Wayland clipboard mappings
|
||||
vim.keymap.set({ "n", "v" }, "<leader>y", '"+y', { desc = "Yank to system clipboard" })
|
||||
vim.keymap.set("n", "<leader>Y", '"+Y', { desc = "Yank line to system clipboard" })
|
||||
vim.keymap.set({ "n", "v" }, "<leader>p", '"+p', { desc = "Paste from system clipboard" })
|
||||
vim.keymap.set({ "n", "v" }, "<leader>P", '"+P', { desc = "Paste from system clipboard before cursor" })
|
||||
|
||||
-- Better J behavior
|
||||
vim.keymap.set("n", "J", "mzJ`z", { desc = "Join lines and keep cursor position" })
|
||||
|
||||
--- center when jumping
|
||||
vim.keymap.set("n", "n", "nzzzv", { desc = "Next search result (centered)" })
|
||||
vim.keymap.set("n", "N", "Nzzzv", { desc = "Previous search result (centered)" })
|
||||
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Half page down (centered)" })
|
||||
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Half page up (centered)" })
|
||||
|
||||
--- window navigation
|
||||
vim.keymap.set("n", "<C-h>", "<C-w>h", { desc = "Move to left window" })
|
||||
vim.keymap.set("n", "<C-l>", "<C-w>l", { desc = "Move to right window" })
|
||||
vim.keymap.set("n", "<C-k>", "<C-w>k", { desc = "Move to top window" })
|
||||
vim.keymap.set("n", "<C-j>", "<C-w>j", { desc = "Move to bottom window" })
|
||||
|
||||
--- indenting in visual mode
|
||||
-- vim.keymap.set("v", "<", "<gv", { desc = "Indent left and reselect" })
|
||||
-- vim.keymap.set("v", ">", ">gv", { desc = "Indent right and reselect" })
|
||||
|
||||
local augroup = vim.api.nvim_create_augroup("UserConfig", {})
|
||||
|
||||
-- Highlight yanked text
|
||||
vim.api.nvim_create_autocmd("TextYankPost", {
|
||||
group = augroup,
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
})
|
||||
|
||||
--- return to last edit position when opening files
|
||||
vim.api.nvim_create_autocmd("BufReadPost", {
|
||||
group = augroup,
|
||||
callback = function()
|
||||
local mark = vim.api.nvim_buf_get_mark(0, '"')
|
||||
local lcount = vim.api.nvim_buf_line_count(0)
|
||||
if mark[1] > 0 and mark[1] <= lcount then
|
||||
pcall(vim.api.nvim_win_set_cursor, 0, mark)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
--- close terminal when process exits
|
||||
vim.api.nvim_create_autocmd("TermClose", {
|
||||
group = augroup,
|
||||
callback = function()
|
||||
if vim.v.event.status == 0 then
|
||||
vim.api.nvim_buf_delete(0, {})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- Disable syntax highlighting for large files
|
||||
vim.api.nvim_create_autocmd("BufReadPre", {
|
||||
pattern = "*",
|
||||
callback = function()
|
||||
local size = vim.fn.getfsize(vim.fn.expand("<afile>"))
|
||||
if size > 1024 * 1024 then -- 1MB threshold
|
||||
vim.cmd("syntax off")
|
||||
vim.opt_local.wrap = false
|
||||
vim.opt_local.number = false
|
||||
vim.opt_local.relativenumber = false
|
||||
end
|
||||
end,
|
||||
})
|
||||
--- create directory when saving files
|
||||
-- vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
-- group = augroup,
|
||||
-- callback = function()
|
||||
-- local dir = vim.fn.expand("<afile>:p:h")
|
||||
-- if vim.fn.isdirectory(dir) == 0 and dir ~= "oil:" then
|
||||
-- vim.fn.mkdir(dir, "p")
|
||||
-- end
|
||||
-- end,
|
||||
-- })
|
||||
|
||||
--- command line completion
|
||||
vim.opt.wildmenu = true
|
||||
vim.opt.wildmode = "longest:full,full"
|
||||
vim.opt.wildignore:append({ "*.o", "*.obj", "*.pyc", "*.class", "*.jar" })
|
||||
Loading…
Add table
Add a link
Reference in a new issue