334 lines
8.8 KiB
Text
334 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
|