dotfiles/vim/.vimrc

260 lines
7.8 KiB
VimL

set nocompatible
set backspace=start,eol,indent
set hidden
set hlsearch
syntax on
filetype plugin on
set tabstop=4 shiftwidth=4 autoindent smartindent expandtab
set mouse=v
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Numbering of lines
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" set relativenumber
set number
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Runtimepath variables
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" call -> set rtp? show the runtime path
let $RTP=split(&runtimepath, ',')[0]
let $RC="$HOME/.vimrc"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Move Swap,Backup and undo files into .vim directory
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set directory^=$HOME/.vim/.swap//
set backupdir^=$HOME/.vim/.backup//
set undodir^=$HOME/.vim/.undo//
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Split to the right and below
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set splitbelow
set splitright
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Folding
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set foldenable foldlevelstart=20 foldmethod=indent
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Rebind shortcut to switch splits
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nmap <C-h> <C-w>h
nmap <C-j> <C-w>j
nmap <C-k> <C-w>k
nmap <C-l> <C-w>l
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Finding files
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set path+=**
set wildmenu
set wildmode=longest:full,full
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Create Tags thorugh :MakeTags
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
command! MakeTags !ctags -R .
set autochdir
set tags=tags;
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Execute Python Scripts
" Press F9 to run Python script
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
autocmd FileType python map <buffer> <F9> :w<CR>:exec '!python3' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F9> <esc>:w<CR>:exec '!python3' shellescape(@%, 1)<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" File browsing through a tree on the left side
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:netrw_banner=0
let g:netrw_browse_split=4
let g:netrw_altv=1
let g:netrw_liststyle=3
let g:netrw_list_hide=netrw_gitignore#Hide()
let g:netrw_list_hide.=',\(\^\|\s\s\)\zs\.\S\+'
map <C-n> :Lex <bar> vertical resize 30 <CR>
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Cursorline on the cursor
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set cursorline
hi CursorLine cterm=NONE ctermbg=darkgrey ctermfg=white
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Status Line on the bottom
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Statusline
" function! gitbranch()
" return system("git rev-parse --abbrev-ref head 2>/dev/null | tr -d '\n'")
" endfunction
"
" function! statuslinegit()
" let l:branchname = gitbranch()
" return strlen(l:branchname) > 0?' '.l:branchname.' ':''
" endfunction
function! UpdateGitBranch()
let l:branchname = system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
let b:branchstatus = strlen(l:branchname) > 0? ' '.l:branchname.' ':''
endfunction
augroup UPDATE_GITBRANCH
" clear previous commands
autocmd!
" Update git branch
autocmd BufWritePre * :call UpdateGitBranch()
autocmd BufReadPost * :call UpdateGitBranch()
autocmd BufEnter * :call UpdateGitBranch()
augroup end
set laststatus=2
set statusline=
set statusline+=%#PmenuSel#
" set statusline+=%{StatuslineGit()}
set statusline+=%{b:branchstatus}
set statusline+=%#BufTabLineCurrent#
set statusline+=\ %M
set statusline+=\ %r
set statusline+=\ %F
set statusline+=%= "Right side settings
set statusline+=\ %y
set statusline+=%#CursorColumn#
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
set statusline+=\[%{&fileformat}\]
set statusline+=\ %c:%l/%L
set statusline+=\ %p%%
set statusline+=\ [%n]
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Colors
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set termguicolors
" colorscheme gruvbox
colorscheme catppuccin_macchiato
set bg=dark
" tmux color correction
if exists('+termguicolors')
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
set termguicolors
endif
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" tagbar, press F8
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nmap <F8> :TagbarToggle<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Selection Highlighting
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" hlsearch colors
highlight Search ctermbg=black ctermfg=darkgrey ctermbg=grey
" Highlight all instances of word under cursor, when idle.
function! AutoHighlightToggle()
let @/ = ''
augroup auto_highlight
au!
au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>'
augroup end
setl updatetime=500
endfunction
call AutoHighlightToggle()
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Code Completion
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:ale_enabled = 1
let g:ale_hover_enabled = 1
" nmap gr :ALEFindReferences<CR>
" nmap K :ALEHover<CR>
set completeopt+=menuone
set completeopt+=noselect
set completeopt+=noinsert
set shortmess+=c " Shut off completion messages
set belloff+=ctrlg " Add only if Vim beeps during completion
let g:mucomplete#enable_auto_at_startup = 1
let g:mucomplete#completion_delay = 1
set omnifunc=syntaxcomplete#Complete
" set omnifunc=ale#completion#Complete
"set omnifunc=ale#completion#OmniFunc
"let g:ale_completion_enabled=1
"function! OpenCompletion()
" if !pumvisible() && ((v:char >= 'a' && v:char <= 'z') || (v:char >= 'A' && v:char <= 'Z'))
" call feedkeys("\<C-x>\<C-o>", "n")
" endif
"endfunction
"
"autocmd InsertCharPre * call OpenCompletion()
let g:ale_set_balloons=1
"
"set completeopt+=longest,menu,menuone,preview,noselect,noinsert
"" set completeopt+=menuone,noselect,noinsert
""
autocmd InsertLeave,CompleteDone * if pumvisible() == 0 | pclose | endif
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Remove conceal from Markdown when Insert mode is set
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
autocmd InsertEnter *.{markdown,md} set conceallevel=0
autocmd InsertLeave *.{markdown,md} set conceallevel=2
autocmd InsertEnter *.{json} set conceallevel=0
autocmd InsertLeave *.{json} set conceallevel=2
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
" Load all packages and activate tags
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
packadd! vim-polyglot
packadd! vim-log-highlighting
packloadall
" Load all of the helptags now, after plugins have been loaded.
" All messages and errors will be ignored.
silent! helptags ALL
silent! helptags ALE
silent! helptags vim-gitgutter/doc