You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.8 KiB
Lua

vim.g.mapleader = ','
vim.g.maplocalleader = ','
vim.opt.fileformats = { 'unix', 'dos', 'mac' }
vim.opt.mouse = 'a'
vim.opt.clipboard = 'unnamedplus'
vim.opt.breakindent = true
vim.opt.undofile = true
vim.opt.signcolumn = 'yes'
vim.opt.updatetime = 250
vim.opt.timeoutlen = 300
vim.opt.splitright = true
vim.opt.splitbelow = true
vim.opt.scrolloff = 8
-- vim.opt.autochdir = true
-- Tabs
vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4
vim.opt.tabstop = 4
-- UI
vim.opt.matchtime = 2
vim.opt.number = true
vim.opt.numberwidth = 4
vim.opt.relativenumber = true
vim.opt.showmatch = true
vim.opt.spelllang = 'en_us'
vim.opt.wildmode = 'list:longest'
vim.opt.cursorline = true
-- Indent
vim.opt.copyindent = true
vim.opt.preserveindent = true
vim.opt.smartindent = true
vim.opt.shiftround = true
-- Text Formatting/Layout
vim.opt.ignorecase = true
vim.opt.list = true
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '' }
vim.opt.inccommand = 'split'
vim.opt.smartcase = true
vim.opt.wrap = false
vim.opt.whichwrap:append {
['<'] = true,
['>'] = true,
['['] = true,
[']'] = true,
}
vim.api.nvim_create_user_command('W', 'write', {})
vim.api.nvim_create_user_command('Q', 'qall!', {})
vim.keymap.set('n', '<leader>l', ':nohlsearch<CR>', { desc = 'clear highlighted search' })
vim.keymap.set('n', '<leader>ts', [[:%s/\s\s*$//g<CR>]], { desc = '[T]rim trailing [S]pace' })
vim.keymap.set('n', '<leader>ss', ':setlocal spell!<CR>', { desc = '[S]et [S]pell' })
vim.keymap.set('n', '<leader>p', ':set paste!<CR>', { desc = '[P]aste' })
vim.keymap.set('n', '<leader>nn', ':set nonumber norelativenumber<CR>', { desc = '[N]o [N]umber removed number and relative number' })
vim.keymap.set('n', '<leader>rn', ':set number relativenumber<CR>', { desc = '[R]elative [N]umber - set relative number and absolute number' })
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' })
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' })
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' })
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnopstic [Q]uickfix list' })
-- Use <Ctrl-h/j/k/l> to move between windows, no need for <Ctrl-w> first
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus up window' })
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus down window' })
vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus left window' })
vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus right window' })
-- highlight text on copy
vim.api.nvim_create_autocmd('TextYankPost', {
desc = 'Highlight when yanking (copying) text',
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
callback = vim.highlight.on_yank,
})