]> git.r.bdr.sh - rbdr/dotfiles/blame - vimrc
Add vim plug config
[rbdr/dotfiles] / vimrc
CommitLineData
b100af91
BB
1set nocompatible
2
3set number
4set ruler
5syntax on
6
7" Set encoding
8set encoding=utf-8
9
10" Whitespace stuff
11set nowrap
12set tabstop=2
13set shiftwidth=2
14set softtabstop=2
15set expandtab
16set list listchars=tab:\ \ ,trail:ยท
17
18" Searching
19set hlsearch
20set incsearch
21set ignorecase
22set smartcase
23
24" Tab completion
25set wildmode=list:longest,list:full
26set wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,vendor/gems/*
27
28" Status bar
29set laststatus=2
30
b100af91
BB
31" NERDTree configuration
32let NERDTreeIgnore=['\.pyc$', '\.rbc$', '\~$']
33map <Leader>n :NERDTreeToggle<CR>
34
35" CTags
36map <Leader>rt :!ctags --extra=+f -R *<CR><CR>
37map <C-\> :tnext<CR>
38
39" Remember last location in file
40if has("autocmd")
41 au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
42 \| exe "normal g'\"" | endif
43endif
44
45function s:setupWrapping()
46 set wrap
47 set wrapmargin=2
48 set textwidth=72
49endfunction
50
51function s:setupMarkup()
52 call s:setupWrapping()
53 map <buffer> <Leader>p :Hammer<CR>
54endfunction
55
56" make uses real tabs
57au FileType make set noexpandtab
58
59" Thorfile, Rakefile, Vagrantfile and Gemfile are Ruby
60au BufRead,BufNewFile {Gemfile,Rakefile,Vagrantfile,Thorfile,config.ru} set ft=ruby
61
62" md, markdown, and mk are markdown and define buffer-local preview
63au BufRead,BufNewFile *.{md,markdown,mdown,mkd,mkdn} call s:setupMarkup()
64
65" add json syntax highlighting
66au BufNewFile,BufRead *.json set ft=javascript
67
68au BufRead,BufNewFile *.txt call s:setupWrapping()
69
70" make Python follow PEP8 ( http://www.python.org/dev/peps/pep-0008/ )
71au FileType python set softtabstop=4 tabstop=4 shiftwidth=4 textwidth=79
72
6e876679
BB
73" snes syntax highlighting
74au BufNewFile,BufRead *.asm,*.s set filetype=snes"
75
b100af91
BB
76" allow backspacing over everything in insert mode
77set backspace=indent,eol,start
78
79" load the plugin and indent settings for the detected filetype
80filetype plugin indent on
32081fee 81filetype plugin on
d9b5e620 82set omnifunc=syntaxcomplete#Complete
b100af91
BB
83
84" Opens an edit command with the path of the currently edited file filled in
85" Normal mode: <Leader>e
86map <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR>
87
88" Opens a tab edit command with the path of the currently edited file filled in
89" Normal mode: <Leader>t
90map <Leader>te :tabe <C-R>=expand("%:p:h") . "/" <CR>
91
b100af91
BB
92" Unimpaired configuration
93" Bubble single lines
94nmap <C-Up> [e
95nmap <C-Down> ]e
96" Bubble multiple lines
97vmap <C-Up> [egv
98vmap <C-Down> ]egv
99
b100af91
BB
100" gist-vim defaults
101if has("mac")
102 let g:gist_clip_command = 'pbcopy'
103elseif has("unix")
104 let g:gist_clip_command = 'xclip -selection clipboard'
105endif
106let g:gist_detect_filetype = 1
107let g:gist_open_browser_after_post = 1
108
109" Use modeline overrides
110set modeline
111set modelines=10
112
113" Default color scheme
d2114c7b
BB
114set termguicolors
115color rbdr
b100af91
BB
116
117" Directories for swp files
dad27356
BB
118set backupdir=~/.vim/.backup
119set directory=~/.vim/.backup
b100af91
BB
120
121" Turn off jslint errors by default
122let g:JSLintHighlightErrorLine = 0
123
124" MacVIM shift+arrow-keys behavior (required in .vimrc)
125let macvim_hig_shift_movement = 1
126
127" % to bounce from do to end etc.
128runtime! macros/matchit.vim
129
130" Show (partial) command in the status line
131set showcmd
132
133" Include user's local vim config
134if filereadable(expand("~/.vimrc.local"))
135 source ~/.vimrc.local
136endif
137
138" Mapping for TagBar
139nmap <F8> :TagbarToggle<CR>
3a1cd689 140let g:tagbar_ctags_bin="/usr/local/bin/ctags"
b100af91 141
b100af91 142" Color Column
9fbf161b 143let &colorcolumn="80,150"
b100af91 144
b100af91
BB
145" Folding Settings
146set foldmethod=syntax
147set foldnestmax=10
148set nofoldenable
149set foldlevel=1
321ecaca 150
3a1cd689
BB
151" Fix CtrlP root folder and add some ignores
152let g:ctrlp_working_path_mode = 0
07c693d2 153let g:ctrlp_custom_ignore = '\v[\/](\.(git|hg|svn)|node_modules|DS_Store)$'
551714b7 154let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files']
7da00f60
BB
155
156" Relative numbers
b4df7438
BB
157autocmd FocusLost * :set norelativenumber
158autocmd InsertEnter * :set norelativenumber
7da00f60
BB
159autocmd InsertLeave * :set relativenumber
160autocmd CursorMoved * :set relativenumber
161
162function! NumberToggle()
163 if(&relativenumber == 1)
b4df7438 164 set norelativenumber
7da00f60
BB
165 else
166 set relativenumber
167 endif
168endfunction
169
170nnoremap <C-n> :call NumberToggle()<cr>
35771083 171
f9b5f766
BB
172" Dank Mono Italics
173highlight Keyword cterm=italic
c87eeb57
BB
174
175" FZF config
176set rtp+=/usr/local/opt/fzf
177
178" Inserts the path of the currently edited file into a command
179noremap <C-P> :FZF <CR>
180
181" Map colors to vim colors
182let g:fzf_colors =
183\ { 'fg': ['fg', 'Normal'],
184 \ 'bg': ['bg', 'Normal'],
185 \ 'hl': ['fg', 'Comment'],
186 \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
187 \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'],
188 \ 'hl+': ['fg', 'Statement'],
189 \ 'info': ['fg', 'PreProc'],
190 \ 'border': ['fg', 'Ignore'],
191 \ 'prompt': ['fg', 'Conditional'],
192 \ 'pointer': ['fg', 'Exception'],
193 \ 'marker': ['fg', 'Keyword'],
194 \ 'spinner': ['fg', 'Label'],
195 \ 'header': ['fg', 'Comment'] }
d2114c7b
BB
196
197" ALE config
198let g:ale_linters = {'javascript': ['eslint']}
138316b6
BB
199
200" Move things up and down using Ctrl + Shift
201nnoremap <C-S-j> :m .+1<CR>==
202nnoremap <C-S-k> :m .-2<CR>==
203inoremap <C-S-j> <Esc>:m .+1<CR>==gi
204inoremap <C-S-k> <Esc>:m .-2<CR>==gi
205vnoremap <C-S-j> :m '>+1<CR>gv=gv
206vnoremap <C-S-k> :m '<-2<CR>gv=gv
3293278c
BB
207
208" Plug configuration
209call plug#begin('~/.vim/plugged')
210
211"
212" Plugin List
213"
214
215" Syntaxes
216Plug 'rbdr/api-notation.vim'
217Plug 'elzr/vim-json'
218Plug 'mustache/vim-mode'
219Plug 'othree/yajs.vim'
220Plug 'ARM9/snes-syntax-vim'
221Plug 'posva/vim-vue'
222Plug 'leafOfTree/vim-svelte-plugin'
223Plug 'bumaociyuan/vim-swift'
224Plug 'udalov/kotlin-vim'
225
226" Editing
227Plug 'jiangmiao/auto-pairs'
228" Plug 'tpope/vim-endwise.git'
229Plug 'michaeljsmith/vim-indent-object'
230
231" Tools
232Plug 'editorconfig/editorconfig-vim'
233Plug 'w0rp/ale'
234Plug 'vim-scripts/LargeFile'
235Plug 'tpope/vim-fugitive'
236Plug 'milkypostman/vim-togglelist'
237Plug 'jremmen/vim-ripgrep'
238Plug 'lifepillar/vim-mucomplete'
239
240" List ends here. Plugins become visible to Vim after this call.
241call plug#end()