dotfiles/.config/nvim/init.vim

297 lines
5.4 KiB
VimL
Raw Normal View History

2020-02-24 19:09:16 -07:00
scriptencoding utf-8
2017-02-22 21:49:21 -07:00
" vim-plug---START
call plug#begin('~/.config/nvim/plugged')
2020-02-24 19:09:16 -07:00
2017-02-22 21:49:21 -07:00
" Plugins
Plug 'airblade/vim-gitgutter'
2019-01-30 11:30:13 -07:00
Plug 'cespare/vim-toml'
2020-02-02 12:12:50 -07:00
Plug 'vim-scripts/nginx.vim'
2019-10-04 08:44:36 -07:00
Plug 'elixir-lang/vim-elixir'
2018-03-11 00:22:12 -07:00
Plug 'fatih/vim-go'
Plug 'gabesoft/vim-ags'
2021-06-15 07:34:48 -07:00
Plug 'google/protobuf'
2019-01-30 11:30:13 -07:00
Plug 'hashivim/vim-terraform'
2021-08-05 12:42:06 -07:00
Plug 'hrsh7th/nvim-compe'
Plug 'junegunn/fzf'
2017-06-22 13:24:12 -07:00
Plug 'kchmck/vim-coffee-script'
Plug 'lifepillar/vim-solarized8'
2017-02-22 21:49:21 -07:00
Plug 'majutsushi/tagbar'
2021-08-05 12:42:06 -07:00
Plug 'neovim/nvim-lspconfig'
2017-08-23 08:13:13 -07:00
Plug 'posva/vim-vue'
2017-02-27 10:16:29 -07:00
Plug 'scrooloose/nerdcommenter'
2017-02-22 21:49:21 -07:00
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-rails'
Plug 'tpope/vim-surround'
call plug#end()
" vim-plug---END
2018-11-27 09:17:01 -07:00
2017-05-05 09:53:15 -07:00
" Solarized
2017-02-22 21:49:21 -07:00
syntax enable
set termguicolors
colorscheme solarized8
2017-09-08 08:47:42 -07:00
set cursorline
set colorcolumn=80,100
2017-05-05 09:53:15 -07:00
function ToggleBackground(current)
2020-02-24 19:09:16 -07:00
if a:current ==# 'dark'
set background=light
hi Whitespace ctermfg=7 guifg=#eee8d5
2017-05-05 09:55:57 -07:00
else
set background=dark
hi Whitespace ctermfg=0 guifg=#073642
2017-05-05 09:55:57 -07:00
end
endfunction
2020-02-24 19:09:16 -07:00
call ToggleBackground('light')
nmap <F5> :call ToggleBackground(&background)<CR>
2017-05-05 09:55:57 -07:00
2018-07-26 22:04:05 -07:00
set spell
2017-05-05 09:53:15 -07:00
set number
2017-02-22 21:49:21 -07:00
set nowrap
filetype plugin indent on
2017-07-27 08:38:36 -07:00
set mouse=a
2017-02-22 21:49:21 -07:00
set list
2017-05-17 08:23:56 -07:00
set listchars=tab:――,space,trail
2017-02-22 21:49:21 -07:00
2020-02-24 19:09:16 -07:00
let g:NoClean = ['diff']
augroup indentation
autocmd BufRead,BufNewFile
\ Makefile,
\*.c,
\*.cpp,
\*.go
\ set tabstop=8 shiftwidth=8 noexpandtab
autocmd BufRead,BufNewFile
\ *.cs,
\*.java
\ set tabstop=4 shiftwidth=4 expandtab
autocmd BufRead,BufNewFile
\ *.rb,
\*.css,
\*.js,
\*.jsx,
\*.coffee,
\*.erb,
\*.html,
\*.html.tmpl,
\*.json,
\*.tf,
\*.tfvars,
\*.vue,
\*.yml,
\*.yaml
\ set tabstop=2 shiftwidth=2 expandtab
2018-11-27 09:17:01 -07:00
2017-05-17 08:23:12 -07:00
autocmd FileType crontab set backupcopy=yes
2017-02-22 21:49:21 -07:00
2020-02-24 19:09:16 -07:00
augroup END
" vint: -ProhibitCommandRelyOnUser -ProhibitCommandWithUnintendedSideEffect
2017-02-22 21:49:21 -07:00
function TrimTrailingInvisibles()
let view = winsaveview()
%s/\s\+$//e
call winrestview(view)
endfunction
function TrimTrailingLines()
let view = winsaveview()
%s/\n\+\%$//e
call winrestview(view)
endfunction
2020-02-24 19:09:16 -07:00
" vint: +ProhibitCommandRelyOnUser +ProhibitCommandWithUnintendedSideEffect
2018-12-13 08:22:59 -07:00
function OnWrite()
if Writeable()
call CleanFile()
endif
endfunction
function OnLeave()
if Writeable()
call CleanFile()
write
GitGutter
endif
endfunction
function CleanFile()
call TrimTrailingInvisibles() | call TrimTrailingLines()
endfunction
function Writeable()
2020-02-24 19:09:16 -07:00
return empty(&buftype)
\ && index(g:NoClean, &filetype) == -1
2018-12-13 08:22:59 -07:00
\ && !&readonly
\ && &modifiable
\ && &modified
2020-02-24 19:09:16 -07:00
\ && !empty(expand('%:t'))
2018-12-13 08:22:59 -07:00
endfunction
2017-02-22 21:49:21 -07:00
augroup maximus
2018-12-13 08:22:59 -07:00
autocmd BufWrite * call OnWrite()
autocmd BufLeave * call OnLeave()
2017-02-22 21:49:21 -07:00
augroup END
set statusline=%f
set statusline+=\ %y
set statusline+=[%{&ff}]
set statusline+=%r
set statusline+=%h
set statusline+=%{ModifiedSym()}
set statusline+=%=
set statusline+=%{AddGitGutterToStatusline()}
set statusline+=\ [%c:%l/%L:%p%%]
function ModifiedSym()
if &modified
return "[\u270f]"
else
2020-02-24 19:09:16 -07:00
return ''
2017-02-22 21:49:21 -07:00
end
endfunction
function AddGitGutterToStatusline()
2020-02-24 19:09:16 -07:00
if empty(&buftype) && exists('b:gitgutter_summary')
return join(['[Git:', join(b:gitgutter_summary, ','), ']'], '')
2017-02-22 21:49:21 -07:00
else
2020-02-24 19:09:16 -07:00
return ''
2017-02-22 21:49:21 -07:00
endif
endfunction
" Shortcuts
2017-05-22 14:18:38 -07:00
" Plugins
2018-12-13 08:40:13 -07:00
nnoremap <C-\> :NERDTreeToggle<CR>
nnoremap <leader>. :TagbarToggle<CR>
2017-02-22 21:49:21 -07:00
2017-05-22 14:18:38 -07:00
" Tabs
2018-12-13 08:40:13 -07:00
nnoremap <leader>tt :tabnew<CR>
nnoremap <leader>tn :tabnext<CR>
nnoremap <leader>tp :tabprevious<CR>
nnoremap <leader>tc :tabclose<CR>
nnoremap <leader>tm :tabmove<CR>
2017-05-22 14:18:38 -07:00
2017-06-22 13:24:26 -07:00
" Misc
2018-12-13 08:40:13 -07:00
nnoremap <leader>h :noh<CR>
nnoremap <C-]> :exec "tjump ".expand("<cword>")<CR>
2018-12-12 16:07:51 -07:00
nnoremap <leader><space> :call Fullscreen()<CR>
function Fullscreen()
let view = winsaveview()
let buf = winbufnr(0)
let found = 0
for b in win_findbuf(buf)
let tabwin = win_id2tabwin(b)
2020-02-24 19:09:16 -07:00
if gettabwinvar(tabwin[0], tabwin[1], 'fullscreen_buf') == buf
2018-12-12 16:07:51 -07:00
let found = 1
let existing_tab = tabwin[0]
let existing_win = tabwin[1]
endif
endfor
if found == 1
if existing_tab == tabpagenr()
tabclose
else
2020-02-24 19:09:16 -07:00
exec 'tabnext'.existing_tab
2018-12-12 16:07:51 -07:00
endif
else
2020-02-24 19:09:16 -07:00
exec 'tabnew +buffer'.buf
2018-12-12 16:07:51 -07:00
let w:fullscreen_buf = buf
end
call winrestview(view)
endfunction
2017-06-22 13:24:26 -07:00
2017-02-22 21:49:21 -07:00
" Plugin configuration
" The Silver Searcher
2018-12-13 08:40:13 -07:00
nnoremap <leader>s :Ags<space>
" FZF
2018-12-13 08:40:13 -07:00
nnoremap <C-p> :FZF!<CR>
2017-05-01 14:52:00 -07:00
2017-02-27 10:16:29 -07:00
" NERD Commenter
let g:NERDSpaceDelims = 1
2018-08-07 08:55:36 -07:00
" NERD Tree
let g:NERDTreeShowHidden = 1
2017-12-21 19:16:38 -07:00
" Tagbar
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
2021-08-05 12:42:06 -07:00
lua <<EOF
vim.o.completeopt = "menuone,noselect"
require'compe'.setup {
enabled = true;
autocomplete = true;
debug = false;
min_length = 1;
preselect = 'enable';
throttle_time = 80;
source_timeout = 200;
resolve_timeout = 800;
incomplete_delay = 400;
max_abbr_width = 100;
max_kind_width = 100;
max_menu_width = 100;
documentation = true;
source = {
path = true;
buffer = true;
calc = true;
nvim_lsp = true;
nvim_lua = true;
vsnip = true;
luasnip = true;
};
};
2021-08-06 06:21:58 -07:00
require'lspconfig'.gopls.setup{}
2021-08-05 12:42:06 -07:00
require'lspconfig'.solargraph.setup{
bundlerPath = 'bin/bundle';
useBundler = true;
}
2021-08-10 06:19:35 -07:00
require'lspconfig'.rust_analyzer.setup{}
2021-08-05 12:42:06 -07:00
EOF