Created
December 19, 2017 09:26
-
-
Save lorenzosinisi/77d53935d58ac3cf330188f420870103 to your computer and use it in GitHub Desktop.
Vimrc config for Elixir
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""""""""""""""""""""""""""""""""""""" | |
" Lorenzo Sinisi Vimrc configuration | |
""""""""""""""""""""""""""""""""""""" | |
set nocompatible | |
syntax on | |
set nowrap | |
set ignorecase | |
set smartcase | |
set encoding=utf8 | |
set mouse=nicr | |
set directory^="$HOME/.vim/tmp/" | |
set colorcolumn=80 | |
"""" START Vundle Configuration | |
set nobackup | |
" 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() | |
" Delete a word with backspace | |
imap <C-BS> <C-W> | |
" let Vundle manage Vundle, required | |
Plugin 'gmarik/Vundle.vim' | |
" Utility | |
Plugin 'scrooloose/nerdtree' | |
Plugin 'ervandew/supertab' | |
Plugin 'wincent/command-t' | |
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 'tpope/vim-dispatch' | |
Plugin 'Shougo/neocomplete.vim' | |
Plugin 'ntpeters/vim-better-whitespace' | |
Plugin 'airblade/vim-gitgutter' | |
Plugin 'valloric/youcompleteme' | |
" Generic Programming Support | |
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' | |
highlight ExtraWhitespace ctermbg=red | |
" 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 'jadercorrea/elixir_generator.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 'mileszs/ack.vim' | |
" OSX stupid backspace fix | |
set backspace=indent,eol,start | |
call vundle#end() " required | |
filetype plugin indent on " required | |
"""" END Vundle Configuration | |
""""""""""""""""""""""""""""""""""""" | |
" Configuration Section | |
""""""""""""""""""""""""""""""""""""" | |
" Show linenumbers | |
set number | |
set ruler | |
" 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 | |
" Enable highlighting of the current line | |
"set cursorline | |
" Theme and Styling | |
set t_Co=256 | |
set background=dark | |
set guifont= | |
if (has("termguicolors")) | |
set termguicolors | |
endif | |
let base16colorspace=256 " Access colors present in 256 colorspace | |
colorscheme spacegray | |
" colorscheme spacemacs-theme | |
colorscheme spacegray | |
let g:spacegray_underline_search = 1 | |
let g:spacegray_italicize_comments = 1 | |
highlight OverLength ctermbg=red ctermfg=white guibg=#592929 | |
match OverLength /\%81v.\+/ | |
" 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 | |
" Github Issues Configuration | |
let g:github_access_token = "e6fb845bd306a3ca7f086cef82732d1d5d9ac8e0" | |
" 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: 46 q! | |
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. | |
set splitright | |
" Vim-Test Configuration | |
let test#strategy = "vimux" | |
nnoremap <silent> <leader><space> :Files<CR> | |
nnoremap <silent> <leader>a :Buffers<CR> | |
nnoremap <silent> <leader>A :Windows<CR> | |
nnoremap <silent> <leader>; :BLines<CR> | |
nnoremap <silent> <leader>o :BTags<CR> | |
nnoremap <silent> <leader>O :Tags<CR> | |
nnoremap <silent> <leader>? :History<CR> | |
nnoremap <silent> <leader>/ :Ag<CR> | |
nnoremap <silent> <leader>ga :BCommits<CR> | |
nnoremap <silent> <leader>ft :Filetypes<CR> | |
imap <C-x><C-f> <plug>(fzf-complete-file-ag) | |
let g:ackprg = 'ag --vimgrep' | |
let g:ag_lhandler="botright lopen" | |
imap <C-x><C-l> <plug>(fzf-complete-line) | |
" 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 | |
" 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>") | |
" <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 +4<CR> | |
nnoremap <Down> :resize -4<CR> | |
nnoremap <Left> :vertical resize +4<CR> | |
nnoremap <Right> :vertical resize -4<CR> | |
endif | |
highlight ExtraWhitespace ctermbg=red guibg=red | |
match ExtraWhitespace /\s\+$/ | |
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/ | |
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/ | |
autocmd InsertLeave * match ExtraWhitespace /\s\+$/ | |
autocmd BufWinLeave * call clearmatches() | |
" 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> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment