-- sets the "key", which can be used in shortcuts vim.g.mapleader = "," vim.g.have_nerd_font = true -- [[ vim options, see `:help vim.opt` ]] -- line numbers vim.opt.number = true -- enable mouse vim.opt.mouse = "a" -- save undo history vim.opt.undofile = true -- case insensitive search, unless the terms contains uppercase or '\C' vim.opt.ignorecase = true vim.opt.smartcase = true -- save swapfile 250ms after nothing is done vim.opt.updatetime = 250 -- timeout mapped sequences after 300ms vim.opt.timeoutlen = 300 -- configure where splits open vim.opt.splitright = true vim.opt.splitbelow = true -- show whitespace characters clearly (see :help 'list') vim.opt.list = true -- preview substitutions (:s & :%s) while typing vim.opt.inccommand = "split" -- highlight the line the cursor is on vim.opt.cursorline = true -- set default tab size vim.opt.shiftwidth = 2 vim.opt.tabstop = 2 vim.opt.expandtab = true -- disable netrw to avoid conflicts with neotree vim.g.loaded_netrw = 0 vim.g.loaded_netrwPlugin = 0 -- sync os clipboard and neovim vim.schedule(function() vim.opt.clipboard = "unnamedplus" end) -- [[ shortcuts, see `:help vim.keymap.set()` ]] -- hide search results when pressing esc vim.keymap.set("n", "", "nohlsearch") -- disable arrow keys in normal mode -- vim.keymap.set('n', '', 'echo "Use h to move!!"') -- vim.keymap.set('n', '', 'echo "Use l to move!!"') -- vim.keymap.set('n', '', 'echo "Use k to move!!"') -- vim.keymap.set('n', '', 'echo "Use j to move!!"') -- 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" }) -- open neo-tree vim.keymap.set("n", "t", "Neotree reveal") -- lsp keybindings vim.keymap.set("n", "cd", vim.diagnostic.open_float) -- indent/dedent lines in visual mode vim.keymap.set("v", "", ">gv") vim.keymap.set("v", "", ""] = cmp.mapping.confirm({ select = true }), }), sources = { { name = "async_path" }, { name = "buffer" }, { name = "nvim_lsp" }, }, }) cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) local lspformat = require("lsp-format") lspformat.setup({}) local lspconfig = require("lspconfig") lspconfig.nixd.setup({ on_attach = lspformat.on_attach, capabilities = cmp_caps, settings = { ["nixd"] = { formatting = { command = { "nixfmt" }, }, }, }, }) lspconfig.rust_analyzer.setup({ on_attach = lspformat.on_attach, settings = { ["rust-analyzer"] = { check = { command = "clippy" }, }, }, }) require("gitsigns").setup() require("fidget").setup() require("neo-tree").setup({ close_if_last_window = true, window = { mappings = { ["Z"] = "expand_all_nodes", }, }, })