" vim: set foldmethod=marker foldlevel=0 nomodeline: " ================================================================================ " .init.vim / .vimrc of Marty Oehme {{{ " ================================================================================ " " - stolen from many different sources including " Steve Losh " Junegunn Choi " Tim Pope " }}} " ================================================================================ " PLUGIN INSTALLATION - handled by VIM-PLUG {{{ " ================================================================================ " " automatically install vim-plug if it does not exist " Note: this installs it in the neovim folder, not the vim folder if empty(glob('~/.vim/autoload/plug.vim')) silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif " defines plugin directory " Install plugins from vim with :PlugInstall silent! if plug#begin('~/.local/share/nvim/plugged') " Base Plug 'tpope/vim-sensible' Plug 'christoomey/vim-tmux-navigator' " add seamless movement between vim and tmux " Workflow Plug 'tpope/vim-commentary' " easily toggle comments for lines, paragrapgs etc Plug 'jiangmiao/auto-pairs' " Auto close brackets and '' " Ecosystem " Plug 'tpope/vim-fugitive' - Will have to take a closer look some other time Plug 'scrooloose/nerdtree' " directory thingy - perhaps replace it with something more efficient Plug 'Yggdroot/LeaderF' " fuzzy matcher, apparently faster than fzf, ctrlp, unit, denite " Language Integration Plug 'sheerun/vim-polyglot' " syntax plugins for almost every language Plug 'stephpy/vim-yaml' Plug 'mhartington/nvim-typescript', {'do': './install.sh'} " HTML Workflow Plug 'valloric/matchtagalways' Plug 'alvan/vim-closetag' " For async completion Plug 'Shougo/deoplete.nvim' " automatic suggestions, can also perhaps be changed for newer plugs Plug 'w0rp/ale' " asynchronous linting - might be superseded by lsp or coc.nvim at some point " Design Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'edkolev/tmuxline.vim' " Colorschemes Plug 'Nequo/vim-allomancer' call plug#end() endif " }}} " ================================================================================ " PLUGIN CONFIGURATION {{{ " ================================================================================ let g:airline_powerline_fonts=1 let g:airline_theme='raven' colorscheme allomancer " disable automatically refreshing the mux statusbar since it breaks tmux " prefix highlighting. Instead, when changing vim statusbar just create " snapshot with :TmuxlineSnapshot file and stick it into tmux config manually let g:airline#extensions#tmuxline#enabled = 0 " custom preset with left-justified window list let g:tmuxline_preset = { \'a' : '#S', \'b' : '#(whoami)', \'c' : '#I:#P', \'win' : '#I #W', \'cwin' : [' ', '#I #W'], \'x' : '#{prefix_highlight} %H:%M:%S', \'y' : '%d-%b-%y', \'z' : '#H', \'options' : {}} " automatically save the current buffer when navigating away from vim let g:tmux_navigator_save_on_switch = 1 " enable deoplete at startup let g:deoplete#enable_at_startup = 1 let g:deoplete#enable_ignore_case = 1 let g:deoplete#enable_smart_case = 1 let g:deoplete#enable_camel_case = 1 let g:deoplete#enable_refresh_always = 1 let g:deoplete#max_abbr_width = 0 let g:deoplete#max_menu_width = 0 let g:deoplete#omni#input_patterns = get(g:,'deoplete#omni#input_patterns',{}) let g:ale_fix_on_save = 1 let g:ale_fixers = { \'javascipt': ['eslint', 'prettier'], \'html': ['tidy','prettier'], \'typescript': ['prettier','tslint'], \'*': ['remove_trailing_lines', 'trim_whitespace'], \} " }}} " ================================================================================ " VIM SETTINGS {{{ " ================================================================================ " " set truecolor (neovim) set termguicolors " many of these come from " http://stevelosh.com/blog/2010/09/coming-home-to-vim/ " sets tabs to be 4 characters, expanded into spaces, but still removable with " one press of backspace. " great explanation: http://vimcasts.org/transcripts/2/en/ set tabstop=2 set shiftwidth=2 set softtabstop=2 set expandtab " shows linenumbers relative to the one you are on, for easy movement and " dNUMBERd deletions set relativenumber " keeps an undofile next to files so that you can even undo if vim is closed " in between set undofile " ignores case by default but will use case when search is specifically not " all lowercased set ignorecase set smartcase " whenever vim loses focus, save au FocusLost * :wa " disables showing us the current mode in the command line since airline takes " care of it set noshowmode " highlight everything that goes over 80 columns highlight ColorColumn ctermbg=magenta call matchadd('ColorColumn', '\%81v', 100) " }}} " ================================================================================ " KEYBINDINGS {{{ " ================================================================================ " " set our leader key to space since with hjkl, space is largely useless let mapleader = "\" " set jk to escape, in case capslock is not mapped to escape on the system inoremap jk " remove search highlights by pressing space+/ - the key for searching the " first place nnoremap / :noh " move around between matching brackets with tab nnoremap % nnoremap % " select the whole buffer with -a map a ggVG " quickly edit vimrc and source it on saving, useful for testing map V :vsp ~/.config/nvim/init.vim au BufWritePost init.vim so ~/.config/nvim/init.vim " get rid of the help message popping up when I miss esc and hit F1 nnoremap inoremap vnoremap " remove all trailing whitespaces nnoremap W :%s/\s\+$//:let @/='' " 'open new tab' with leader-t (opens new buffer and switches to it) " open actual new tab with leader-T nnoremap t :vsp . nnoremap T :tabedit . " save current buffer with Ctrl-s nnoremap :w " open NERDtree with leader-e nnoremap e :NERDTreeToggle " }}} " ================================================================================ " END " ================================================================================