-- General Settings vim.opt.number = true vim.opt.mouse = '' vim.opt.ignorecase = true vim.opt.smartcase = true vim.opt.hlsearch = false vim.opt.wrap = true vim.opt.breakindent = true vim.opt.tabstop = 2 vim.opt.shiftwidth = 2 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 -- 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 require('packer').startup(function(use) use 'wbthomason/packer.nvim' use 'lukas-reineke/indent-blankline.nvim' use 'windwp/nvim-autopairs' use 'numToStr/Comment.nvim' use 'kvrohit/rasmus.nvim' use 'hrsh7th/cmp-nvim-lsp' use 'hrsh7th/nvim-cmp' use 'neovim/nvim-lspconfig' use 'hrsh7th/cmp-nvim-lsp-signature-help' use 'L3MON4D3/LuaSnip' use { 'nvim-telescope/telescope.nvim', requires = { {'nvim-lua/plenary.nvim'} } } use 'stevearc/oil.nvim' use 'akinsho/toggleterm.nvim' use 'christoomey/vim-tmux-navigator' if install_plugins then require('packer').sync() end end) if install_plugins then return end local oil = require('oil') _G.oil = oil oil.setup { default_file_explorer = true, columns = { 'icon', }, view_options = { show_hidden = true } } require('ibl').setup() require('Comment').setup { padding = true, toggler = { line = '\\\\' }, opleader = { 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 = cmp.config.sources({ { name = 'nvim_lsp' } }, { { name = 'buffer' }, } ) }) 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 Lspconfig local lspconfig = require('lspconfig') local capabilities = require('cmp_nvim_lsp').default_capabilities() servers = { 'pyright', 'ccls', 'gopls' } for _, lsp in pairs(servers) do lspconfig[lsp].setup { capabilities = capabilities } end -- 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 ToggleTerm require('toggleterm').setup { direction = 'horizontal', size = math.floor(0.8 * vim.api.nvim_win_get_height(0)) } -- Set Up Autopairs require('nvim-autopairs').setup({ map_cr = true }) -- Set Up Compile.lua require('compile') -- 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', '', 'ToggleTerm', { noremap = true }) vim.keymap.set('t', '', 'ToggleTerm', { noremap = true }) vim.keymap.set('t', '', 'ToggleTerm', { 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('rasmus')