-- Map Leader vim.g.mapleader = " " vim.g.maplocalleader = " " -- Use Nerd Font vim.g.have_nerd_font = true -- Add vertical line -- vim.opt.colorcolumn = "100" -- Enable TrueColor vim.opt.termguicolors = true -- Disable Neovim background vim.api.nvim_set_hl(0, "Normal", { bg = "none" }) vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" }) -- Scroll lines/columns vim.opt.mousescroll = "hor:1,ver:1" -- Set indentation preferences vim.opt.expandtab = true -- Convert tabs to spaces vim.opt.shiftwidth = 2 -- Number of spaces for auto-indent vim.opt.tabstop = 2 -- Number of spaces a tab counts for vim.opt.softtabstop = 2 -- Number of spaces a tab counts for when editing vim.opt.autoindent = true -- Copy indent from current line when starting new line vim.opt.smartindent = true -- Do smart autoindenting when starting a new line -- Disable line wrapping vim.opt.wrap = false -- Enable break indent vim.opt.breakindent = true -- Make line numbers default vim.opt.number = true vim.opt.relativenumber = true -- Enable mouse mode, can be useful for resizing splits for example vim.opt.mouse = "a" -- Full path on status line vim.opt.statusline = "%F%m%r%h%w%=%l,%c %P" -- Sync clipboard between OS and Neovim vim.schedule(function() vim.opt.clipboard = "unnamedplus" end) -- 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 -- Decrease update time vim.opt.updatetime = 250 -- Decrease mapped sequence wait time -- Displays which-key popup sooner 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. 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 = 10 -- Highlight when yanking (copying) text vim.api.nvim_create_autocmd("TextYankPost", { callback = function() vim.highlight.on_yank() end, }) -- Keymaps local remap = require("utils.remap") remap.nmap("q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" }) remap.imap("jk", "", { desc = "Exit insert mode with jk" }) remap.nmap("", "nohlsearch", { desc = "Clear highlights" }) -- Prevent "x" from overriding the register remap.nmap("x", '"_x') -- Window Navigation remap.nmap("", "h", { desc = "Move focus to the left window" }) remap.nmap("", "l", { desc = "Move focus to the right window" }) remap.nmap("", "j", { desc = "Move focus to the lower window" }) remap.nmap("", "k", { desc = "Move focus to the upper window" }) -- Tab management remap.nmap("tn", ":tabnew", { desc = "[T]ab [N]ew" }) remap.nmap("tc", ":tabclose", { desc = "[T]ab [C]lose" }) remap.nmap("to", ":tabonly", { desc = "[T]ab [O]nly" }) remap.nmap("tl", ":tabnext", { desc = "[T]ab Next" }) remap.nmap("th", ":tabprevious", { desc = "[T]ab Previous" }) remap.nmap("tm.", ":tabmove +1", { desc = "[T]ab [M]ove Right" }) remap.nmap("tm,", ":tabmove -1", { desc = "[T]ab [M]ove Left" }) for i = 1, 9 do remap.nmap(string.format("%d", i), string.format("%dgt", i), { desc = string.format("[T]ab %d", i) }) end -- Buffer Management remap.nmap("bl", ":ls", { desc = "[B]uffer [L]ist" }) remap.nmap("bd", ":bdelete", { desc = "[B]uffer [D]elete" }) remap.nmap("]b", ":bnext", { desc = "[B]uffer [N]ext" }) remap.nmap("[b", ":bprevious", { desc = "[B]uffer [P]revious" }) remap.nmap("bb", ":b", { desc = "[B]uffer Select" }) remap.nmap("bo", ":bufdo bd|1bd", { desc = "[B]uffer Delete Others" }) -- Terminal remap.nmap("tet", function() vim.cmd("terminal") vim.cmd("startinsert") end, { desc = "[T]erminal" }) remap.nmap("ter", function() local buf_dir = vim.fn.expand("%:p:h") vim.cmd("edit term://" .. buf_dir .. "//zsh") vim.cmd("startinsert") end, { desc = "[T]erminal [R]elative" }) remap.tmap("", "", { desc = "Terminal Normal Mode" }) remap.tmap("jk", "", { desc = "Terminal Normal Mode" }) remap.tmap("", "", { desc = "Terminal Window Command" })