call plug#begin('~/.local/share/nvim/site/plugged') " airline Plug 'https://github.com/bling/vim-airline.git' Plug 'vim-airline/vim-airline-themes' " git Plug 'https://github.com/tpope/vim-fugitive.git' " Shougos UI-Plugin Plug 'Shougo/denite.nvim' " Plug 'roxma/nvim-completion-manager' " showing function-signatures/doc on completion Plug 'Shougo/echodoc.vim' " Tab-Completion " Plug 'ervandew/supertab' " vim-sourround Plug 'https://github.com/tpope/vim-surround.git' " theme Plug 'https://github.com/morhetz/gruvbox.git' Plug 'frankier/neovim-colors-solarized-truecolor-only' " rainbow-parentethies Plug 'luochen1990/rainbow' " search in files/buffers for filenames - replaced by fzf " Plug 'https://github.com/ctrlpvim/ctrlp.vim.git' " fuzzy finder Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } Plug 'junegunn/fzf.vim' " show buffers in statusline " Plug 'bling/vim-bufferline' " git-gutter (little + - and ~ left) Plug 'https://github.com/airblade/vim-gitgutter.git' " apply hlint-suggestions " Plug 'https://github.com/mpickering/hlint-refactor-vim.git' " Tabular Plug 'https://github.com/godlygeek/tabular.git' " Shakespearian template-highlighting " Plug 'https://github.com/pbrisbin/vim-syntax-shakespeare.git' " Multiline-Comments Plug 'tomtom/tcomment_vim' " Auto-Formatting Plug 'Chiel92/vim-autoformat' " show colors (#abc) with that background-color Plug 'ap/vim-css-color' " multiline-stuff Plug 'terryma/vim-multiple-cursors' " Icons Plug 'ryanoasis/vim-devicons' " Markdown-Support Plug 'plasticboy/vim-markdown' Plug 'dhruvasagar/vim-table-mode' Plug 'suan/vim-instant-markdown' " Code-Folds Plug 'tmhedberg/SimpylFold' " better closing Plug 'mhinz/vim-sayonara' " Session-Management Plug 'xolox/vim-session' | Plug 'xolox/vim-misc' " CoC Plug 'neoclide/coc.nvim', {'branch': 'release'} call plug#end() " SETTINGS " recommended by syntastic " set statusline+=%#warningmsg# " set statusline+=%{SyntasticStatuslineFlag()} " set statusline+=%* " set statusline+=%{fugitive#statusline()} " " let g:syntastic_always_populate_loc_list = 1 " let g:syntastic_auto_loc_list = 1 " let g:syntastic_check_on_open = 1 " let g:syntastic_check_on_wq = 0 " use autocompletion let g:deoplete#enable_at_startup = 1 " in case of problems with stack.. " g:necoghc_use_stack = 1 " set leader to space let mapleader= "\" " autocmd InsertEnter * :set number " autocmd InsertEnter * :set norelativenumber " autocmd InsertLeave * :set relativenumber " autocmd InsertLeave * :set nonumber set relativenumber set number set shiftwidth=2 set tabstop=2 " show cmd - especially leader set showcmd " expand tabs with spaces set expandtab " Tell Vim which characters to show for expanded TABs, " trailing whitespace, and end-of-lines. VERY useful! if &listchars ==# 'eol:$' set listchars=tab:>\ ,trail:-,extends:>,precedes:<,nbsp:+ endif set list " Show problematic characters. " Also highlight all tabs and trailing whitespace characters. highlight ExtraWhitespace ctermbg=darkgreen guibg=darkgreen match ExtraWhitespace /\s\+$\|\t/ set hlsearch " Highlight search results. set ignorecase " Make searching case insensitive set smartcase " ... unless the query has capital letters. set incsearch " Incremental search. set gdefault " Use 'g' flag by default with :s/foo/bar/. set magic " Use 'magic' patterns (extended regular expressions). "set inccommand=nosplit " Use live-preview of search/replace etc. set conceallevel=2 " Allow things to be visually opressed (i.e. *foo* be italic) set mouse=a " enable mouse set foldenable " enable folding set undofile " enable undo over sessions set undodir="$HOME/.VIM_UNDO_FILES" " save in this path set laststatus=3 " only 1 statusline, not 1 per window highlight WinSeperator guibg=None set hidden " Use to clear the highlighting of :set hlsearch. if maparg('', 'n') ==# '' nnoremap :nohlsearch endif " Remember cursor position between vim sessions autocmd BufReadPost * \ if line("'\"") > 0 && line ("'\"") <= line("$") | \ exe "normal! g'\"" | \ endif " center buffer around cursor when opening files autocmd BufRead * normal zz "" KEY-BINDINGS " use to fold/unfold nnoremap za " : completion function! CheckBackSpace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~ '\s' endfunction inoremap \ pumvisible() ? "\" : \ CheckBackSpace() ? "\" : \ coc#refresh() " : completion back inoremap pumvisible() ? "\" : "\" " : confirm completion, or insert inoremap pumvisible() ? "\" : "\" " use to Jump to definition instead of (default) nnoremap " c-d to delete line in insert-mode inoremap ddi " exit terminal-mode tnoremap " autoformat code if possible (read docs on vim-autoformat!) noremap f :Autoformat noremap TM :TableModeToggle " multi-cursor let g:multi_cursor_next_key='' let g:multi_cursor_prev_key='' let g:multi_cursor_skip_key='' let g:multi_cursor_quit_key='' " Align blocks of text and keep them selected vmap < >gv nnoremap d "_d vnoremap d "_d " toggle comments vnoremap / :TComment " Open file menu nnoremap o :Files " Open buffer menu nnoremap b :Buffers " Open most recently used files nnoremap f :GFiles " Open Tag-Search nnoremap t :Tags " Open File-Tree on left side nmap :NERDTreeToggle " Expand patterns in Haskell "nnoremap hc :GhcModSplitFunCase " Expand function signatures in Haskell "nnoremap hs :GhcModSigCodegen " Get Type-Info under Cursor "nnoremap ht :GhcModType " " Copy to clipboard vnoremap y "+y nnoremap Y "+yg_ nnoremap y "+y nnoremap yy "+yy " " Paste from clipboard nnoremap p "+p nnoremap P "+P vnoremap p "+p vnoremap P "+P " disable syntastic for haskell let g:syntastic_haskell_checkers=[''] " Clear stuff nnoremap :nohlsearch:cclose " THEME-RELATED STUFF syntax enable " enable true color set termguicolors " enable italics, load colorscheme let g:gruvbox_italic=1 set background=dark colorscheme gruvbox let g:rainbow_active = 1 let &colorcolumn="80,".join(range(120,200),",") " spell checking for markdown autocmd BufRead,BufNewFile *.md setlocal spell complete+=kspell textwidth=80 autocmd BufRead,BufNewFile *.markdown setlocal spell complete+=kspell textwidth=80 autocmd BufRead,BufNewFile *.md hi SpellBad guibg=#582828 gui=none autocmd BufRead,BufNewFile *.markdown hi SpellBad guibg=#582828 gui=none autocmd FileType markdown nnoremap t :Toc " set languages to english and german set spelllang=de_de,en_us let g:vim_markdown_toc_autofit = 1 let g:vim_markdown_emphasis_multiline = 1 let g:vim_markdown_math = 1 let g:vim_markdown_new_list_item_indent = 2 let g:vim_markdown_folding_level = 6 " disable instant-markdown-preview let g:instant_markdown_autostart = 0 au FileType markdown setl shell=bash let g:haskell_enable_quantification = 1 " enable highlighting of forall let g:haskell_enable_recursivedo = 1 " enable highlighting of mdo and rec let g:haskell_enable_arrowsyntax = 1 " enable highlighting of proc let g:haskell_enable_pattern_synonyms = 1 " enable highlighting of pattern let g:haskell_enable_typeroles = 1 " enable highlighting of type roles let g:haskell_enable_static_pointers = 1 " enable highlighting of static let g:haskell_indent_if = 3 let g:haskell_indent_case = 2 let g:haskell_indent_let = 4 let g:haskell_indent_where = 6 let g:haskell_indent_do = 3 let g:haskell_indent_in = 1 let g:haskell_indent_guard = 2 " NERDTREE map :NERDTreeToggle autocmd StdinReadPre * let s:std_in=1 let NERDTreeShowHidden=1 let g:NERDTreeWinSize=45 let g:NERDTreeAutoDeleteBuffer=1 function! NERDTreeHighlightFile(extension, fg, bg, guifg, guibg) exec 'autocmd FileType nerdtree highlight ' . a:extension .' ctermbg='. a:bg .' ctermfg='. a:fg .' guibg='. a:guibg .' guifg='. a:guifg exec 'autocmd FileType nerdtree syn match ' . a:extension .' #^\s\+.*'. a:extension .'$#' endfunction call NERDTreeHighlightFile('jade', 'green', 'none', 'green', '#141e23') call NERDTreeHighlightFile('ini', 'yellow', 'none', 'yellow', '#141e23') call NERDTreeHighlightFile('md', 'blue', 'none', '#3366FF', '#141e23') call NERDTreeHighlightFile('yml', 'yellow', 'none', 'yellow', '#141e23') call NERDTreeHighlightFile('config', 'yellow', 'none', 'yellow', '#141e23') call NERDTreeHighlightFile('conf', 'yellow', 'none', 'yellow', '#141e23') call NERDTreeHighlightFile('json', 'yellow', 'none', 'yellow', '#141e23') call NERDTreeHighlightFile('html', 'yellow', 'none', 'yellow', '#141e23') call NERDTreeHighlightFile('styl', 'cyan', 'none', 'cyan', '#141e23') call NERDTreeHighlightFile('css', 'cyan', 'none', 'cyan', '#141e23') call NERDTreeHighlightFile('coffee', 'Red', 'none', 'red', '#141e23') call NERDTreeHighlightFile('js', 'Red', 'none', '#ffa500', '#141e23') call NERDTreeHighlightFile('ts', 'Blue', 'none', '#6699cc', '#141e23') call NERDTreeHighlightFile('hs', 'Blue', 'none', '#6699cc', '#141e23') call NERDTreeHighlightFile('php', 'Magenta', 'none', '#ff00ff', '#141e23') call NERDTreeHighlightFile('ds_store', 'Gray', 'none', '#686868', '#141e23') call NERDTreeHighlightFile('gitconfig', 'Gray', 'none', '#686868', '#141e23') call NERDTreeHighlightFile('gitignore', 'Gray', 'none', '#686868', '#141e23') call NERDTreeHighlightFile('bashrc', 'Gray', 'none', '#686868', '#141e23') call NERDTreeHighlightFile('bashprofile', 'Gray', 'none', '#686868', '#141e23') " SNIPPETS " " Emmet customization " " Enable Emmet in all modes " " Remapping , just doesn't cut it. " function! s:expand_html_tab() " " try to determine if we're within quotes or tags. " " if so, assume we're in an emmet fill area. " let line = getline('.') " if col('.') < len(line) " let line = matchstr(line, '[">][^<"]*\%'.col('.').'c[^>"]*[<"]') " if len(line) >= 2 " return "\" " endif " endif " " expand anything emmet thinks is expandable. " if emmet#isExpandable() " return "\," " endif " " return a regular tab character " return "\" " endfunction " autocmd FileType html,markdown imap expand_html_tab() " let g:user_emmet_mode='a' " let g:user_emmet_complete_tag = 1 " let g:user_emmet_install_global = 0 " autocmd FileType html,css EmmetInstall " AIRLINE let g:airline#extensions#tabline#ignore_bufadd_pat = 'gundo|undotree|vimfiler|tagbar|nerd_tree|startify|!' let g:airline#extensions#tabline#enabled = 1 set hidden let g:airline#extensions#tabline#fnamemod = ':t' let g:airline#extensions#tabline#show_tab_nr = 1 let g:airline_powerline_fonts = 1 let g:airline_theme='understated' " let g:airline_theme='base16_solarized' cnoreabbrev x getcmdtype() == ":" && getcmdline() == 'x' ? 'Sayonara' : 'x' nmap tt :term nmap , :bnext nmap . :bprevious let g:airline#extensions#tabline#buffer_idx_mode = 1 nmap 1 AirlineSelectTab1 nmap 2 AirlineSelectTab2 nmap 3 AirlineSelectTab3 nmap 4 AirlineSelectTab4 nmap 5 AirlineSelectTab5 nmap 6 AirlineSelectTab6 nmap 7 AirlineSelectTab7 nmap 8 AirlineSelectTab8 nmap 9 AirlineSelectTab9 set guifont=Sauce\ Code\ Pro\ Nerd\ Font\ Complete:h13 " TABULARIZE nmap t: :Tabularize /:: /l1c0l0 nmap t= :Tabularize /= /l1c0l0 nmap tp :Tabularize /\| /l1c0l0 nmap t, :Tabularize /, /l1c0l0 " Table mode let g:table_mode_corner_corner="+" let g:table_mode_header_fillchar="=" " Move between windows nnoremap nnoremap nnoremap nnoremap " Move between tabs nnoremap :bNext nnoremap :bnext " Session-Options let g:session_autoload='yes' let g:session_autosave='yes' " Change background quickly nmap :let &background = ( &background == "dark" ? "light" : "dark" ) " BUGFIX UNTIL #6997 gets meged. set guicursor=