From b627c4d0dd0a667dabc821cdb71ef17696c09864 Mon Sep 17 00:00:00 2001 From: James Dixon Date: Thu, 28 May 2020 20:23:55 -0400 Subject: [PATCH] reorganize, remove plugins, add colors --- vim/vimrc | 398 +++++++++++++++++++++++------------------------------- 1 file changed, 168 insertions(+), 230 deletions(-) diff --git a/vim/vimrc b/vim/vimrc index 80e3aa9..0ba19a8 100644 --- a/vim/vimrc +++ b/vim/vimrc @@ -3,25 +3,98 @@ " \ V /| | | | | | | | | (__ " \_/ |_|_| |_| |_|_| \___| -"------------------------------------------------------------------------------ -"general settings -"------------------------------------------------------------------------------ - -"load defaults if available +"sources defaults if available if filereadable(expand('$VIMRUNTIME/defaults.vim')) - unlet! g:skip_defaults_vim - source $VIMRUNTIME/defaults.vim + unlet! g:skip_defaults_vim + source $VIMRUNTIME/defaults.vim endif +"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 +endif + +"filetype *may* interfere with certain plugins +filetype off + +call plug#begin('~/.vim/plugged') + 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' + "visual + Plug 'flazz/vim-colorschemes' + "linting + Plug 'w0rp/ale' + + "language/ft specific + "-------------------- + "javascript/css/html + Plug 'pangloss/vim-javascript' + Plug 'mattn/emmet-vim' + "go + Plug 'fatih/vim-go' +call plug#end() + +"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 + let g:NetrwIsOpen = 0 "for toggle function + + "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 + + "colors + "set background=dark + + "colorscheme 1989 + "colorscheme PaperColor + "colorscheme dracula + "colorscheme gruvbox + colorscheme jellybeans + "colorscheme molokai + "colorscheme badwolf +endfunction + +"general settings +"---------------- "encoding/format set encoding=utf-8 set fileformats=unix,dos,mac - "file/buffer set autoread set autowrite set confirm - "display set background=dark set number @@ -32,88 +105,71 @@ set foldmethod=marker set lazyredraw set regexpengine=1 set redrawtime=10000 - "tab/indent set tabstop=4 set softtabstop=4 set shiftwidth=4 set expandtab set autoindent - "status bar set showcmd set wildmenu set ruler set laststatus=2 - "search set incsearch set hlsearch set ignorecase set smartcase - "cursor behaviour set virtualedit=block set backspace=indent,eol,start set showmatch set scrolloff=2 set sidescrolloff=8 - "input/timeout set esckeys set timeoutlen=1000 "for mappings set ttimeoutlen=20 "for keycodes - "window behaviour (ltr) set splitbelow set splitright - "undo/bkup dirs set undofile set undodir=~/.vim/.undo//,/tmp// set backupdir=~/.vim/.backup//,/tmp// set directory=~/.vim/.swap//,/tmp// - "leader key let mapleader=' ' -"------------------------------------------------------------------------------ "normal/visual mode keybinds -"------------------------------------------------------------------------------ - -"normal keybinds +"--------------------------- +"paste and search nnoremap :let @/ = "" nnoremap p :set invpaste - +"toggles nnoremap lb :call ToggleLineBreak() nnoremap wr :call ToggleWrap() nnoremap cc :call ToggleColorColumn() - +"dates nnoremap ts "=strftime("%F %T%z") nnoremap dt :r !date - +"rc files nnoremap rc :vsplit $MYVIMRC nnoremap so :source $MYVIMRC - +"formatting tools nnoremap =j :%!python -m json.tool "plugin keybinds nnoremap e :call ToggleNetrw() nnoremap at :ALEToggle -if !exists('##TextYankPost') - map y (highlightedyank) -endif - -"------------------------------------------------------------------------------ -"insert mode keybinds and abbreviations -"------------------------------------------------------------------------------ +"insert mode keybinds/abbreviations +"-------------------- inoreabbrev #!! "#!/usr/bin/env" -"------------------------------------------------------------------------------ "custom commands -"------------------------------------------------------------------------------ - +"--------------- "common typos and abbreviations cnoremap w!! w !sudo tee % > /dev/null command! W w !sudo tee % > /dev/null @@ -125,233 +181,115 @@ command! Q1 q! "function calls command! -nargs=+ SearchGoogle call SearchGoogle(join([])) - -"------------------------------------------------------------------------------ -"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 -endif - -"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' - 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' - - "go - Plug 'fatih/vim-go' - - "## linting ## - Plug 'w0rp/ale' - -call plug#end() - -"------------------------------------------------------------------------------ -"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 - 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 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 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 + "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 -"---------------- "search functions -"---------------- - function! SearchGoogle(string) - let l:google = "https://www.google.com/search?q=" - let l:browser = "xdg-open >/dev/null 2>/dev/null" - let l:query = substitute(join(split(a:string),"+"),'"',"","g") - execute "!" l:browser . "\ " . l:google . l:query + let l:google = "https://www.google.com/search?q=" + let l:browser = "xdg-open >/dev/null 2>/dev/null" + let l:query = substitute(join(split(a:string),"+"),'"',"","g") + execute "!" l:browser . "\ " . l:google . l:query endfunction -"------------------------------------------------------------------------------ "syntax/filetype -"------------------------------------------------------------------------------ - +"--------------- syntax enable filetype plugin indent on runtime macros/matchit.vim -"------------------------------------------------------------------------------ "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 + 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 endif -"------------------------------------------------------------------------------ "win32 settings -"------------------------------------------------------------------------------ - +"-------------- if has('win32') endif -"------------------------------------------------------------------------------ "auto commands -"------------------------------------------------------------------------------ - +"------------- if has("autocmd") + "global + augroup global + autocmd! + "set plugin settings on VimEnter + autocmd VimEnter * call SetPluginSettings() + "keep equal proportions when windows resized + autocmd VimResized * wincmd = + "save cursor position in a file + autocmd BufReadPost * if line("'\"") > 1 && line("'\"") + \ <= line("$") | exe "normal! g'\"" | endif + augroup END - "------------ - "## global ## - "------------ - augroup general - autocmd! - "set plugin settings on VimEnter - autocmd VimEnter * call SetPluginSettings() - "keep equal proportions when windows resized - autocmd VimResized * wincmd = - "save cursor position in a file - autocmd BufReadPost * if line("'\"") > 1 && line("'\"") - \ <= line("$") | exe "normal! g'\"" | endif - augroup END - - "-------------------------------- - "## language/filetype specific ## - "-------------------------------- - augroup languages - autocmd! - "shell - autocmd BufNewFile,BufRead *bash* set syntax=sh - "python - autocmd FileType python xnoremap r :'<,'>:w !python3 - "go - autocmd FileType go set expandtab! "go uses real tabs - "html - autocmd FileType html :syntax sync fromstart - "filestypes where tabs should = 2 spaces - autocmd FileType html,javascript,css,json,yaml,sh - \ setlocal ts=2 sts=2 sw=2 expandtab - augroup END - + "language/filetype + augroup languages + autocmd! + "shell + autocmd BufNewFile,BufRead *bash* set syntax=sh + "python + autocmd FileType python xnoremap r :'<,'>:w !python3 + "go + autocmd FileType go set expandtab! "go uses real tabs + "html + autocmd FileType html :syntax sync fromstart + "filestypes where tabs should = 2 spaces + autocmd FileType html,javascript,css,json,yaml,sh + \ setlocal ts=2 sts=2 sw=2 expandtab + augroup END endif