193 lines
3.8 KiB
VimL
193 lines
3.8 KiB
VimL
" Set the encoding to UTF-8
|
|
scriptencoding utf-8
|
|
set encoding=utf8
|
|
|
|
set shada="NONE"
|
|
|
|
" Run :PlugInstall to install plugins
|
|
|
|
" Plugins
|
|
call plug#begin()
|
|
|
|
" UI
|
|
Plug 'ctrlpvim/ctrlp.vim'
|
|
|
|
" Formatting helpers
|
|
Plug 'tpope/vim-commentary'
|
|
|
|
" Language specific
|
|
Plug 'neovim/nvim-lspconfig'
|
|
Plug 'fatih/vim-go'
|
|
Plug 'exu/pgsql.vim'
|
|
|
|
" Git helpers
|
|
Plug 'tpope/vim-fugitive'
|
|
|
|
call plug#end()
|
|
|
|
" Set the vertical split character
|
|
set fillchars+=vert:\|
|
|
|
|
set inccommand=split
|
|
|
|
" Prevent useless redraws
|
|
set lazyredraw
|
|
|
|
" Set colors
|
|
set termguicolors
|
|
set t_Co=256
|
|
colorscheme Tomorrow-Night
|
|
|
|
" Syntax
|
|
syntax on
|
|
set showmatch
|
|
|
|
" Set backspace to work everywhere
|
|
set backspace=start,eol,indent
|
|
|
|
set laststatus=1
|
|
|
|
" Show indents and trailing whitespace
|
|
set list listchars=trail:·,tab:»\ ,eol:¬
|
|
|
|
" Set indent settings
|
|
set tabstop=4 shiftwidth=4 noexpandtab
|
|
autocmd BufRead,BufNewFile *.py set tabstop=4 shiftwidth=4 noexpandtab
|
|
autocmd BufRead,BufNewFile *.yml set tabstop=2 shiftwidth=2 expandtab
|
|
autocmd BufRead,BufNewFile *.yaml set tabstop=2 shiftwidth=2 expandtab
|
|
autocmd BufRead,BufNewFile *.ts set tabstop=2 shiftwidth=2 expandtab
|
|
autocmd BufRead,BufNewFile *.vue set tabstop=2 shiftwidth=2 expandtab
|
|
|
|
" Disable auto newlines
|
|
set wrap
|
|
set textwidth=0
|
|
set wrapmargin=0
|
|
set formatoptions=l
|
|
|
|
" GUI options
|
|
set mouse=a
|
|
set clipboard=unnamedplus
|
|
|
|
" Line numbers
|
|
set number
|
|
set numberwidth=6
|
|
highlight LineNr ctermfg=darkgrey
|
|
set relativenumber
|
|
|
|
set ruler
|
|
|
|
set showtabline=1
|
|
|
|
set completeopt=menuone,noinsert
|
|
|
|
" Configure CtrlP
|
|
let g:ctrlp_working_path_mode = 'r'
|
|
|
|
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', 'find %s -type f']
|
|
|
|
let g:netrw_dirhistmax=0
|
|
let g:netrw_liststyle=3
|
|
|
|
set shortmess+=c
|
|
|
|
let g:cm_auto_popup = 0
|
|
let g:cm_sources_override = {
|
|
\ 'cm-tags': {'enable':0}
|
|
\ }
|
|
|
|
|
|
" echodoc
|
|
|
|
"let g:echodoc_enable_at_startup = 1
|
|
"set noshowmode
|
|
|
|
|
|
au FileType go nmap <F11> :GoAlternate<CR>
|
|
|
|
" Go
|
|
let g:go_fmt_command = "gofumpt"
|
|
let g:go_fmt_fail_silently = 1
|
|
|
|
let g:go_highlight_functions = 1
|
|
let g:go_highlight_methods = 1
|
|
let g:go_highlight_types = 1
|
|
let g:go_highlight_structs = 1
|
|
let g:go_highlight_interfaces = 1
|
|
let g:go_highlight_operators = 1
|
|
let g:go_highlight_build_constraints = 1
|
|
let g:go_highlight_generate_tags = 1
|
|
|
|
let g:go_metalinter_autosave = 0
|
|
|
|
let g:go_template_autocreate = 0
|
|
|
|
au BufNewFile,BufRead *.gohtml setf gohtmltmpl
|
|
au BufNewFile,BufRead *.tmpl setf gohtmltmpl
|
|
|
|
" Rust
|
|
autocmd BufRead,BufNewFile *.rs set tabstop=4 shiftwidth=4 expandtab
|
|
autocmd BufRead,BufNewFile *.wgsl set tabstop=4 shiftwidth=4 expandtab syntax=rust
|
|
|
|
" Set keybindings
|
|
nnoremap <silent> <Home> ^
|
|
vnoremap <silent> <Home> ^
|
|
inoremap <silent> <Home> <C-o>^
|
|
|
|
map <silent> <F5> :nohl<CR>
|
|
|
|
inoremap <C-Space> <C-x><C-o>
|
|
|
|
" Disable copying on delete
|
|
nnoremap d "_d
|
|
vnoremap d "_d
|
|
|
|
nnoremap D "_D
|
|
|
|
" Disable annoying typo bindings
|
|
map q: <nop>
|
|
map Q <nop>
|
|
|
|
" LSP
|
|
lua << EOF
|
|
vim.diagnostic.config({
|
|
virtual_text = false,
|
|
})
|
|
|
|
local on_attach = function(client, bufnr)
|
|
vim.opt.updatetime = 200
|
|
|
|
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
|
|
|
-- Show diagnostic popup on cursor hover
|
|
local diag_float_grp = vim.api.nvim_create_augroup("DiagnosticFloat", { clear = true })
|
|
vim.api.nvim_create_autocmd("CursorHold", {
|
|
callback = function()
|
|
vim.diagnostic.open_float(nil, { focusable = false })
|
|
end,
|
|
group = diag_float_grp,
|
|
})
|
|
|
|
local format_sync_grp = vim.api.nvim_create_augroup("Format", {})
|
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
|
pattern = "*.rs",
|
|
callback = function()
|
|
vim.lsp.buf.format({ timeout_ms = 200 })
|
|
end,
|
|
group = format_sync_grp,
|
|
})
|
|
end
|
|
require'lspconfig'.rust_analyzer.setup{
|
|
on_attach=on_attach,
|
|
settings = {
|
|
["rust-analyzer"] = {
|
|
checkOnSave = {
|
|
command = "clippy",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
require'lspconfig'.gopls.setup{
|
|
on_attach=on_attach,
|
|
}
|
|
EOF
|