Created
August 1, 2022 16:54
-
-
Save aelobdog/b78be4fbacd26d3de5411eb9636afc37 to your computer and use it in GitHub Desktop.
latest vim configuration
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- Single file lua config for neovim | |
| ------------------------------------ | |
| local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) | |
| require('packer').startup(function(use) | |
| -- packages installed | |
| use 'wbthomason/packer.nvim' | |
| use 'KabbAmine/yowish.vim' | |
| use 'itchyny/lightline.vim' | |
| use 'ziglang/zig.vim' | |
| use 'reedes/vim-pencil' | |
| use 'junegunn/goyo.vim' | |
| use 'junegunn/limelight.vim' | |
| use 'zefei/vim-wintabs' | |
| use 'christoomey/vim-tmux-navigator' | |
| use 'neovim/nvim-lspconfig' | |
| use 'hrsh7th/cmp-nvim-lsp' | |
| use 'hrsh7th/cmp-buffer' | |
| use 'hrsh7th/cmp-path' | |
| use 'hrsh7th/nvim-cmp' | |
| use { | |
| 'ahmedkhalf/project.nvim', | |
| config = function() | |
| require('project_nvim').setup { | |
| manual_mode = false, | |
| detection_methods = { "lsp", "pattern" }, | |
| patterns = { ".git", "Makefile" }, | |
| ignore_lsp = {}, | |
| exclude_dirs = {}, | |
| show_hidden = false, | |
| silent_chdir = true, | |
| datapath = vim.fn.stdpath("data"), | |
| } | |
| end | |
| } | |
| use { | |
| 'nvim-telescope/telescope.nvim', | |
| requires = { {'nvim-lua/plenary.nvim'} }, | |
| config = function() | |
| require('telescope').setup { | |
| defaults = {mappings = {}}, | |
| pickers = {}, | |
| extensions = {} | |
| } | |
| require('telescope').load_extension('projects') | |
| end | |
| } | |
| use { | |
| 'nvim-treesitter/nvim-treesitter', | |
| config = function() | |
| require('nvim-treesitter').setup { | |
| ensure_installed = { "c", "go" }, | |
| sync_install = false, | |
| ignore_install = { }, | |
| highlight = { | |
| enable = true, | |
| disable = { }, | |
| additional_vim_regex_highlighting = false, | |
| }, | |
| } | |
| end | |
| } | |
| end) | |
| -- setting up the nvim-cmp things | |
| local cmp = require'cmp' | |
| cmp.setup({ | |
| snippet = {}, | |
| mapping = cmp.mapping.preset.insert({ | |
| ['<Tab>'] = function(fallback) | |
| if not cmp.select_next_item() then | |
| if vim.bo.buftype ~= 'prompt' and has_words_before() then | |
| cmp.complete() | |
| else | |
| fallback() | |
| end | |
| end | |
| end, | |
| ['<S-Tab>'] = function(fallback) | |
| if not cmp.select_prev_item() then | |
| if vim.bo.buftype ~= 'prompt' and has_words_before() then | |
| cmp.complete() | |
| else | |
| fallback() | |
| end | |
| end | |
| end, | |
| ['<CR>'] = cmp.mapping.confirm({ select = true }), | |
| }), | |
| sources = cmp.config.sources({ | |
| { name = 'nvim_lsp' }, | |
| { name = 'luasnip' }, | |
| }, { | |
| { name = 'buffer' }, | |
| }) | |
| }) | |
| function map(mode, lhs, rhs, opts) | |
| local options = { noremap = true } | |
| if opts then | |
| options = vim.tbl_extend("force", options, opts) | |
| end | |
| vim.api.nvim_set_keymap(mode, lhs, rhs, options) | |
| end | |
| vim.opt.clipboard="unnamedplus" | |
| vim.opt.tabstop=4 | |
| vim.opt.shiftwidth=4 | |
| vim.opt.number = true | |
| vim.opt.belloff=all | |
| vim.opt.showmode = false | |
| vim.opt.wrap = false | |
| vim.opt.termguicolors = true | |
| vim.opt.background=dark | |
| vim.opt.completeopt={ "menu" , "menuone" , "preview" , "noselect" , "noinsert" } | |
| vim.opt.cursorline = true | |
| vim.opt.laststatus=2 | |
| vim.cmd[[colorscheme yowish]] | |
| vim.g.mapleader = ' ' | |
| vim.g.lightline = { | |
| colorscheme = 'yowish' | |
| } | |
| map ('n', '<Space>', '<Nop>', {}) | |
| map ('n', '<leader>r', ':vsplit<CR><C-w>l', {}) | |
| map ('n', '<leader>d', ':split<CR><C-w>j', {}) | |
| map ('n', '<leader>w', 'b<C-v>e', {}) | |
| map ('n', '<leader>s', 'b<C-v>ey/<C-R>0<CR>', {}) | |
| map ('n', '<C-f>', '/', {}) | |
| map ('n', '..', '@@', {}) | |
| map ('n', '<leader><leader>', ':nohls<CR>', {}) | |
| map ('n', '<C-s>', ':w<CR>', {}) | |
| map ('n', '<C-d>', ':lcd %:h<CR>', {}) | |
| map ('n', '<C-q>', ':q<CR>', {}) | |
| map ('n', '<M-k>', 'ddkkp', {}) | |
| map ('n', '<M-j>', 'ddp', {}) | |
| map ('n', '<M-2>', '"+Pa', {}) | |
| map ('n', '<M-4>', '<ESC>GVgg"+y', {}) | |
| map ('n', '<M-5>', '<ESC>GVgg"+d', {}) | |
| map ('n', '<C-<>', '<C-w><', {}) | |
| map ('n', '<C->>', '<C-w>>', {}) | |
| map ('n', '<M-z>', ':buffers<CR>', {}) | |
| map ('n', '<Tab>', '<Plug>(wintabs_next)', {}) | |
| map ('n', '<S-Tab>', '<Plug>(wintabs_previous)', {}) | |
| map ('n', '<leader>q', '<Plug>(wintabs_close)', {}) | |
| map ('n', '<leader>u', '<Plug>(wintabs_undo)', {}) | |
| map ('n', '<C-k>', '<C-w>k', {}) | |
| map ('n', '<C-j>', '<C-w>j', {}) | |
| map ('n', '<C-l>', '<C-w>l', {}) | |
| map ('n', '<C-h>', '<C-w>h', {}) | |
| map ('n', '<M-">', 'bi"<ESC>wwhi"<ESC>', {}) | |
| map ('n', '<M-\'>', 'bi\'<ESC>wwhi\'<ESC>', {}) | |
| map ('n', '<M-[>', 'bi[<ESC>wwhi]<ESC>', {}) | |
| map ('n', '<M-{>', 'bi{<ESC>wwhi}<ESC>', {}) | |
| map ('n', '<M-(>', 'bi(<ESC>wwhi)<ESC>', {}) | |
| map ('n', '<M-c>', ':e /home/aelobdog/.config/nvim/init.lua<CR><CR>', {}) | |
| map ('n', '<M-s>', ':PlugInstall<CR>', {}) | |
| map ('i', '<C-d>', '<ESC>lDA', {}) | |
| map ('i', '<C-f>', '<ESC>/', {}) | |
| map ('i', '<C-w>', '<ESC><C-w>', {}) | |
| map ('i', '<C-e>', '<ESC>A', {}) | |
| map ('i', '<C-a>', '<ESC>I', {}) | |
| map ('i', '<C-s>', '<ESC><C-s>', {}) | |
| map ('i', '<M-2>', '<ESC>"+pa', {}) | |
| map ('i', '<M-\'>', '<ESC>bi\'<ESC>wwhi\'', {}) | |
| map ('i', '<M-">', '<ESC>bi"<ESC>wwhi"', {}) | |
| map ('i', '<M-[>', '<ESC>bi[<ESC>wwhi', {}) | |
| map ('i', '<M-{>', '<ESC>bi{<ESC>wwhi}', {}) | |
| map ('i', '<M-(>', '<ESC>bi(<ESC>wwhi)', {}) | |
| map ('i', 'jk', '<ESC>', {}) | |
| map ('t', '<C-e>', '<C-\\><C-n>', {}) | |
| map ('v', '<M-1>', '"+y', {}) | |
| map ('v', '<M-3>', '"+c', {}) | |
| map ('v', '<M-\'>', 'c\'\'<ESC>P', {}) | |
| map ('v', '<M-">', 'c""<ESC>P', {}) | |
| map ('v', '<M-[>', 'c[]<ESC>P', {}) | |
| map ('v', '<M-{>', 'c{}<ESC>P', {}) | |
| map ('v', '<M-9>', 'c()<ESC>P', {}) | |
| -- setting up lsp's | |
| local on_attach = function(client, bufnr) | |
| vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') | |
| local bufopts = { noremap=true, silent=true, buffer=bufnr } | |
| vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) | |
| vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) | |
| vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) | |
| vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) | |
| vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, bufopts) | |
| vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts) | |
| vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, bufopts) | |
| vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) | |
| vim.keymap.set('n', '<leader>f', vim.lsp.buf.formatting, bufopts) | |
| vim.keymap.set('n', '<leader>dj', vim.diagnostic.goto_next, {buffer=0}) | |
| vim.keymap.set('n', '<leader>dk', vim.diagnostic.goto_prev, {buffer=0}) | |
| vim.keymap.set('n', '<leader>ld', '<cmd>Telescope diagnostics<CR>', {buffer=0}) | |
| end | |
| require('lspconfig').gopls.setup { | |
| on_attach = on_attach, | |
| capabilities = capabilities | |
| } | |
| require('lspconfig').clangd.setup { | |
| on_attach = on_attach, | |
| capabilities = capabilities | |
| } | |
| require('lspconfig').zls.setup { | |
| on_attach = on_attach, | |
| capabilities = capabilities | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment