-- Global settings vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 vim.g.mapleader = " " vim.opt.termguicolors = true vim.opt.tabstop = 2 vim.opt.softtabstop = 2 vim.opt.shiftwidth = 2 vim.opt.expandtab = true vim.opt.number = true vim.opt.relativenumber = true vim.opt.scrolloff = 8 vim.opt.colorcolumn = "+1,+2" vim.opt.cursorline = true vim.opt.signcolumn = 'yes' vim.cmd.colorscheme "catppuccin-mocha" -- Custom bindings for buffer navigation vim.keymap.set("n", "n", "bn") vim.keymap.set("n", "p", "bp") vim.keymap.set("n", "", "nohlsearch") -- Bufferline (tabs) require("bufferline").setup {} -- Lualine (status line) require("lualine").setup { options = { section_separators = { left = '', right = '' } } } -- Telescope (anything search) vim.keymap.set("n", "b", "Telescope buffers") vim.keymap.set("n", "f", "Telescope find_files") vim.keymap.set("n", "g", "Telescope git_files") -- Tree (file manager) require("nvim-tree").setup() vim.keymap.set("n", "t", "NvimTreeToggle", { noremap = true, silent = true }) -- lspconfig (LSPs) vim.lsp.enable("lua_ls") vim.lsp.enable("nil_ls") vim.lsp.enable("pyright") vim.lsp.enable("rust_analyzer") vim.keymap.set("n", "o", vim.lsp.buf.format) vim.api.nvim_create_autocmd('LspAttach', { desc = 'LSP actions', callback = function() local bufmap = function(mode, lhs, rhs) local opts = { buffer = true } vim.keymap.set(mode, lhs, rhs, opts) end -- Displays hover information about the symbol under the cursor bufmap('n', 'K', vim.lsp.buf.hover) -- Jump to the definition bufmap('n', 'gd', vim.lsp.buf.definition) -- Jump to declaration bufmap('n', 'gD', vim.lsp.buf.declaration) -- Lists all the implementations for the symbol under the cursor bufmap('n', 'gi', vim.lsp.buf.implementation) -- Jumps to the definition of the type symbol bufmap('n', 'go', vim.lsp.buf.type_definition) -- Lists all the references bufmap('n', 'gr', vim.lsp.buf.references) -- Displays a function's signature information bufmap('n', '', vim.lsp.buf.signature_help) -- Renames all references to the symbol under the cursor bufmap('n', 'R', vim.lsp.buf.rename) -- Show diagnostics in a floating window bufmap('n', 'gl', vim.diagnostic.open_float) -- Move to the previous diagnostic bufmap('n', '[d', vim.diagnostic.goto_prev) -- Move to the next diagnostic bufmap('n', ']d', vim.diagnostic.goto_next) end })