vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' vim.g.have_nerd_font = true vim.opt.relativenumber = true vim.opt.mouse = 'a' vim.opt.showmode = false vim.opt.smartindent = true vim.opt.spelllang = 'en_us' vim.o.spell = true vim.o.colorcolumn = '80' -- Sync clipboard between OS and Neovim. -- Schedule the setting after `UiEnter` because it can increase startup-time. -- Remove this option if you want your OS clipboard to remain independent. -- See `:help 'clipboard'` vim.schedule(function() vim.opt.clipboard = 'unnamedplus' end) -- Enable break indent vim.opt.breakindent = true -- Save undo history vim.opt.undofile = true -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term vim.opt.ignorecase = true vim.opt.smartcase = true -- Keep signcolumn on by default vim.opt.signcolumn = 'yes' -- Decrease update time vim.opt.updatetime = 250 -- Decrease mapped sequence wait time vim.opt.timeoutlen = 300 -- Configure how new splits should be opened vim.opt.splitright = true vim.opt.splitbelow = true -- Sets how neovim will display certain whitespace characters in the editor. -- See `:help 'list'` -- and `:help 'listchars'` vim.opt.list = true vim.opt.listchars = { tab = 'ยป ', trail = 'ยท', nbsp = 'โฃ' } -- Preview substitutions live, as you type! vim.opt.inccommand = 'split' -- Show which line your cursor is on vim.opt.cursorline = true -- Minimal number of screen lines to keep above and below the cursor. vim.opt.scrolloff = 8 vim.keymap.set('n', 'oo', 'o', { noremap = false, silent = true }) vim.keymap.set('n', 'OO', 'O', { noremap = false, silent = true }) -- Don't replace yanked text in register. vim.keymap.set('x', 'p', [["_dP]]) -- map alt-number to buffers for i = 1, 9, 1 do vim.keymap.set('n', string.format('', i), function() vim.api.nvim_set_current_buf(vim.t.bufs[i]) end) end -- Move with home row in command mode vim.cmd [[ cnoremap cnoremap cnoremap cnoremap cnoremap cnoremap ]] -- Move with home row in insert mode vim.keymap.set('i', '', '') vim.keymap.set('i', '', '') vim.keymap.set('i', '', '') vim.keymap.set('i', '', '') vim.keymap.set('i', '', 'b') vim.keymap.set('i', '', 'db') -- Clear highlights on search when pressing in normal mode -- See `:help hlsearch` vim.keymap.set('n', ';', ':') vim.keymap.set('n', '', 'nohlsearch') -- Diagnostic keymaps vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) -- Keybinds to make split navigation easier. -- Use CTRL+ to switch between windows -- -- See `:help wincmd` for a list of all window commands vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) -- [[ Basic Autocommands ]] -- See `:help lua-guide-autocommands` -- Highlight when yanking (copying) text -- Try it with `yap` in normal mode -- See `:help vim.highlight.on_yank()` vim.api.nvim_create_autocmd('TextYankPost', { desc = 'Highlight when yanking (copying) text', group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), callback = function() vim.highlight.on_yank() end, }) -- [[ Install `lazy.nvim` plugin manager ]] -- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' if not (vim.uv or vim.loop).fs_stat(lazypath) then local lazyrepo = 'https://github.com/folke/lazy.nvim.git' local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } if vim.v.shell_error ~= 0 then error('Error cloning lazy.nvim:\n' .. out) end end ---@diagnostic disable-next-line: undefined-field vim.opt.rtp:prepend(lazypath) local floating_win = nil function FloatingTerm() if floating_win and vim.api.nvim_win_is_valid(floating_win) then vim.api.nvim_win_close(floating_win, true) floating_win = nil return end local buf = vim.api.nvim_create_buf(false, true) local width = math.floor(vim.o.columns * 0.8) local height = math.floor(vim.o.lines * 0.8) local row = math.floor((vim.o.lines - height) / 2) local col = math.floor((vim.o.columns - width) / 2) floating_win = vim.api.nvim_open_win(buf, true, { relative = 'editor', width = width, height = height, row = row, col = col, style = 'minimal', border = 'rounded', }) vim.fn.termopen(vim.o.shell) vim.cmd 'startinsert' -- Map to close the floating terminal when inside it vim.api.nvim_buf_set_keymap(buf, 't', '', ':lua FloatingTerm()', { noremap = true, silent = true }) end vim.api.nvim_set_keymap('n', 't', ':lua FloatingTerm()', { noremap = true, silent = true }) require('lazy').setup({ { import = 'custom.plugins' } }, { ui = { -- If you are using a Nerd Font: set icons to an empty table which will use the -- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table icons = vim.g.have_nerd_font and {} or { cmd = 'โŒ˜', config = '๐Ÿ› ', event = '๐Ÿ“…', ft = '๐Ÿ“‚', init = 'โš™', keys = '๐Ÿ—', plugin = '๐Ÿ”Œ', runtime = '๐Ÿ’ป', require = '๐ŸŒ™', source = '๐Ÿ“„', start = '๐Ÿš€', task = '๐Ÿ“Œ', lazy = '๐Ÿ’ค ', }, }, })