dotfiles/dot_vimrc

334 lines
8.8 KiB
Text
Raw Permalink Normal View History

2022-01-27 16:00:02 +00:00
" 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