" vim-plug {{{ " Automatic installation 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 call plug#begin('~/.vim/plugins') Plug 'junegunn/vim-easy-align' Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin --all' } Plug 'tpope/vim-surround' Plug 'tpope/vim-commentary' Plug 'w0rp/ale' Plug 'airblade/vim-gitgutter' Plug 'itchyny/lightline.vim' Plug 'tpope/vim-repeat' Plug 'haya14busa/incsearch.vim' Plug 'gorodinskiy/vim-coloresque' Plug 'sheerun/vim-polyglot' Plug 'nvie/vim-flake8' Plug 'KKPMW/sacredforest-vim' Plug 'wolf-dog/lightline-sceaduhelm.vim' " Plug 'unblevable/quick-scope' Plug 'tpope/vim-fugitive' " Plug 'l04m33/vlime', {'rtp': 'vim/'} " Plug 'kovisoft/paredit' Plug 'sainnhe/vim-color-forest-night' Plug 'justinmk/vim-sneak' Plug 'christoomey/vim-tmux-navigator' Plug 'ap/vim-css-color' Plug 'dylanaraps/wal.vim' Plug 'sjl/tslime.vim' " TODO setup Plug 'roxma/vim-tmux-clipboard' " TODO setup Plug 'melonmanchan/vim-tmux-resizer' " Plug 'roman/golden-ratio' Plug 'kovisoft/slimv' " Todo: " GV " Gundo (or undotree?) " Emmett " Fugitive " Vimwiki " Plug 'ryanss/vim-hackernews' " Plug 'mbbill/undotree' or Plug 'sjl/gundo.vim' " Plug 'tpope/vim-projectionist' " Plug 'mileszs/ack.vim' " Plug 'vim-pandoc/vim-pandoc' " Plug 'alfredodeza/pytest.vim' " Plug 'docker/docker' " Plug vim-scripts/indentpython.vim " call plug#end() "}}} " appearance {{{ colorscheme zenburn " colorscheme wal syntax on " Enable syntax set encoding=utf-8 " Keep utf-8 encoding set scrolloff=2 " Keep at least 3 lines above and below cursor set showmode " Something something buffers set showcmd " Show command in bottom bar set wildmenu " Visual autocomplete for command menu set wildmode=list:longest " Show all completions on tab set laststatus=2 " Last window will always have statusline set showmatch " Highlight matching [{()}] set cursorline " Highlight current line " remove underline on current line number hi CursorLineNr cterm=bold " Lightline let g:lightline = { 'colorscheme': 'sceaduhelm', } set fillchars+=vert:│ " }}} " Movement {{{ " TODO: map alt-j and k to move text lines vertically, maintaining indent " }}} " Folding {{{ set foldenable " Enable folding set foldmethod=marker " Fold sections by marker set foldlevel=0 " Fold by default set modelines=1 " Check final line of file for modeline " }}} " behavior {{{ set nocompatible " Turn off vi compatability nonsense set hidden " Hide buffer when opening new file set visualbell " Use visual bell instead of beeping set ttyfast " Improves smoothness and drawing set backspace=indent,eol,start " Always allow backspacing set undofile " Make .un file for persistent undo set relativenumber " Make numbers relative to current line set lazyredraw " Redraw only when necessary set updatetime=100 " Make updates happen faster (gitgutter) set splitright " Make split to right by default set winheight=30 " Soft minimum window height (active) set winminheight=10 " Hard minimum window height (inactive) set winwidth=80 " Window width for current window set winminwidth=30 " Hard minimum for window width set timeoutlen=1000 set ttimeoutlen=0 "}}} " searching {{{ set gdefault " Remove default g flag on search set ignorecase " Ignore case for searches set smartcase " Case-specific only when uppercase set hlsearch " Don't continue to highlight searched phrases. set incsearch " But do search as characters are entered " Remap tab to jump by brackets " Nnoremap % " Vnoremap % " Remap tab to jump by window nnoremap w vnoremap w "}}} " tab settings {{{ set tabstop=4 " Number of visual spaces per tab set softtabstop=4 " Should always = tabstop set shiftwidth=4 " Indent/outdent by 4 columns set expandtab " Tabs are spaces set shiftround " Always indent/outdent to the nearest tabstop " Make search terms more visible highlight Visual ctermbg=DarkGreen ctermfg=Black set autoindent " Auto indentation "}}} " ruler settings {{{ set rulerformat=%l,%-2v\|%4L\ Lines " Display line, column, and total lines set ruler " Turn on ruler "}}} " long line handling {{{ set textwidth=79 set fo=t " set colorcolumn=85 " "}}} " leaders {{{ :let mapleader = "," " Clear search highlighting with leader-space nnoremap :noh " Underline with line of the same length nnoremap - yypv$r- " Insert date on current line nnoremap d k :r !date nnoremap k :vert new ~/.vim/bindings.md "}}} " invisible characters {{{ set list set listchars=tab:▸\ ,eol:¬ "}}} " hjkl {{{ " Disable arrow keys in normal and visual mode nnoremap nnoremap nnoremap nnoremap inoremap inoremap inoremap inoremap " Disable h and l " nnoremap h " nnoremap l " Make j and k move by screen line, not file line nnoremap j gj nnoremap k gk "}}} " " slimv{{{ let g:slimv_repl_split=2 let g:slimv_repl_split_size=10 " "}}} " split pane navigation {{{ " Map vertical split to \ w, switch to it, open explorer, prompt for filename " TODO: make new window prompt use fzf nnoremap w vl:e open " Switch panes wit ctrl + h/j/k/l nnoremap h nnoremap j nnoremap k nnoremap l nnoremap :close nnoremap :bn " Map resize pane " TODO: remap pane resize to something else (leader?) map + :vertical resize +5 map - :vertical resize -5 " quick-scope " Trigger a highlight in the appropriate direction when pressing these keys: let g:qs_highlight_on_keys = ['f', 'F', 't', 'T'] augroup qs_colors autocmd! autocmd ColorScheme * highlight QuickScopePrimary guifg='#afff5f' gui=underline ctermfg=155 cterm=underline autocmd ColorScheme * highlight QuickScopeSecondary guifg='#5fffff' gui=underline ctermfg=81 cterm=underline augroup END "}}} " launch love game, check youtube love2d roguelike+rpg day 1 if broken {{{ " map ,t :! /Applications/love.app/Contents/MacOS/love . "}}} " file specific {{{ " In markdown files, when writing add two spaces to each line to fix spacing " In compiled version " au BufWritePost *.md silent! %s/[^ ]\zs$/\1 / " TODO: find a better solution " Bold something in a markdown file " :au FileType markdown nmap b i**ea**b " Python " au BufNewFile,BufRead *.py "\ set tabstop=4 "\ set softtabstop=4 "\ set shiftwidth=4 "\ set textwidth=79 "\ set expandtab "\ set autoindent "\ set fileformat=unix "" Webdev " au BufNewFile,BufRead *.js, *.html, *.css "\ set tabstop=2 "\ set softtabstop=2 "\ set shiftwidth=2 "}}} " plugin modification {{{ " FZF map :FZF " This is the default extra key bindings let g:fzf_action = { \ 'ctrl-t': 'tab split', \ 'ctrl-x': 'split', \ 'ctrl-v': 'vsplit' } " Default fzf layout " - down / up / left / right let g:fzf_layout = { 'down': '~30%' } " Customize fzf colors to match your color scheme let g:fzf_colors = \ { 'fg': [ 'fg', 'Normal'], \ 'bg': [ 'bg', 'Normal'], \ 'hl': [ 'fg', 'Comment'], \ 'fg+': [ 'fg', 'CursorLine', 'CursorColumn', 'Normal'], \ 'bg+': [ 'bg', 'CursorLine', 'CursorColumn'], \ 'hl+': [ 'fg', 'Statement'], \ 'info': [ 'fg', 'PreProc'], \ 'border': [ 'fg', 'Ignore'], \ 'prompt': [ 'fg', 'Conditional'], \ 'pointer': [ 'fg', 'Exception'], \ 'marker': [ 'fg', 'Keyword'], \ 'spinner': [ 'fg', 'Label'], \ 'header': [ 'fg', 'Comment'] } " EasyAlign "" Start interactive EasyAlign in visual mode (e.g. vipga) xmap ga (EasyAlign) " Start interactive EasyAlign for a motion/text object (e.g. gaip) nmap ga (EasyAlign) "}}} " " git commands {{{ " TODO: map fugitive commands " TODO: check out gv etc " TODO: bind hunk committing " Gitgutter hunk view nmap ghv (GitGutterPreviewHunk) nmap ghn (GitGutterNextHunk) nmap ghp (GitGutterPrevHunk) nmap ghf (GitGutterFold) "}}} " plugin modification {{{ " "}}} " gvim {{{ set guioptions=Ace "}}} " tmux {{{ " tslime let g:tslime_ensure_trailing_newlines = 1 let g:tslime_ensure_trailing_newlines = 1 let g:tslime_normal_mapping = 't' let g:tslime_visual_mapping = 't' let g:tslime_vars_mapping = 'T' "}}} " folding options, this must be last in file " vim:foldmethod=marker:foldlevel=0