diff --git a/vim/vimrc b/vim/vimrc index 2954850..03bf8e8 100644 --- a/vim/vimrc +++ b/vim/vimrc @@ -3,8 +3,9 @@ " \ V /| | | | | | | | | (__ " \_/ |_|_| |_| |_|_| \___| -"(((((((((((( general settings )))))))))))) -set nocompatible +"------------------------------------------------------------------------------ +"general settings +"------------------------------------------------------------------------------ "tab/indent set tabstop=4 @@ -70,20 +71,37 @@ set directory=~/.vim/.swap//,/tmp// "leader key let mapleader=',' -"(((((((((((( normal keybinds )))))))))))) +"------------------------------------------------------------------------------ +"normal mode keybinds +"------------------------------------------------------------------------------ + +"normal keybinds nnoremap :let @/ = "" nnoremap p :set invpaste nnoremap lb :call ToggleLineBreak() nnoremap wr :call ToggleWrap() nnoremap cc :call ToggleColorColumn() - nnoremap ts "=strftime("%F %T%z")p nnoremap =j :%!python -m json.tool -"(((((((((((( abbreviations )))))))))))) +"plugin keybinds +nnoremap e :call ToggleNetrw() +nnoremap at :ALEToggle +if !exists('##TextYankPost') + map y (highlightedyank) +endif + +"------------------------------------------------------------------------------ +"abbreviations +"------------------------------------------------------------------------------ + inoreabbrev #!! "#!/usr/bin/env" -"(((((((((((( commands )))))))))))) +"------------------------------------------------------------------------------ +"custom commands +"------------------------------------------------------------------------------ + +"common typos and abbreviations cnoremap w!! w !sudo tee % > /dev/null command! W w !sudo tee % > /dev/null command! Trim %s/\s\+$// @@ -91,191 +109,248 @@ command! Q q command! WQ wq command! Q1 q! -"(((((((((((( plugins )))))))))))) +"------------------------------------------------------------------------------ +"plugins (vim-plug) +"------------------------------------------------------------------------------ + +"ensure vim-plug is installed on VimEnter if empty(glob('~/.vim/autoload/plug.vim')) - silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs - \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim - autocmd VimEnter * PlugInstall --sync | source $MYVIMRC + silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs + \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif -"filetype may interfere with plugins +"filetype *may* interfere with certain plugins filetype off +"entry function call plug#begin('~/.vim/plugged') - "## vim plug ## - Plug 'junegunn/vim-plug' - "== general == - "## quality of life ## - Plug 'tpope/vim-surround' - Plug 'tpope/vim-commentary' - Plug 'tpope/vim-unimpaired' - Plug 'tpope/vim-rsi' - Plug 'tpope/vim-eunuch' - Plug 'tpope/vim-repeat' - "## git ## - Plug 'tpope/vim-fugitive' - Plug 'airblade/vim-gitgutter' - "## editorconfig ## - Plug 'editorconfig/editorconfig-vim' - "## colors, highlights and indents ## - Plug 'machakann/vim-highlightedyank' - "== language specific == + "## vim plug ## + Plug 'junegunn/vim-plug' + + "------------- + "== general == + "------------- + + "## quality of life ## + Plug 'tpope/vim-surround' + Plug 'tpope/vim-commentary' + Plug 'tpope/vim-unimpaired' + Plug 'tpope/vim-rsi' + Plug 'tpope/vim-eunuch' + Plug 'tpope/vim-repeat' + Plug 'editorconfig/editorconfig-vim' + + "## git ## + Plug 'tpope/vim-fugitive' + Plug 'airblade/vim-gitgutter' + + "## visual ## + Plug 'machakann/vim-highlightedyank' + + "----------------------- + "== language specific == + "----------------------- + "javascript/css/html - Plug 'pangloss/vim-javascript' - Plug 'mattn/emmet-vim' + Plug 'pangloss/vim-javascript' + Plug 'mattn/emmet-vim' + "go - Plug 'fatih/vim-go' - "## linting ## + Plug 'fatih/vim-go' + + "## linting ## Plug 'w0rp/ale' + call plug#end() -"(((((((((((( plugin keybinds )))))))))))) -nnoremap e :call ToggleNetrw() -nnoremap at :ALEToggle -if !exists('##TextYankPost') - map y (highlightedyank) -endif +"------------------------------------------------------------------------------ +"plugin settings +"------------------------------------------------------------------------------ -"(((((((((((( plugin settings )))))))))))) +" this function gets called with the VimEnter autocommand to set plugin +" options function! SetPluginSettings() - "netrw - let g:netrw_banner = 0 - let g:netrw_winsize = 24 - let g:netrw_liststyle = 3 - let g:netrw_preview = 1 - let g:netrw_alto = 0 - let g:netrw_usetab = 1 - "git gutter - augroup git_gutter - if exists(':GitGutter') - autocmd! - let g:gitgutter_map_keys = 0 "don't use mapped keys - autocmd BufWritePost * GitGutter "update GitGutter after writing - endif - augroup END - if exists(':ALEToggle') - let g:ale_fixers = { - \ '*': ['remove_trailing_lines', 'trim_whitespace'], - \ 'javascript': ['eslint'], - \} - let g:ale_sign_error = '->' - let g:ale_sign_warning = '--' - endif + + "netrw + let g:netrw_banner = 0 + let g:netrw_winsize = 24 + let g:netrw_liststyle = 3 + let g:netrw_preview = 1 + let g:netrw_alto = 0 + let g:netrw_usetab = 1 + let g:netrw_browsex_viewer = "xdg-open" + let g:NetrwIsOpen = 0 "for toggle function + + "git gutter + augroup git_gutter + if exists(':GitGutter') + autocmd! + let g:gitgutter_map_keys = 0 "don't use mapped keys + autocmd BufWritePost * GitGutter "update GitGutter after writing + endif + augroup END + + "ale + if exists(':ALEToggle') + let g:ale_fixers = { + \ '*': ['remove_trailing_lines', 'trim_whitespace'], + \ 'javascript': ['eslint'], + \} + let g:ale_sign_error = '->' + let g:ale_sign_warning = '--' + endif + endfunction -"(((((((((((( general use functions )))))))))))) +"------------------------------------------------------------------------------ +"general functions +"------------------------------------------------------------------------------ + +"---------------- +"toggle functions +"---------------- + function! ToggleColorColumn() - if &cc == '' - set cc=80 - else - set cc= - endif + if &cc == '' + set cc=80 + else + set cc= + endif endfunction function! ToggleLineBreak() - if &lbr == '' - set fo+=t "Autowraps text with textwidth - set fo-=l "Wraps long lines in --insert-- mode - set lbr - else - set fo-=t - set fo+=l - set lbr! - endif + if &lbr == '' + set fo+=t "Autowraps text with textwidth + set fo-=l "Wraps long lines in --insert-- mode + set lbr + else + set fo-=t + set fo+=l + set lbr! + endif endfunction function! ToggleWrap() - if &wrap == '' - set wrap - else - set nowrap - endif + if &wrap == '' + set wrap + else + set nowrap + endif endfunction -"make netrw toggleable -"https://vi.stackexchange.com/questions/10988/toggle-explorer-window -let g:NetrwIsOpen=0 -function! ToggleNetrw() - if g:NetrwIsOpen - let i = bufnr("$") - while (i >= 1) - if (getbufvar(i, "&filetype") == "netrw") - silent exe "bwipeout " . i - endif - let i-=1 - endwhile - let g:NetrwIsOpen=0 - else - let g:NetrwIsOpen=1 - silent Lexplore - endif +function! ToggleNetrw() "make netrw toggleable + "https://vi.stackexchange.com/questions/10988/toggle-explorer-window + if g:NetrwIsOpen + let i = bufnr("$") + while (i >= 1) + if (getbufvar(i, "&filetype") == "netrw") + silent exe "bwipeout " . i + endif + let i-=1 + endwhile + let g:NetrwIsOpen=0 + else + let g:NetrwIsOpen=1 + silent Lexplore + endif endfunction -"(((((((((((( enable syntax/filetype )))))))))))) +"---------------- +"search functions +"---------------- + +"------------------------------------------------------------------------------ +"syntax/filetype +"------------------------------------------------------------------------------ + syntax enable filetype plugin indent on runtime macros/matchit.vim -"(((((((((((( gui settings )))))))))))) +"------------------------------------------------------------------------------ +"gui settings +"------------------------------------------------------------------------------ + if has("gui_running") set guioptions -=m set guioptions -=T - if has("gui_gtk2") - set guifont=Inconsolata\ 12 - elseif has("gui_macvim") - set guifont=Menlo\ Regular:h14 - elseif has("gui_win32") - set guifont=Consolas:h10 - endif + if has("gui_gtk2") + set guifont=Inconsolata\ 12 + elseif has("gui_macvim") + set guifont=Menlo\ Regular:h14 + elseif has("gui_win32") + set guifont=Consolas:h10 + endif endif -"(((((((((((( win32 settings )))))))))))) +"------------------------------------------------------------------------------ +"win32 settings +"------------------------------------------------------------------------------ + if has('win32') endif -"(((((((((((( auto commands )))))))))))) +"------------------------------------------------------------------------------ +"auto commands +"------------------------------------------------------------------------------ + if has("autocmd") - "## global ## - augroup set_plugin_settings - autocmd! - autocmd VimEnter * call SetPluginSettings() - augroup END - augroup auto_resize_windows - autocmd! - autocmd VimResized * wincmd = - augroup END + "------------ + "## global ## + "------------ - "## save cursor position in a file ## - au BufReadPost * if line("'\"") > 1 && line("'\"") - \ <= line("$") | exe "normal! g'\"" | endif + "set plugin settings on VimEnter + augroup set_plugin_settings + autocmd! + autocmd VimEnter * call SetPluginSettings() + augroup END - "## language/filetype specific ## - augroup filetype_shell - autocmd! - autocmd BufNewFile,BufRead *bash* set syntax=sh - augroup END + "keep equal proportions when windows resized + augroup auto_resize_windows + autocmd! + autocmd VimResized * wincmd = + augroup END - augroup filetype_python - autocmd! - autocmd FileType python xnoremap r :'<,'>:w !python3 - augroup END + "save cursor position in a file + au BufReadPost * if line("'\"") > 1 && line("'\"") + \ <= line("$") | exe "normal! g'\"" | endif - augroup filetype_go - autocmd! - set expandtab! - augroup END + "-------------------------------- + "## language/filetype specific ## + "-------------------------------- - augroup filetype_html - autocmd! - autocmd FileType html :syntax sync fromstart - augroup END + "shell + augroup filetype_shell + autocmd! + autocmd BufNewFile,BufRead *bash* set syntax=sh + augroup END - augroup half_tab - autocmd! - autocmd FileType html,javascript,css,json,yaml,yml,sh - \ setlocal ts=2 sts=2 sw=2 expandtab - augroup END + "python + augroup filetype_python + autocmd! + autocmd FileType python xnoremap r :'<,'>:w !python3 + augroup END + + "go + augroup filetype_go + autocmd! + set expandtab! + augroup END + + "html + augroup filetype_html + autocmd! + autocmd FileType html :syntax sync fromstart + augroup END + + "where tabs should = 2 spaces + augroup half_tab + autocmd! + autocmd FileType html,javascript,css,json,yaml,yml,sh + \ setlocal ts=2 sts=2 sw=2 expandtab + augroup END endif