-- General Settings vim.opt.number = true vim.opt.rnu = true vim.opt.ignorecase = true vim.opt.smartcase = true vim.opt.hlsearch = false vim.opt.wrap = true vim.opt.breakindent = true vim.opt.tabstop = 4 vim.opt.shiftwidth = 4 vim.opt.expandtab = true vim.opt.termguicolors = true vim.opt.splitbelow = true vim.opt.scrolloff = 5 vim.opt.mouse= 'a' vim.api.nvim_set_option('clipboard','unnamedplus') vim.opt.ruler = false vim.opt.showtabline = 2 -- Reset Cursor On Exit local au_id = vim.api.nvim_create_augroup('RestoreCursorShapeOnExit', {clear = true}) vim.api.nvim_create_autocmd('VimLeave',{ command = 'set guicursor=a:ver20', group = au_id }) -- Setup Packages local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim' if not (vim.uv or vim.loop).fs_stat(lazypath) then vim.fn.system({ 'git', 'clone', '--filter=blob:none', 'https://github.com/folke/lazy.nvim.git', '--branch=stable', -- latest stable release lazypath, }) end vim.opt.rtp:prepend(lazypath) require('lazy').setup({ 'stevearc/oil.nvim', 'lukas-reineke/indent-blankline.nvim', 'windwp/nvim-autopairs', 'numToStr/Comment.nvim', 'nvim-tree/nvim-web-devicons', 'hrsh7th/cmp-nvim-lsp', 'neovim/nvim-lspconfig', 'hrsh7th/cmp-nvim-lsp-signature-help', 'hrsh7th/nvim-cmp', 'L3MON4D3/LuaSnip', 'nvim-telescope/telescope.nvim', 'nvim-lua/plenary.nvim', 'klen/nvim-config-local', 'christoomey/vim-tmux-navigator', 'metalelf0/black-metal-theme-neovim', }) require('config-local').setup { config_files = { ".nvim.lua", ".nvimrc", ".exrc" }, hashfile = vim.fn.stdpath("data") .. "/config-local", } local oil = require('oil') _G.oil = oil oil.setup { default_file_explorer = true, view_options = { show_hidden = true } } require('ibl').setup() require('Comment').setup { padding = true, toggler = { line = '\\\\', block = ']]' }, opleader = { line = '\\\\', block = ']]' } } -- CMP Setup local cmp = require'cmp' cmp.setup({ snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) end }, window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered(), }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.confirm({ select = true }), }), sources = { { name = 'nvim_lsp' }, { name = 'buffer' }, { name = 'nvim_lsp_signature_help' }, } }) cmp.setup.filetype('gitcommit', { sources = cmp.config.sources({ { name = 'cmp_git' }, }, { { name = 'buffer' }, }) }) cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = 'buffer' } } }) cmp.setup.cmdline(':', { sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }) }) -- Set Up Telescope local actions = require('telescope.actions') local telescope = require('telescope') telescope.setup({ pickers = { find_files = { hidden = true } }, defaults = { layout_strategy = 'bottom_pane', layout_config = { height = 0.4 }, }, }) -- Set Up Autopairs require('nvim-autopairs').setup({ map_cr = true }) -- Keyboard Shortcuts vim.keymap.set('n', 'P', 'pu', { noremap = true }) vim.keymap.set('n', '', 'Telescope find_files', { noremap = true }) vim.keymap.set('n', 'b', 'Telescope buffers', { noremap = true }) vim.keymap.set('n', 'f', 'Telescope live_grep', { noremap = true }) vim.keymap.set('n', '', 'close', { noremap = true }) vim.keymap.set('n', '', 'bdelete!', { noremap = true }) vim.keymap.set('t', '', '', { noremap = true }) vim.keymap.set('n', '\\d', vim.lsp.buf.definition, { noremap = true }) vim.keymap.set('n', '\\f', vim.lsp.buf.declaration, { noremap = true }) vim.keymap.set('n', 'K', vim.lsp.buf.hover, { noremap = true }) vim.keymap.set('n', '', 'bnext', { noremap = true }) vim.keymap.set('n', '', 'bprev', { noremap = true }) vim.keymap.set('n', '', 'TmuxNavigateLeft', { noremap = true }) vim.keymap.set('n', '', 'TmuxNavigateDown', { noremap = true }) vim.keymap.set('n', '', 'TmuxNavigateUp', { noremap = true }) vim.keymap.set('n', '', 'TmuxNavigateRight', { noremap = true }) vim.keymap.set('n', '', 'lua oil.toggle_float()', { noremap = true }) -- Splitting The Window vim.api.nvim_set_keymap('n', '', ':vsplit', { noremap = true }) vim.api.nvim_set_keymap('n', '', ':split', { noremap = true }) vim.cmd.colorscheme('bathory') local map = vim.api.nvim_set_keymap local opts = { noremap = true, silent = true } map('n', '', 'tabnext', opts) map('n', '', 'tabprev', opts) map('n', '', 'tabnew', opts) map('n', '', 'tabclose', opts) map('n', '', 'bnext', opts) map('n', '', 'bprev', opts) vim.api.nvim_create_augroup('AutoFormatting', {}) vim.api.nvim_create_autocmd('BufWritePre', { group = 'AutoFormatting', callback = function() vim.lsp.buf.format() end, }) vim.api.nvim_set_hl(0, "Normal", { bg = "none" })