Skip to content

Instantly share code, notes, and snippets.

@ZacharyThompson
Last active August 26, 2023 03:08
Show Gist options
  • Save ZacharyThompson/28df5340c87c565e6d6f3c923a69777b to your computer and use it in GitHub Desktop.
Save ZacharyThompson/28df5340c87c565e6d6f3c923a69777b to your computer and use it in GitHub Desktop.
let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim'
if empty(glob(data_dir . '/autoload/plug.vim'))
silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
call plug#begin(has('nvim') ? stdpath('data') . '/plugged' : '~/.vim/plugged')
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-surround'
Plug 'numToStr/Comment.nvim'
Plug 'mbbill/undotree'
Plug 'nvim-treesitter/nvim-treesitter'
Plug 'neovim/nvim-lspconfig'
Plug 'jiangmiao/auto-pairs'
Plug 'shaunsingh/solarized.nvim'
Plug 'L3MON4D3/LuaSnip'
Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'hrsh7th/cmp-buffer'
Plug 'hrsh7th/cmp-path'
Plug 'hrsh7th/nvim-cmp'
Plug 'saadparwaiz1/cmp_luasnip'
Plug 'rafamadriz/friendly-snippets'
call plug#end()
set title
set laststatus=2
set mouse=a
set number
set relativenumber
set signcolumn=number
set smartindent
set undofile
set linebreak
set updatetime=50
set laststatus=1
set scrolloff=8
" set tgc
set bg=dark
let mapleader = ' '
nnoremap [q <cmd>cp<CR>
nnoremap ]q <cmd>cn<CR>
nnoremap [b <cmd>bp<CR>
nnoremap ]b <cmd>bn<CR>
nnoremap <leader>f <cmd>lua vim.lsp.buf.format()<CR>
nnoremap <leader>d <cmd>lua vim.lsp.buf.definition()<CR>
nnoremap <leader>h <cmd>lua vim.lsp.buf.hover()<CR>
nnoremap <leader>r <cmd>lua vim.lsp.buf.rename()<CR>
nnoremap <leader>ej <cmd>lua vim.diagnostic.goto_next()<CR>
nnoremap <leader>ek <cmd>lua vim.diagnostic.goto_prev()<CR>
nnoremap <leader>u <cmd>UndotreeToggle<CR>
hi Pmenu ctermbg=darkgray ctermfg=white
hi ColorColumn ctermbg=darkgray
au FileType c,cpp,go,python,rust setl cc=80
au VimResized * wincmd =
" press <Tab> to expand or jump in a snippet. These can also be mapped separately
" via <Plug>luasnip-expand-snippet and <Plug>luasnip-jump-next.
imap <silent><expr> <Tab> luasnip#expand_or_jumpable() ? '<Plug>luasnip-expand-or-jump' : '<Tab>'
inoremap <silent> <S-Tab> <cmd>lua require'luasnip'.jump(-1)<Cr>
snoremap <silent> <Tab> <cmd>lua require('luasnip').jump(1)<Cr>
snoremap <silent> <S-Tab> <cmd>lua require('luasnip').jump(-1)<Cr>
lua << EOF
require('Comment').setup()
-- Treesitter
require("nvim-treesitter.configs").setup({
highlight = { enable = true },
ensure_installed = { "c", "cpp", "lua", "vim", "vimdoc", "query", "rust", "go", "python" },
})
-- LSP
local capabilities = require('cmp_nvim_lsp').default_capabilities()
local lspconfig = require('lspconfig')
lspconfig.rust_analyzer.setup{
capabilities = capabilities,
}
lspconfig.clangd.setup{
capabilities = capabilities,
}
lspconfig.gopls.setup{
capabilities = capabilities,
}
lspconfig.pylsp.setup{
capabilities = capabilities,
settings = {
pylsp = {
plugins = {
pycodestyle = {
ignore = {'W391'},
maxLineLength = 100
}
}
}
}
}
local luasnip = require('luasnip')
require("luasnip.loaders.from_vscode").lazy_load()
local cmp = require('cmp')
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-e>"] = cmp.mapping.close(),
["<C-y>"] = cmp.mapping.confirm {
behaviour = cmp.ConfirmBehavior.Insert,
select = true,
},
},
sources = cmp.config.sources({
{name = "nvim_lsp", max_item_count = 15},
{name = "path", max_item_count = 10},
{name = "luasnip"},
{name = "buffer", keyword_length = 1},
})
})
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment