Created
August 1, 2022 16:54
-
-
Save aelobdog/b78be4fbacd26d3de5411eb9636afc37 to your computer and use it in GitHub Desktop.
latest vim configuration
This file contains 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