dotfiles/my_configs.vim

170 lines
5.2 KiB
VimL
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

colorscheme twilight256
" colorscheme solarized "fallback if twilight is not available
set mouse=a relativenumber number foldmethod=indent nofoldenable "without nofoldenable all folds are closed at startup"
set ttymouse=xterm2 " fix mouse when used in tmux/byobu https://unix.stackexchange.com/q/50733
set clipboard=unnamed " always use system clipboard
set splitbelow splitright
set autoread
set nowrap
set showtabline=2 laststatus=2 " fix statusline (FIX WHAT???)
" ALE configuration
let g:ale_fixers_aliases = {'vue': ['vue', 'javascript']}
let g:ale_fixers = {
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
\ 'bash': ['shfmt'],
\ 'json': ['prettier'],
\ 'css': ['prettier'],
\ 'markdown': ['prettier'],
\ 'yaml': ['prettier'],
\ 'python': ['black', 'isort'],
\ 'go': ['gofmt', 'goimports'],
\ 'rust': ['rustfmt'],
\ "javascript": ["prettier", "eslint"],
\ "vue": ["prettier", "eslint"]
\}
let g:ale_python_bandit_options = "-c banditrc"
let g:ale_python_isort_options = "--rc"
let g:ale_linter_aliases = {'vue': ['vue', 'javascript']}
let g:ale_linters = {
\ 'bash': ['bashlint', "shellcheck"],
\ 'go': ['golangci-lint'],
\ 'python': ['pyls', 'pylint', 'mypy', 'bandit'],
\ 'rust': ['rustc'],
\ 'yaml': ['yamllint'],
\ 'javascript': ["yarn lint", "eslint", "vls"]
\}
let g:ale_lint_on_insert_leave = 1
let g:ale_fix_on_insert_leave = 1
let g:ale_lint_on_text_changed = 1
let g:ack_default_options = " --cc --cpp --shell --python --html --js --vue"
let g:ale_set_quickfix=1
let g:ale_set_loclist=0
" let g:ale_lint_on_save = 1
let g:ale_fix_on_save = 1
" let g:ale_lint_on_insert_leave = 1
let g:ale_lint_on_text_changed = 1
let g:ale_completion_enabled = 1
packadd termdebug
" Fix some gitgutter stuff
let g:gitgutter_enabled = 1
let g:gitgutter_override_sign_column_highlight = 0
highlight clear SignColumn
highlight GitGutterAdd ctermfg=2
highlight GitGutterChange ctermfg=3
highlight GitGutterDelete ctermfg=1
highlight GitGutterChangeDelete ctermfg=4
" Highlight all instances of word under cursor, when idle.
" Useful when studying strange source code.
" Type z/ to toggle highlighting on/off.
nnoremap z/ :if AutoHighlightToggle()<Bar>set hls<Bar>endif<CR>
function! AutoHighlightToggle()
let @/ = ''
if exists('#auto_highlight')
au! auto_highlight
augroup! auto_highlight
setl updatetime=4000
echo 'Highlight current word: off'
return 0
else
augroup auto_highlight
au!
au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>'
augroup end
setl updatetime=500
echo 'Highlight current word: ON'
return 1
endif
endfunction
" A friggin python breakpoint. Invoke with @b
let @b = 'A
breakpoint()<1B><>ajkj0'
let g:ctrlp_custom_ignore = {
\ 'dir': '\v(target|build|dist)$',
\ }
" \ 'file': '\v\.(exe|so|dll)$',
" \ 'link': 'some_bad_symbolic_links',
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files -co --exclude-standard']
nnoremap <leader>mk :bel copen<bar>silent (cargo run) !<bar>redraw!<cr>
autocmd FileType yaml setlocal shiftwidth=2 softtabstop=2 expandtab
autocmd FileType yml setlocal shiftwidth=2 softtabstop=2 expandtab
function! GitStatus()
let [a,m,r] = GitGutterGetHunkSummary()
return printf('+%d ~%d -%d', a, m, r)
endfunction
set statusline+=%{GitStatus()}
" Improve vimdiff colors
highlight DiffAdd cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffDelete cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffChange cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffText cterm=bold ctermfg=10 ctermbg=88 gui=none guifg=bg guibg=Red
function! WinZoomToggle() abort
if ! exists('w:WinZoomIsZoomed')
let w:WinZoomIsZoomed = 0
endif
if w:WinZoomIsZoomed == 0
let w:WinZoomOldWidth = winwidth(0)
let w:WinZoomOldHeight = winheight(0)
wincmd _
wincmd |
let w:WinZoomIsZoomed = 1
elseif w:WinZoomIsZoomed == 1
execute "resize " . w:WinZoomOldHeight
execute "vertical resize " . w:WinZoomOldWidth
let w:WinZoomIsZoomed = 0
endif
endfunction
nnoremap <leader>wz :call WinZoomToggle()<CR>
nnoremap <leader>/ :G<CR>
nnoremap <leader>C :close<CR>
nnoremap <leader>B :Bclose<CR>
nnoremap <leader>G :Git
nnoremap <leader>P :GPush<CR>
nnoremap <leader>M :Git commit<CR>
nnoremap <leader>u :GitGutterBufferToggle<CR>
nnoremap <leader>L :GitGutterLineHighlightsToggle<CR>
" OR map keys to use wrapping.
nmap <silent> <C-k> <Plug>(ale_previous_wrap)
nmap <silent> <C-j> <Plug>(ale_next_wrap)
" this is assigned to jedi#goto_stubs()
" nunmap <leader>s
" nnoremap <leader>sv :ALEGoToTypeDefinitionInVSplit<CR>
" nnoremap <leader>sh :ALEGoToTypeDefinitionInSplit<CR>
" nnoremap <leader>st :ALEGoToTypeDefinitionInTab<CR>
" nnoremap <leader> :ALEGoToTypeDefinition<CR>
nmap <leader>sv :ALEGoToDefinitionInVSplit<CR>
nmap <leader>sh :ALEGoToDefinitionInSplit<CR>
nmap <leader>st :ALEGoToDefinitionInTab<CR>
nmap <leader>A :ALEGoToDefinition<CR>
nmap <leader>n :ALEFindReferences<CR>
nmap <leader>r :ALERename<CR>
" Add shortcuts to yank/paste to unnamed/unnamedplus clipboards
noremap <Leader>y "*y
noremap <Leader>p "*p
noremap <Leader>Y "+y
noremap <Leader>P "+p