Created
January 24, 2019 12:17
-
-
Save mtanzi/3cddb3808e10443824aadbd9130ada07 to your computer and use it in GitHub Desktop.
Vim dotfile
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
"""""""""""""""""""""""""""""""""""" | |
" Marco Tanzi .vimrc configuration " | |
"""""""""""""""""""""""""""""""""""" | |
set nocompatible " be iMproved, required | |
let mapleader = " " | |
set backspace=2 " Backspace deletes like most programs in insert mode | |
set nobackup | |
set nowritebackup | |
set noswapfile " http://robots.thoughtbot.com/post/18739402579/global-gitignore#comment-458413287 | |
set history=50 | |
set ruler " show the cursor position all the time | |
set showcmd " display incomplete command | |
set laststatus=2 " Always display the status line | |
set autowrite " Automatically :write before running commands | |
set autoread " Reload files changed outside vim | |
" Trigger autoread when changing buffers or coming back to vim in terminal. | |
au FocusGained,BufEnter * :silent! ! | |
"Set default font in mac vim and gvim | |
set guifont=Inconsolata\ for\ Powerline:h24 | |
set cursorline " highlight the current line | |
set visualbell " stop that ANNOYING beeping | |
set wildmenu | |
set wildmode=list:longest,full | |
"Allow usage of mouse in iTerm | |
set ttyfast | |
set mouse=a | |
" Display extra whitespace | |
set list listchars=tab:»·,trail:·,nbsp:· | |
" Make it obvious where 100 characters is | |
" set textwidth=100 | |
" set formatoptions=qrn1 | |
" set wrapmargin=0 | |
" set colorcolumn=+1 | |
" Numbers | |
set number | |
set numberwidth=5 | |
" Open new split panes to right and bottom, which feels more natural | |
" set splitbelow | |
set splitright | |
" execute pathogen#infect() | |
syntax on | |
filetype plugin indent on | |
filetype off " required | |
set encoding=utf8 | |
" set the runtime path to include Vundle and initialize | |
call plug#begin('~/.vim/plugged') | |
" The following are examples of different formats supported. | |
" Keep Plug commands between vundle#begin/end. | |
" Git Support | |
Plug 'kablamo/vim-git-log' | |
Plug 'gregsexton/gitv' | |
Plug 'tpope/vim-fugitive' | |
" Utility | |
Plug 'scrooloose/nerdtree' | |
Plug 'majutsushi/tagbar' | |
Plug 'ervandew/supertab' | |
Plug 'BufOnly.vim' | |
Plug 'wesQ3/vim-windowswap' | |
Plug 'SirVer/ultisnips' | |
Plug 'junegunn/fzf.vim' | |
Plug 'junegunn/fzf' | |
Plug 'godlygeek/tabular' | |
Plug 'ctrlpvim/ctrlp.vim' | |
Plug 'benmills/vimux' | |
Plug 'jeetsukumaran/vim-buffergator' | |
Plug 'gilsondev/searchtasks.vim' | |
Plug 'Shougo/neocomplete.vim' | |
Plug 'tpope/vim-dispatch' | |
Plug 'nathanaelkane/vim-indent-guides' | |
" Generic Programming Support | |
Plug 'jakedouglas/exuberant-ctags' | |
Plug 'honza/vim-snippets' | |
Plug 'Townk/vim-autoclose' | |
Plug 'tomtom/tcomment_vim' | |
Plug 'tobyS/vmustache' | |
Plug 'janko-m/vim-test' | |
Plug 'maksimr/vim-jsbeautify' | |
Plug 'vim-syntastic/syntastic' | |
Plug 'neomake/neomake' | |
" Erlang Support | |
Plug 'vim-erlang/vim-erlang-tags' | |
Plug 'vim-erlang/vim-erlang-runtime' | |
Plug 'vim-erlang/vim-erlang-omnicomplete' | |
Plug 'vim-erlang/vim-erlang-compiler' | |
" Elixir Support | |
Plug 'elixir-lang/vim-elixir' | |
Plug 'avdgaag/vim-phoenix' | |
Plug 'mmorearty/elixir-ctags' | |
Plug 'mattreduce/vim-mix' | |
Plug 'janko-m/vim-test' | |
Plug 'frost/vim-eh-docs' | |
Plug 'slashmili/alchemist.vim' | |
Plug 'tpope/vim-endwise' | |
Plug 'jadercorrea/elixir_generator.vim' | |
" Elm Support | |
Plug 'lambdatoast/elm.vim' | |
" Rust Support | |
Plug 'rust-lang/rust.vim' | |
" Theme / Interface | |
Plug 'AnsiEsc.vim' | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'sjl/badwolf' | |
Plug 'tomasr/molokai' | |
Plug 'morhetz/gruvbox' | |
Plug 'zenorocha/dracula-theme', {'rtp': 'vim/'} | |
Plug 'junegunn/limelight.vim' | |
Plug 'mkarmona/colorsbox' | |
Plug 'romainl/Apprentice' | |
Plug 'Lokaltog/vim-distinguished' | |
Plug 'chriskempson/base16-vim' | |
Plug 'w0ng/vim-hybrid' | |
Plug 'AlessandroYorba/Sierra' | |
Plug 'daylerees/colour-schemes' | |
Plug 'effkay/argonaut.vim' | |
Plug 'ajh17/Spacegray.vim' | |
Plug 'atelierbram/Base2Tone-vim' | |
Plug 'colepeters/spacemacs-theme.vim' | |
" All of your Plugs must be added before the following line | |
" OSX stupid backspace fix | |
set backspace=indent,eol,start | |
call plug#end() | |
" Set Proper Tabs | |
set tabstop=4 | |
set shiftwidth=2 | |
set smarttab | |
set expandtab | |
" Always display the status line | |
" set laststatus=2 | |
" Theme and Styling | |
set t_Co=256 | |
set background=dark | |
let base16colorspace=256 " Access colors present in 256 colorspace | |
colorscheme spacegray | |
let g:spacegray_underline_search = 1 | |
let g:spacegray_italicize_comments = 1 | |
" Enable highlighting of the current line | |
" set cursorline | |
" 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 | |
" vim-indent-guides Configuration | |
let g:indent_guide_start_level = 2 | |
let g:indent_guide_start_size = 1 | |
" Vim-Supertab Configuration | |
let g:SuperTabDefaultCompletionType = "<C-X><C-O>" | |
" Vim-Test Configuration | |
let test#strategy = "vimux" | |
function! VagrantTransform(cmd) abort | |
" let vagrant_project = get(matchlist(s:cat('Vagrantfile'), '\vconfig\.vm.synced_folder ["''].+[''"], ["''](.+)[''"]'), 1) | |
return 'vagrant ssh --command '.shellescape('cd '.vagrant_project.'; '.a:cmd) | |
endfunction | |
let g:test#custom_transformations = {'vagrant': function('VagrantTransform')} | |
let g:test#transformation = 'vagrant' | |
" Neomake settings | |
autocmd! BufWritePost * Neomake | |
let g:neomake_elixir_enabled_makers = ['mix', 'credo', 'dogma'] | |
" 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 | |
" 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' | |
\ ] | |
\ } | |
" Ruby Tagbar Configuration | |
let g:tagbar_type_ruby = { | |
\ 'kinds' : [ | |
\ 'm:modules', | |
\ 'c:classes', | |
\ 'd:describes', | |
\ 'C:contexts', | |
\ 'f:methods', | |
\ 'F:singleton methods' | |
\ ] | |
\ } | |
" 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'] } | |
let g:fzf_history_dir = '~/.local/share/fzf-history' | |
let g:Tlist_Ctags_Cmd='/usr/local/Cellar/ctags/5.8_1/bin/ctags' | |
let g:alchemist_iex_term_size = 15 | |
let g:alchemist_iex_term_split = 'split' | |
""""""""""""""""""""""""""""""""""""" | |
" 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> | |
" Quicker window movement | |
nnoremap <C-j> <C-w>j | |
nnoremap <C-k> <C-w>k | |
nnoremap <C-h> <C-w>h | |
nnoremap <C-l> <C-w>l | |
" 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> | |
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> | |
" 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> | |
filetype plugin indent on " required |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment