diff --git a/vim/.vim/bindings.md b/vim/.vim/bindings.md index 33c7852..d66864e 100644 --- a/vim/.vim/bindings.md +++ b/vim/.vim/bindings.md @@ -1,5 +1,6 @@ +EasyAlign + C-x in visual mode to do reg expression Vlime ------ \cc start connection @@ -11,12 +12,34 @@ Vlime enter to evalutate \dda show doc for function - \p - show package name - \xc - show xref + \p + show package name + \xc + show xref \of compile file +GitGutter +[c and ]c + jump between hunks +hp + preview hunk +hs + stage hunk +hu + undo hunk +TODO: map to ghp, ghs, ghu, ghn, ghp? + find mapping for gitgutterfold +TODO: + nmap ghv (GitGutterPreviewHunk) + nmap ghn (GitGutterNextHunk) + nmap ghp (GitGutterPrevHunk) + nmap ghf (GitGutterFold) + TODO: make this folded notes, bind edit function + +Custom Bindings + c-c + kill current window + diff --git a/vim/.vimrc b/vim/.vimrc index 43ff4f3..9bb6ef0 100755 --- a/vim/.vimrc +++ b/vim/.vimrc @@ -53,7 +53,7 @@ " appearance {{{ colorscheme zenburn syntax on " Enable syntax - set encoding=utf-9 " Keep utf-8 encoding + 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 @@ -77,10 +77,10 @@ " }}} " 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 + 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 " }}} @@ -114,9 +114,9 @@ "}}} " 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 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 @@ -275,6 +275,7 @@ " git commands {{{ " TODO: map fugitive commands " TODO: check out gv etc +" TODO: bind hunk committing " Gitgutter hunk view nmap ghv (GitGutterPreviewHunk) nmap ghn (GitGutterNextHunk) @@ -286,6 +287,11 @@ " "}}} +" gvim {{{ + set guioptions=Ace + +"}}} + " folding options, this must be last in file " vim:foldmethod=marker:foldlevel=0 diff --git a/vim/_vimrc b/vim/_vimrc new file mode 100755 index 0000000..8b02020 --- /dev/null +++ b/vim/_vimrc @@ -0,0 +1,300 @@ + +" 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 'artanikin/vim-synthwave84' + Plug 'kovisoft/paredit' + Plug 'relastle/bluewery.vim' + Plug 'sainnhe/vim-color-forest-night' + Plug 'justinmk/vim-sneak' + " 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 + 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=1 " 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 + +"}}} + +" 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 + +"}}} + +" 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 + set guifont="Bitstream Vera Sans Mono" + +"}}} + + +" folding options, this must be last in file +" vim:foldmethod=marker:foldlevel=0 +