65 lines
2.5 KiB
Lua
65 lines
2.5 KiB
Lua
-- Leader key
|
|
vim.g.mapleader = " "
|
|
vim.g.maplocalleader = "\\"
|
|
|
|
-- Enable relative line numbers
|
|
vim.opt.number = true
|
|
vim.opt.relativenumber = true
|
|
|
|
-- GUI stuff
|
|
vim.opt.cursorline = true -- Highlight the current line
|
|
vim.opt.colorcolumn = "80,120" -- Show vertical ruler
|
|
vim.opt.scrolloff = 8 -- Keep at least 8 lines between the cursor and the borders
|
|
vim.opt.wrap = false -- Don't wrap long lines
|
|
|
|
-- Show whitespace characters (tabs, trailing spaces, etc.)
|
|
vim.opt.list = true
|
|
vim.opt.listchars = { tab = '» ', trail = '·', multispace = '·', nbsp = '␣' }
|
|
|
|
-- Strip trailing whitespace and extra blank lines at end of file on save
|
|
local trim_group = vim.api.nvim_create_augroup('TrimOnSave', { clear = true })
|
|
vim.api.nvim_create_autocmd('BufWritePre', {
|
|
group = trim_group,
|
|
pattern = '*',
|
|
callback = function()
|
|
local save_view = vim.fn.winsaveview()
|
|
vim.cmd([[%s/\s\+$//e]]) -- Remove trailing whitespace on every line
|
|
vim.cmd([[%s/\n\+\%$//e]]) -- Remove all trailing blank lines
|
|
vim.fn.append(vim.fn.line('$'), '') -- Always append exactly one blank line at the end
|
|
vim.fn.winrestview(save_view) -- Restore the window to where it was before the edits
|
|
end,
|
|
})
|
|
|
|
-- Remove background opacity
|
|
vim.api.nvim_set_hl(0, 'Normal', { bg = 'none' })
|
|
vim.api.nvim_set_hl(0, 'NormalFloat', { bg = 'none' })
|
|
|
|
-- Remember old sessions
|
|
vim.opt.undofile = true
|
|
local restore_cursor_group = vim.api.nvim_create_augroup('RestoreCursor', { clear = true })
|
|
vim.api.nvim_create_autocmd('BufReadPost', {
|
|
group = restore_cursor_group,
|
|
callback = function()
|
|
local mark = vim.api.nvim_buf_get_mark(0, '"')
|
|
local last_line = vim.api.nvim_buf_line_count(0)
|
|
if mark[1] > 0 and mark[1] <= last_line then
|
|
vim.schedule(function()
|
|
vim.api.nvim_win_set_cursor(0, mark)
|
|
vim.cmd.normal({ 'zz', bang = true })
|
|
end)
|
|
end
|
|
end,
|
|
})
|
|
|
|
-- Indentation
|
|
vim.opt.tabstop = 4 -- Visual width of a tab character
|
|
vim.opt.softtabstop = 4 -- Spaces inserted/deleted per Tab/Backspace in insert mode
|
|
vim.opt.shiftwidth = 4 -- Width used by >>, <<, and autoindent
|
|
vim.opt.expandtab = true -- Typed tabs become spaces
|
|
vim.opt.smartindent = true -- Auto-indent new lines based on syntax (e.g. after '{')
|
|
|
|
-- Search
|
|
vim.opt.ignorecase = true -- Case-insensitive search...
|
|
vim.opt.smartcase = true -- ...unless you type an explicit uppercase letter
|
|
|