333 lines
8.8 KiB
Text
333 lines
8.8 KiB
Text
" Leader
|
||
let mapleader = " "
|
||
|
||
set nocompatible " Use Vim settings, rather then Vi settings
|
||
set backupcopy=yes
|
||
set backspace=2
|
||
set autoread
|
||
set autoindent
|
||
set clipboard=unnamed
|
||
set directory-=.
|
||
set encoding=utf-8
|
||
set ignorecase
|
||
set list
|
||
set listchars=tab:▸\ ,trail:▫
|
||
set history=50
|
||
set ruler " show the cursor position all the time
|
||
set showcmd " display incomplete commands
|
||
set incsearch " do incremental searching
|
||
set laststatus=2 " Always display the status line
|
||
set smartcase
|
||
set wildignore=log/**,node_submodules/**,target/**,tmp/**,*.rbc
|
||
set wildmenu
|
||
set hlsearch
|
||
set notimeout
|
||
set ttimeout
|
||
set ttimeoutlen=50
|
||
set noshowmode
|
||
|
||
|
||
set mouse=a
|
||
|
||
" Switch syntax highlighting on, when the terminal has colors
|
||
" Also switch on highlighting the last used search pattern.
|
||
if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on")
|
||
syntax on
|
||
endif
|
||
|
||
" Declare bundles are handled via Vundle
|
||
"set rtp+=~/.vim/bundle/vundle/
|
||
"call vundle#rc()
|
||
|
||
"let g:vundle_default_git_proto = 'http'
|
||
"let g:netrw_home=$HOME
|
||
|
||
" Let Vundle manage Vundle
|
||
"Bundle 'gmarik/vundle'
|
||
|
||
call plug#begin('~/.vim/bundle')
|
||
|
||
" Define bundles via Github repos
|
||
Plug 'kchmck/vim-coffee-script'
|
||
"Plug 'nanki/treetop.vim'
|
||
"Plug 'timcharper/textile.vim'
|
||
Plug 'tpope/vim-cucumber'
|
||
Plug 'tpope/vim-endwise'
|
||
Plug 'tpope/vim-fugitive'
|
||
"Plug 'tpope/vim-haml'
|
||
Plug 'tpope/vim-markdown'
|
||
Plug 'tpope/vim-rails'
|
||
Plug 'tpope/vim-surround'
|
||
Plug 'tpope/vim-speeddating'
|
||
Plug 'tpope/vim-bundler'
|
||
Plug 'raysrashmi/vim-matchit'
|
||
"Plug 'vim-scripts/ctags.vim'
|
||
Plug 'vim-scripts/greplace.vim'
|
||
"Plug 'vim-scripts/tComment'
|
||
"Plug 'vim-scripts/taglist.vim'
|
||
Plug 'xenoterracide/html.vim'
|
||
Plug 'altercation/vim-colors-solarized'
|
||
Plug 'lifepillar/vim-solarized8'
|
||
Plug 'scrooloose/syntastic'
|
||
Plug 'rstacruz/sparkup'
|
||
Plug 'scrooloose/nerdtree'
|
||
Plug 'kien/ctrlp.vim'
|
||
Plug 'airblade/vim-gitgutter'
|
||
Plug 'juvenn/mustache.vim'
|
||
Plug 'nono/vim-handlebars'
|
||
Plug 'austintaylor/vim-indentobject'
|
||
Plug 'pangloss/vim-javascript'
|
||
Plug 'rmanalan/jshint.vim'
|
||
Plug 'vim-scripts/kwbdi.vim'
|
||
Plug 'tpope/vim-pastie'
|
||
Plug 'uarun/vim-protobuf'
|
||
Plug 'tpope/vim-ragtag'
|
||
Plug 'tpope/vim-repeat'
|
||
Plug 'mileszs/ack.vim'
|
||
Plug 'vim-ruby/vim-ruby'
|
||
Plug 'msanders/snipmate.vim'
|
||
Plug 'majutsushi/tagbar'
|
||
Plug 'leafgarland/typescript-vim'
|
||
Plug 'tpope/vim-unimpaired'
|
||
Plug 'nathanaelkane/vim-indent-guides'
|
||
Plug 'slim-template/vim-slim'
|
||
Plug 'vim-airline/vim-airline'
|
||
Plug 'vim-airline/vim-airline-themes'
|
||
Plug 'tmux-plugins/vim-tmux-focus-events'
|
||
Plug 'tmux-plugins/vim-tmux'
|
||
" Plug 'christoomey/vim-tmux-navigator'
|
||
Plug 'joshdick/onedark.vim'
|
||
Plug 'sheerun/vim-polyglot'
|
||
Plug 'dense-analysis/ale'
|
||
packadd! dracula_pro
|
||
|
||
call plug#end()
|
||
|
||
filetype plugin indent on
|
||
|
||
augroup vimrcEx
|
||
au!
|
||
|
||
" For all text files set 'textwidth' to 78 characters.
|
||
autocmd FileType text setlocal textwidth=78
|
||
|
||
" When editing a file, always jump to the last known cursor position.
|
||
" Don't do it when the position is invalid or when inside an event handler
|
||
" (happens when dropping a file on gvim).
|
||
autocmd BufReadPost *
|
||
\ if line("'\"") > 0 && line("'\"") <= line("$") |
|
||
\ exe "normal g`\"" |
|
||
\ endif
|
||
augroup END
|
||
|
||
" Softtabs, 2 spaces
|
||
set tabstop=2
|
||
set shiftwidth=2
|
||
set expandtab
|
||
|
||
" Display extra whitespace
|
||
set list listchars=tab:»·,trail:·
|
||
|
||
" Local config
|
||
if filereadable(".vimrc.local")
|
||
source .vimrc.local
|
||
endif
|
||
|
||
" Use Ack instead of Grep when available
|
||
if executable("ack")
|
||
set grepprg=ack\ -H\ --nogroup\ --nocolor
|
||
endif
|
||
|
||
" Color scheme
|
||
"
|
||
if has('gui_running')
|
||
set background=light
|
||
else
|
||
set background=dark
|
||
endif
|
||
set term=xterm-256color
|
||
if exists('+termguicolors')
|
||
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
|
||
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
|
||
set termguicolors
|
||
endif
|
||
"highlight NonText guibg=#060606
|
||
"highlight Folded guibg=#0A0A0A guifg=#9090D0
|
||
"highlight SignColumn ctermbg=8
|
||
|
||
let g:indent_guides_auto_colors = 0
|
||
autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd ctermbg=10
|
||
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven ctermbg=0
|
||
|
||
" Numbers
|
||
set number
|
||
set numberwidth=5
|
||
|
||
" Snippets are activated by Shift+Tab
|
||
let g:snippetsEmu_key = "<S-Tab>"
|
||
|
||
" Tab completion
|
||
" will insert tab at beginning of line,
|
||
" will use completion if not at beginning
|
||
set wildmode=list:longest,list:full
|
||
set complete=.,w,t
|
||
function! InsertTabWrapper()
|
||
let col = col('.') - 1
|
||
if !col || getline('.')[col - 1] !~ '\k'
|
||
return "\<tab>"
|
||
else
|
||
return "\<c-p>"
|
||
endif
|
||
endfunction
|
||
inoremap <Tab> <c-r>=InsertTabWrapper()<cr>
|
||
|
||
" Exclude Javascript files in :Rtags via rails.vim due to warnings when parsing
|
||
let g:Tlist_Ctags_Cmd="ctags --exclude='*.js'"
|
||
|
||
" Index ctags from any project, including those outside Rails
|
||
map <Leader>ct :!ctags -R .<CR>
|
||
|
||
" Cucumber navigation commands
|
||
autocmd User Rails Rnavcommand step features/step_definitions -glob=**/* -suffix=_steps.rb
|
||
autocmd User Rails Rnavcommand config config -glob=**/* -suffix=.rb -default=routes
|
||
" :Cuc my text (no quotes) -> runs cucumber scenarios containing "my text"
|
||
command! -nargs=+ Cuc :!ack --no-heading --no-break <q-args> | cut -d':' -f1,2 | xargs bundle exec cucumber --no-color
|
||
|
||
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
|
||
|
||
" Switch between the last two files
|
||
nnoremap <leader><leader> <c-^>
|
||
|
||
" Treat <li> and <p> tags like the block tags they are
|
||
let g:html_indent_tags = 'li\|p'
|
||
|
||
" Markdown files end in .md
|
||
au BufRead,BufNewFile *.md set filetype=markdown
|
||
|
||
" Enable spellchecking for Markdown
|
||
au BufRead,BufNewFile *.md setlocal spell
|
||
|
||
" Automatically wrap at 80 characters for Markdown
|
||
au BufRead,BufNewFile *.md setlocal textwidth=80
|
||
|
||
" rspec mappings
|
||
map <Leader>t :call RunCurrentSpecFile()<CR>
|
||
map <Leader>s :call RunNearestSpec()<CR>
|
||
map <Leader>l :call RunLastSpec()<CR>
|
||
|
||
function! RunCurrentSpecFile()
|
||
if InSpecFile()
|
||
let l:command = "s " . @% . " -f documentation"
|
||
call SetLastSpecCommand(l:command)
|
||
call RunSpecs(l:command)
|
||
endif
|
||
endfunction
|
||
|
||
function! RunNearestSpec()
|
||
if InSpecFile()
|
||
let l:command = "s " . @% . " -l " . line(".") . " -f documentation"
|
||
call SetLastSpecCommand(l:command)
|
||
call RunSpecs(l:command)
|
||
endif
|
||
endfunction
|
||
|
||
function! RunLastSpec()
|
||
if exists("t:last_spec_command")
|
||
call RunSpecs(t:last_spec_command)
|
||
endif
|
||
endfunction
|
||
|
||
function! InSpecFile()
|
||
return match(expand("%"), "_spec.rb$") != -1
|
||
endfunction
|
||
|
||
function! SetLastSpecCommand(command)
|
||
let t:last_spec_command = a:command
|
||
endfunction
|
||
|
||
function! RunSpecs(command)
|
||
execute ":w\|!clear && echo " . a:command . " && echo && " . a:command
|
||
endfunction
|
||
|
||
nmap <leader>I :IndentGuidesToggle<CR><CR>
|
||
nmap <leader>d :NERDTreeToggle<CR>
|
||
nmap <leader>f :NERDTreeFind<CR>
|
||
nmap <leader>b :CtrlPBuffer<CR>
|
||
nmap <leader>t :CtrlP<CR>
|
||
nmap <leader>T :CtrlPClearCache<CR>:CtrlP<CR><CR>
|
||
nmap <leader>] :TagbarToggle<CR>
|
||
nmap <leader><space> :call Strip_trailing()<CR>
|
||
nmap <leader>g :GitGutterToggle<CR>
|
||
nmap <leader>c <Plug>Kwbd
|
||
|
||
let g:ctrlp_match_window = 'order:ttb,max:20'
|
||
let g:NERDSpaceDelims=1
|
||
let g:gitgutter_enabled = 1
|
||
let g:gitgutter_highlight_lines = 0
|
||
let g:gitgutter_realtime = 4000
|
||
set signcolumn=yes
|
||
let g:airline_symbols = {}
|
||
let g:airline_skip_empty_sections = 1
|
||
let g:airline_left_sep = ''
|
||
let g:airline_left_alt_sep = ''
|
||
let g:airline_right_sep = ''
|
||
let g:airline_right_alt_sep = ''
|
||
let g:airline_symbols.branch = ''
|
||
let g:airline_symbols.readonly = ''
|
||
let g:airline_symbols.linenr = '☰ '
|
||
let g:airline_symbols.maxlinenr = ''
|
||
let g:airline_symbols.whitespace = '☲ '
|
||
let g:airline_symbols.notexists = ' Ɇ'
|
||
let g:airline_symbols.dirty = ' '
|
||
let g:airline_symbols.crypt = ''
|
||
let g:airline_theme = 'simple'
|
||
let g:solarized_termtrans = 1
|
||
let g:solarized_extra_hi_groups = 1
|
||
let g:indent_guides_guide_size = 1
|
||
let g:indent_guides_enable_on_vim_startup = 1
|
||
let g:indent_guides_default_mapping = 0
|
||
let g:indent_guides_exclude_filetypes = ['help', 'nerdtree']
|
||
|
||
let g:dracula_colorterm = 1
|
||
let g:dracula_bold = 1
|
||
let g:dracula_italic = 1
|
||
let g:dracula_underline = 1
|
||
let g:dracula_undercurl = 1
|
||
let g:dracula_inverse = 1
|
||
|
||
set t_ku=OA
|
||
set t_kd=OB
|
||
set t_kr=OC
|
||
set t_kl=OD
|
||
|
||
" Use The Silver Searcher https://github.com/ggreer/the_silver_searcher
|
||
if executable('ag')
|
||
let g:ackprg = 'ag --nogroup --column'
|
||
|
||
" Use Ag over Grep
|
||
set grepprg=ag\ --nogroup\ --nocolor
|
||
|
||
" Use ag in CtrlP for listing files. Lightning fast and respects .gitignore
|
||
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
|
||
endif
|
||
|
||
" thanks to http://vimcasts.org/e/4
|
||
function! Strip_trailing()
|
||
let previous_search=@/
|
||
let previous_cursor_line=line('.')
|
||
let previous_cursor_column=col('.')
|
||
%s/\s\+$//e
|
||
let @/=previous_search
|
||
call cursor(previous_cursor_line, previous_cursor_column)
|
||
endfunction
|
||
|
||
" strip trailing whitespace on Ruby buffer saves
|
||
augroup whitespace
|
||
autocmd BufWritePre *.rb call Strip_trailing()
|
||
augroup END
|
||
|
||
if (has("nvim"))
|
||
"For Neovim 0.1.3 and 0.1.4 < https://github.com/neovim/neovim/pull/2198 >
|
||
let $NVIM_TUI_ENABLE_TRUE_COLOR=1
|
||
endif
|
||
colorscheme dracula_pro_van_helsing
|