" 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') packloadall Plug 'junegunn/vim-easy-align' Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin --all' } " Plug 'https://gitlab.com/lstwn/broot.vim' Plug 'tpope/vim-surround' Plug 'tpope/vim-commentary' Plug 'dense-analysis/ale' Plug 'airblade/vim-gitgutter' " Plug 'itchyny/lightline.vim' Plug 'vim-airline/vim-airline' Plug 'preservim/vim-pencil' Plug 'vim-airline/vim-airline-themes' Plug 'tommcdo/vim-exchange' Plug 'tpope/vim-repeat' Plug 'haya14busa/incsearch.vim' Plug 'sheerun/vim-polyglot' Plug 'nvie/vim-flake8' " Plug 'wolf-dog/lightline-sceaduhelm.vim' Plug 'tpope/vim-fugitive' Plug 'justinmk/vim-sneak' Plug 'jgdavey/tslime.vim' Plug 'vimwiki/vimwiki' Plug 'simnalamburt/vim-mundo' Plug 'tpope/vim-dadbod' Plug 'junegunn/gv.vim' Plug 'rbong/vim-flog' Plug 'tpope/vim-unimpaired' Plug 'guns/vim-clojure-static' " syntax Plug 'tpope/vim-fireplace' Plug 'guns/vim-sexp' Plug 'tpope/vim-sexp-mappings-for-regular-people' Plug 'alvan/vim-closetag' Plug 'mattn/emmet-vim' Plug 'chrisbra/colorizer' Plug 'christoomey/vim-tmux-navigator' Plug 'tpope/vim-rhubarb' Plug 'zhaozg/vim-diagram' Plug 'fatih/vim-go' Plug 'diepm/vim-rest-console' Plug 'pangloss/vim-javascript' Plug 'leafgarland/typescript-vim' Plug 'MaxMEllon/vim-jsx-pretty' Plug 'peitalin/vim-jsx-typescript' Plug 'jremmen/vim-ripgrep' Plug 'francoiscabrol/ranger.vim' Plug 'https://github.com/moll/vim-bbye' Plug 'jlanzarotta/bufexplorer' Plug 'chriskempson/base16-vim' Plug 'HiPhish/guile.vim' Plug 'rust-lang/rust.vim' Plug 'jasonccox/vim-wayland-clipboard' call plug#end() "}}} " appearance {{{ syntax on " Enable syntax " colorscheme base16-oceanicnext " set termguicolors? set t_Co=16? 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 nocursorline " Highlight current line " highlight GitGutterAdd ctermbg=black guibg=black highlight SignColumn guibg=black ctermbg=black highlight GitGutterAdd ctermbg=NONE highlight GitGutterChange ctermbg=NONE highlight GitGutterDelete ctermbg=NONE highlight Folded ctermbg=NONE " highlight Search ctermfg=white ctermbg=blue highlight Search ctermbg=23 " highlight Visual ctermbg=DarkGreen " Make search terms more visible highlight Visual ctermbg=23 " Make search terms more visible let g:ctrlsf_default_root="project" " remove underline on current line number hi CursorLineNr cterm=NONE hi VertSplit ctermfg=black hi VertSplit ctermbg=green set fillchars=vert:┃ " #### STATUSBAR " Need to configure statusline as it will be used on non-active windows " set statusline=%f\ %h%m%r%=%l,%c\ %P " highlight StatusLine guibg=black ctermbg=black let g:airline#extensions#tabline#enabled = 1 let g:airline_theme='base16' " ## Clean up tabbar## " Disable showing the tab number let g:airline#extensions#tabline#show_tab_nr = 0 " Simplify the tabline to show only the buffer name, no "tabs" or "buffers" let g:airline#extensions#tabline#show_splits = 0 let g:airline#extensions#tabline#show_buffers = 1 " " Disable showing the buffer number let g:airline#extensions#tabline#buffer_nr_show = 0 " Optional: turn off clickable tabs if you do not need them let g:airline#extensions#tabline#buffer_idx_mode = 0 " Don't show nr of tabs let g:airline#extensions#tabline#show_tab_count = 0 " Don't show 'x' on the top right let g:airline#extensions#tabline#show_close_button = 0 " Don't show 'tabs' or 'buffers' in tabline let g:airline#extensions#tabline#show_tab_type = 0 " No separators let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = ' ' let g:airline#extensions#tabline#right_sep = ' ' let g:airline#extensions#tabline#right_alt_sep = ' ' function! s:update_highlights() hi CursorLine ctermbg=none guibg=NONE hi airline_a_inactive guibg=red ctermbg=red hi airline_b_inactive guibg=red ctermbg=red hi airline_c_inactive guibg=red ctermbg=red hi airline_a guibg=red ctermbg=red hi airline_b guibg=red ctermbg=red hi airline_c guibg=red ctermbg=red endfunction autocmd User AirlineAfterInit call s:update_highlights() " let g:airline_theme_patch_func = 'AirlineThemePatch' " function! AirlineThemePatch(palette) " if g:airline_theme == 'badwolf' " for colors in values(a:palette.inactive) " let colors[3] = 1 " endfor " endif " endfunction " Lightline " let g:lightline = { 'colorscheme': '16color' } " set fillchars+=vert:│ " command! LightlineReload call LightlineReload() " function! LightlineReload() " call lightline#init() " call lightline#colorscheme() " call lightline#update() " endfunction " Invisible characters set list set listchars=tab:▸\ ,eol:¬ " }}} " Folding {{{ set foldenable " Enable folding set foldmethod=manual " 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 number set lazyredraw " Redraw only when necessary set updatetime=100 " Make updates happen faster (gitgutter) set splitright " Make split to right by default set splitbelow set winheight=30 " Soft minimum window height (active) set winminheight=6 " Hard minimum window height (inactive) set winwidth=90 " Window width for current window set winminwidth=30 " Hard minimum for window width set t_vb= " No visual bell ever let g:sneak#use_ic_scs=1 set virtualedit=block set noswapfile set undodir=~/.vim/undo let g:markdown_folding=1 au FileType markdown setlocal foldlevel=99 let g:bufExplorerSplitHorzSize=8 " New split window is n rows high. let g:bufExplorerDefaultHelp=0 " Do not show default help. set nobackup augroup pencil autocmd! autocmd FileType text, txt, asciidoc, adoc call pencil#init({'wrap': 'hard'}) augroup END "}}} " 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 "}}} " 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 set autoindent " Auto indentation "}}} " hjkl {{{ " Disable arrow keys in normal and visual mode nnoremap nnoremap nnoremap nnoremap inoremap inoremap inoremap inoremap " Make j and k move by screen line, not file line nnoremap j gj nnoremap k gk "}}} " {{{ web dev autocmd FileType html,css,javascript,typescript,typescriptreact \ set expandtab smarttab softtabstop=2 shiftwidth=2 tabstop=2 " Emmet tab size let g:user_emmet_settings = { \ 'indentation' : ' ' \} " }}} " split pane navigation {{{ " nnoremap h " nnoremap j " nnoremap k " nnoremap l nnoremap :close nnoremap :bn nnoremap :bp let g:tmux_navigator_disable_when_zoomed = 1 "}}} " git commands {{{ nmap ghv (GitGutterPreviewHunk) nmap ghn (GitGutterNextHunk) nmap ghp (GitGutterPrevHunk) nmap ghf (GitGutterFold) nmap ghs (GitGutterStageHunk) " Controls fugitive diff split direction set diffopt=vertical "}}} " plugin modification {{{ " FZF map :FZF " map :tabNext " 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': [ 'fg', 'Normal'], \ 'hl': [ 'fg', 'Comment'], \ 'fg+': [ 'fg', 'CursorLine', 'CursorColumn', 'Normal'], \ 'bg+': [ '23', 'CursorLine', 'CursorColumn'], \ 'hl+': [ 'fg', 'Statement'], \ 'info': [ 'fg', 'PreProc'], \ 'border': [ 'fg', 'Ignore'], \ 'prompt': [ '23', '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) "}}} " vimwiki {{{ let g:vimwiki_list = [ \ {'name': 'work', 'path': '~/.vim/work'}, \ {'name': 'home', 'path': '~/.vim/home'}, \ {'name': 'blog', 'path': '~/.vim/blog'}, \ {'name': 'vim', 'path': '~/.vim/vim'}, \ ] let g:vimwiki_syntax = 'markdown' let g:vimwiki_ext = '.md' let g:vimwiki_automatic_nested_syntaxes = 1 let g:vimwiki_links_space_char = '_' "}}} " diffs {{{ hi DiffAdd cterm=none ctermfg=DarkGray ctermbg=Green hi DiffChange cterm=none ctermfg=DarkGray ctermbg=Yellow hi DiffDelete cterm=bold ctermfg=DarkGray ctermbg=Red hi DiffText cterm=none ctermfg=DarkGray ctermbg=LightBlue " better diffs " set diffopt+=internal,algorithm:patience " }}} " buffers {{{ let g:bufExplorerDisableDefaultKeyMapping=1 " Disable mapping. "}}} " broot {{{ let g:broot_default_conf_path=expand('~/.config/broot/conf.hjson') let g:broot_replace_netrw=1 let g:loaded_netrwPlugin=1 " use broot for :E/T/V/Hexplore "}}} " ALE {{{ let g:ale_linters = {'javascript': ['tsserver'], \ 'typescript': ['tsserver'], \ 'rust': ['analyzer'], \ 'typescriptreact': ['tsserver'], \ 'python': ['flake8', 'pylsp'], \ 'css': ['csslint'], \ 'dockerfile': ['hadolint'], \ 'yaml': ['yamllint'] } let g:ale_fixers = { \ '*': ['remove_trailing_lines', 'trim_whitespace'] } " let g:ale_set_loclist = 0 " let g:ale_set_quickfix = 1 let g:ale_set_quickfix = 0 let g:ale_set_loclist = 0 let g:ale_fix_on_save = 1 "}}} " leaders {{{ :let mapleader = "," " Underline with line of the same length nnoremap - yypv$r- " Insert date on current line nnoremap d k :r !date nnoremap se :Explore nnoremap st :Texplore nnoremap sv :Vexplore nnoremap sh :Hexplore nmap h :map nnoremap ad :ALEDetail nnoremap ag :ALEGoToDefinition nnoremap al :ALEPopulateQuickfix nnoremap an :ALENext nnoremap ap :ALEPrevious nnoremap ar :ALERename nnoremap b :BufExplorerHorizontalSplit "}}} " folding options {{{ " folding options, this must be last in file " vim:foldmethod=marker:foldlevel=0 " }}}