""""""""""""""""""""""""""""""""""""" " Michal Márkus Vimrc configuration """"""""""""""""""""""""""""""""""""" set encoding=utf8 """" START Vundle Configuration " Disable file type for vundle filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " let Vundle manage Vundle, required Plugin 'gmarik/Vundle.vim' " Utility Plugin 'wakatime/vim-wakatime' Plugin 'scrooloose/nerdtree' Plugin 'majutsushi/tagbar' Plugin 'ervandew/supertab' Plugin 'BufOnly.vim' Plugin 'wesQ3/vim-windowswap' Plugin 'SirVer/ultisnips' Plugin 'junegunn/fzf.vim' Plugin 'junegunn/fzf' Plugin 'godlygeek/tabular' Plugin 'ctrlpvim/ctrlp.vim' Plugin 'benmills/vimux' Plugin 'jeetsukumaran/vim-buffergator' Plugin 'gilsondev/searchtasks.vim' Plugin 'Shougo/neocomplete.vim' Plugin 'tpope/vim-dispatch' Plugin 'jceb/vim-orgmode' Plugin 'tpope/vim-speeddating' Plugin 'calorie/vim-typing-sound' " Generic Programming Support Plugin 'jakedouglas/exuberant-ctags' Plugin 'honza/vim-snippets' Plugin 'Townk/vim-autoclose' Plugin 'tomtom/tcomment_vim' Plugin 'tobyS/vmustache' Plugin 'janko-m/vim-test' Plugin 'maksimr/vim-jsbeautify' Plugin 'vim-syntastic/syntastic' Plugin 'neomake/neomake' " Markdown / Writting Plugin 'reedes/vim-pencil' Plugin 'tpope/vim-markdown' Plugin 'jtratner/vim-flavored-markdown' Plugin 'LanguageTool' " Git Support Plugin 'kablamo/vim-git-log' Plugin 'gregsexton/gitv' Plugin 'tpope/vim-fugitive' "Plugin 'jaxbot/github-issues.vim' " PHP Support "Plugin 'phpvim/phpcd.vim' Plugin 'tobyS/pdv' " Erlang Support Plugin 'vim-erlang/vim-erlang-tags' Plugin 'vim-erlang/vim-erlang-runtime' Plugin 'vim-erlang/vim-erlang-omnicomplete' Plugin 'vim-erlang/vim-erlang-compiler' " Elixir Support Plugin 'elixir-lang/vim-elixir' Plugin 'avdgaag/vim-phoenix' Plugin 'mmorearty/elixir-ctags' Plugin 'mattreduce/vim-mix' Plugin 'BjRo/vim-extest' Plugin 'frost/vim-eh-docs' Plugin 'slashmili/alchemist.vim' Plugin 'tpope/vim-endwise' Plugin 'jadercorrea/elixir_generator.vim' Plugin 'mhinz/vim-mix-format' " Elm Support Plugin 'lambdatoast/elm.vim' " Theme / Interface Plugin 'AnsiEsc.vim' Plugin 'ryanoasis/vim-devicons' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'sjl/badwolf' Plugin 'tomasr/molokai' Plugin 'morhetz/gruvbox' Plugin 'zenorocha/dracula-theme', {'rtp': 'vim/'} Plugin 'junegunn/limelight.vim' Plugin 'mkarmona/colorsbox' Plugin 'romainl/Apprentice' Plugin 'Lokaltog/vim-distinguished' Plugin 'chriskempson/base16-vim' Plugin 'w0ng/vim-hybrid' Plugin 'AlessandroYorba/Sierra' Plugin 'daylerees/colour-schemes' Plugin 'effkay/argonaut.vim' Plugin 'ajh17/Spacegray.vim' Plugin 'atelierbram/Base2Tone-vim' Plugin 'colepeters/spacemacs-theme.vim' Plugin 'dylanaraps/wal.vim' Plugin 'challenger-deep-theme/vim', { 'as': 'challenger-deep' } " Plugin 'tiagofumo/vim-nerdtree-syntax-highlight' call vundle#end() " required filetype plugin indent on " required """" END Vundle Configuration """"""""""""""""""""""""""""""""""""" " Configuration Section """"""""""""""""""""""""""""""""""""" set nowrap " OSX stupid backspace fix set backspace=indent,eol,start " Show linenumbers set number " Set Proper Tabs set tabstop=4 set shiftwidth=4 set smarttab set expandtab " Always display the status line set laststatus=2 " Enable Elite mode, No ARRRROWWS!!!! let g:elite_mode=1 " Devicons configuration let g:webdevicons_conceal_nerdtree_brackets = 1 let g:WebDevIconsNerdTreeAfterGlyphPadding = '' " Enable highlighting of the current line set cursorline " Theme and Styling syntax on set t_Co=256 " if (has("termguicolors")) " set termguicolors " endif let g:vim_typing_sound = 0 " sound off let g:vim_typing_sound_command = 'afplay' " or 'afplay' let g:vim_typing_sound_path = '/Volumes/Workspace/Utilities/Sound/9744__horn__typewriter.wav' " set your sound path "let base16colorspace=256 " Access colors present in 256 colorspace "colorscheme challenger_deep let g:challenger_deep_termcolors = 256 let g:spacegray_underline_search = 1 let g:spacegray_italicize_comments = 1 " Vim-Airline Configuration let g:airline#extensions#tabline#enabled = 1 let g:airline_powerline_fonts = 1 let g:airline_theme='hybrid' let g:hybrid_custom_term_colors = 1 let g:hybrid_reduced_contrast = 1 " Syntastic Configuration set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set 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 " let g:syntastic_enable_elixir_checker = 1 " let g:syntastic_elixir_checkers = ["elixir"] " Neomake settings autocmd! BufWritePost * Neomake let g:neomake_elixir_enabled_makers = ['mix', 'credo', 'dogma'] " Vim-PDV Configuration let g:pdv_template_dir = $HOME ."/.vim/bundle/pdv/templates_snip" " Markdown Syntax Support augroup markdown au! au BufNewFile,BufRead *.md,*.markdown setlocal filetype=ghmarkdown augroup END " Vim-Alchemist Configuration let g:alchemist#elixir_erlang_src = "/Users/amacgregor/Projects/Github/alchemist-source" let g:alchemist_tag_disable = 1 " Vim-Supertab Configuration let g:SuperTabDefaultCompletionType = "<C-X><C-O>" " Settings for Writting let g:pencil#wrapModeDefault = 'soft' " default is 'hard' let g:languagetool_jar = '/opt/languagetool/languagetool-commandline.jar' " Vim-pencil Configuration augroup pencil autocmd! autocmd FileType markdown,mkd call pencil#init() autocmd FileType text call pencil#init() augroup END " Vim-UtilSnips Configuration " Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe. let g:UltiSnipsExpandTrigger="<tab>" let g:UltiSnipsJumpForwardTrigger="<c-b>" let g:UltiSnipsJumpBackwardTrigger="<c-z>" let g:UltiSnipsEditSplit="vertical" " If you want :UltiSnipsEdit to split your window. " Vim-Test Configuration let test#strategy = "vimux" " Neocomplete Settings let g:acp_enableAtStartup = 0 let g:neocomplete#enable_at_startup = 1 let g:neocomplete#enable_smart_case = 1 let g:neocomplete#sources#syntax#min_keyword_length = 3 " Define dictionary. let g:neocomplete#sources#dictionary#dictionaries = { \ 'default' : '', \ 'vimshell' : $HOME.'/.vimshell_hist', \ 'scheme' : $HOME.'/.gosh_completions' \ } " Define keyword. if !exists('g:neocomplete#keyword_patterns') let g:neocomplete#keyword_patterns = {} endif let g:neocomplete#keyword_patterns['default'] = '\h\w*' function! s:my_cr_function() return (pumvisible() ? "\<C-y>" : "" ) . "\<CR>" " For no inserting <CR> key. "return pumvisible() ? "\<C-y>" : "\<CR>" endfunction " Close popup by <Space>. "inoremap <expr><Space> pumvisible() ? "\<C-y>" : "\<Space>" " vim-mix-format " let g:mix_format_on_save = 1 " AutoComplPop like behavior. "let g:neocomplete#enable_auto_select = 1 " Enable omni completion. autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS autocmd FileType python setlocal omnifunc=pythoncomplete#Complete autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags " Enable heavy omni completion. if !exists('g:neocomplete#sources#omni#input_patterns') let g:neocomplete#sources#omni#input_patterns = {} endif "let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::' "let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)' "let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::' " For perlomni.vim setting. " https://github.com/c9s/perlomni.vim let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::' " Elixir Tagbar Configuration let g:tagbar_type_elixir = { \ 'ctagstype' : 'elixir', \ 'kinds' : [ \ 'f:functions', \ 'functions:functions', \ 'c:callbacks', \ 'd:delegates', \ 'e:exceptions', \ 'i:implementations', \ 'a:macros', \ 'o:operators', \ 'm:modules', \ 'p:protocols', \ 'r:records', \ 't:tests' \ ] \ } " Fzf Configuration " 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': '~40%' } " In Neovim, you can set up fzf window using a Vim command let g:fzf_layout = { 'window': 'enew' } let g:fzf_layout = { 'window': '-tabnew' } " 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'], \ 'prompt': ['fg', 'Conditional'], \ 'pointer': ['fg', 'Exception'], \ 'marker': ['fg', 'Keyword'], \ 'spinner': ['fg', 'Label'], \ 'header': ['fg', 'Comment'] } " Enable per-command history. " CTRL-N and CTRL-P will be automatically bound to next-history and " previous-history instead of down and up. If you don't like the change, " explicitly bind the keys to down and up in your $FZF_DEFAULT_OPTS. let g:fzf_history_dir = '~/.local/share/fzf-history' """"""""""""""""""""""""""""""""""""" " Mappings configurationn """"""""""""""""""""""""""""""""""""" map <C-n> :NERDTreeToggle<CR> map <C-m> :TagbarToggle<CR> " Omnicomplete Better Nav inoremap <expr> <c-j> ("\<C-n>") inoremap <expr> <c-k> ("\<C-p>") " Neocomplete Plugin mappins inoremap <expr><C-g> neocomplete#undo_completion() inoremap <expr><C-l> neocomplete#complete_common_string() " Recommended key-mappings. " <CR>: close popup and save indent. inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR> " <TAB>: completion. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" " <C-h>, <BS>: close popup and delete backword char. inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>" inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>" " Mapping selecting Mappings nmap <leader><tab> <plug>(fzf-maps-n) xmap <leader><tab> <plug>(fzf-maps-x) omap <leader><tab> <plug>(fzf-maps-o) " Shortcuts nnoremap <Leader>o :Files<CR> nnoremap <Leader>O :CtrlP<CR> nnoremap <Leader>w :w<CR> " Insert mode completion imap <c-x><c-k> <plug>(fzf-complete-word) imap <c-x><c-f> <plug>(fzf-complete-path) imap <c-x><c-j> <plug>(fzf-complete-file-ag) imap <c-x><c-l> <plug>(fzf-complete-line) " Vim-Test Mappings nmap <silent> <leader>t :TestNearest<CR> nmap <silent> <leader>T :TestFile<CR> nmap <silent> <leader>a :TestSuite<CR> nmap <silent> <leader>l :TestLast<CR> nmap <silent> <leader>g :TestVisit<CR> " Vim-PDV Mappings autocmd FileType php inoremap <C-p> <ESC>:call pdv#DocumentWithSnip()<CR>i autocmd FileType php nnoremap <C-p> :call pdv#DocumentWithSnip()<CR> autocmd FileType php setlocal omnifunc=phpcd#CompletePHP " Disable arrow movement, resize splits instead. if get(g:, 'elite_mode') nnoremap <Up> :resize +2<CR> nnoremap <Down> :resize -2<CR> nnoremap <Left> :vertical resize +2<CR> nnoremap <Right> :vertical resize -2<CR> endif map <silent> <LocalLeader>ws :highlight clear ExtraWhitespace<CR> " Advanced customization using autoload functions inoremap <expr> <c-x><c-k> fzf#vim#complete#word({'left': '15%'}) " Vim-Alchemist Mappings autocmd FileType elixir nnoremap <buffer> <leader>h :call alchemist#exdoc()<CR> autocmd FileType elixir nnoremap <buffer> <leader>d :call alchemist#exdef()<CR>