Skip to content

Instantly share code, notes, and snippets.

@aelobdog
Created August 1, 2022 16:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aelobdog/b78be4fbacd26d3de5411eb9636afc37 to your computer and use it in GitHub Desktop.
Save aelobdog/b78be4fbacd26d3de5411eb9636afc37 to your computer and use it in GitHub Desktop.
latest vim configuration
-- 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