summaryrefslogtreecommitdiff
path: root/init.vim
blob: ae4cd2c28586cb68d02348de814b81140ea46a0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
function! BuildComposer(info)
  if a:info.status != 'unchanged' || a:info.force
    if has('nvim')
      !cargo build --release
    else
      !cargo build --release --no-default-features --features json-rpc
    endif
  endif
endfunction

if (has("termguicolors"))
 set termguicolors
endif

call plug#begin('~/.local/share/nvim/plugged')

" Pick a theme, any theme, really
Plug 'danilo-augusto/vim-afterglow'
Plug 'altercation/vim-colors-solarized'
Plug 'flazz/vim-colorschemes'
Plug 'morhetz/gruvbox'
Plug 'mhartington/oceanic-next'
Plug 'joshdick/onedark.vim'

" Syntax support
Plug 'euclio/vim-markdown-composer', { 'do': function('BuildComposer') }
Plug 'elixir-editors/vim-elixir'
Plug 'jason0x43/vim-js-indent'
Plug 'leafgarland/typescript-vim'
Plug 'peitalin/vim-jsx-typescript'
Plug 'mustache/vim-mustache-handlebars'
Plug 'mxw/vim-jsx'
Plug 'pangloss/vim-javascript'
Plug 'rust-lang/rust.vim'
Plug 'vim-ruby/vim-ruby'
Plug 'styled-components/vim-styled-components', { 'branch': 'main' }
Plug 'kchmck/vim-coffee-script'

" Extensions
" Chuch of tpope
Plug 'tpope/vim-endwise'
Plug 'tpope/vim-dispatch'
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-projectionist'
Plug 'tpope/vim-rails'

Plug 'thoughtbot/vim-rspec'
Plug 'sjl/splice.vim'
Plug 'srstevenson/vim-picker'
Plug 'preservim/nerdtree'
Plug 'francoiscabrol/ranger.vim'
Plug 'wellle/targets.vim'
Plug 'bkad/CamelCaseMotion'
Plug 'ConradIrwin/vim-bracketed-paste'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'airblade/vim-gitgutter'
Plug 'mileszs/ack.vim'
Plug 'preservim/tagbar'

call plug#end()

" General config
syntax enable
if $VIM_BACKGROUND == 'light'
  set background=light
endif
if $VIM_BACKGROUND == 'dark'
  set background=dark
endif
set shell=$SHELL
set bs=2
set tabstop=2
set foldmethod=syntax
set foldlevelstart=99
set expandtab
set shiftwidth=2
set softtabstop=2
set ai
set number
set relativenumber
set mouse=a
filetype plugin on
runtime macros/matchit.vim

set grepprg=rg\ --vimgrep\ --no-heading
set grepformat=%f:%l:%c:%m,%f:%l:%m
let g:ackprg = 'rg --vimgrep --no-heading'

" Shorthand commands
cnoreabbrev Spec Dispatch bundle exec rspec %

" Key bindings
let mapleader = "\<Space>"
nnoremap ; :
nnoremap : ;

let g:rspec_command = "Dispatch bundle exec rspec {spec}"

" Roll yur own tpope
nnoremap <Leader>} :set spell<CR>
nnoremap <Leader>{ :set spell&<CR>
nnoremap <Leader>] :cnext<CR>
nnoremap <Leader>[ :cprev<CR>
nnoremap <Leader>r :Ranger<CR>
nnoremap <Leader>n :NERDTree %<CR>
nnoremap <Leader>s :w <bar> :call RunNearestSpec()<CR>
nnoremap <Leader>ss :w <bar> :call RunCurrentSpecFile()<CR>
nnoremap <Leader>b :Git blame<cr>
nnoremap <Leader>g :G<cr>
nnoremap <Leader>c :Git commit<cr>
nnoremap <Leader>/ :noh<cr>
nnoremap <Leader>x :PickerSplit<cr>
nnoremap <Leader>p :PickerEdit<cr>
nnoremap <Leader>t :PickerTabedit<cr>
nnoremap <Leader>v :PickerVsplit<cr>
nnoremap <Leader>u :PickerTag<cr>
nnoremap <Leader>w :TagbarToggle<cr>
nnoremap <leader>h <C-w>h
nnoremap <leader>j <C-w>j
nnoremap <leader>k <C-w>k
nnoremap <leader>l <C-w>l
nnoremap <C-w>h 20<C-w><
nnoremap <C-w>l 20<C-w>>
nnoremap <C-w>j 20<C-w>+
nnoremap <C-w>k 20<C-w>-
nnoremap <leader><tab> :tabn<cr>
nnoremap <leader><s-tab> :tabp<cr>

map <silent> w <Plug>CamelCaseMotion_w
map <silent> b <Plug>CamelCaseMotion_b
map <silent> e <Plug>CamelCaseMotion_e
map <silent> ge <Plug>CamelCaseMotion_ge
sunmap w
sunmap b
sunmap e
sunmap ge

let g:picker_custom_find_executable = 'rg'
let g:picker_custom_find_flags = '. -l'

" Theme
colorscheme $VIM_THEME
let g:airline_powerline_fonts = 1
let g:airline_theme=$VIM_AIRLINE_THEME
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#formatter = 'unique_tail'
let g:airline#extensions#tabline#show_buffers = 0
let g:airline#extensions#tabline#show_tab_nr = 0
let g:airline#extensions#tabline#show_tab_type = 0
let g:airline#extensions#tabline#left_sep = ''
let g:airline#extensions#tabline#left_alt_sep = ''
let g:airline#extensions#tabline#right_sep = ''
let g:airline#extensions#tabline#right_alt_sep = ''
let g:airline#extensions#tabline#show_close_button = 0
let g:airline#extensions#tabline#show_splits = 0
let g:airline#extensions#tabline#tab_min_count = 2
let g:airline#extensions#branch#enabled = 0

" Distribute windows when resize happens.
au VimResized * :wincmd =

let g:ctrlp_working_path_mode = 'rw'

augroup jbuilder
  au!
  autocmd BufNewFile,BufRead *.jbuilder set syntax=ruby
augroup END

augroup es
  au!
  autocmd BufNewFile,BufRead *.es6 set syntax=javascript
augroup END

set spelllang=en
autocmd FileType markdown setlocal spell
autocmd FileType gitcommit setlocal spell
autocmd FileType markdown setlocal complete+=kspell
autocmd FileType gitcommit setlocal complete+=kspell