Mercurial > dotfiles.old
annotate vimrc @ 94:c31e63aba1dd
Use better colors for matching parentheses
author | zegervdv <zegervdv@me.com> |
---|---|
date | Thu, 07 Aug 2014 19:25:27 +0200 |
parents | 8278ded5eb8c |
children | 384c853303af |
rev | line source |
---|---|
27 | 1 " vim:fdm=marker |
2 | |
3 " General Settings {{{ | |
0 | 4 set nocompatible |
5 set laststatus=2 | |
6 set noshowmode | |
7 | |
94
c31e63aba1dd
Use better colors for matching parentheses
zegervdv <zegervdv@me.com>
parents:
93
diff
changeset
|
8 let g:pathogen_disabled = ['ack'] |
0 | 9 execute pathogen#infect() |
10 | |
11 set backspace=2 | |
12 set autowrite | |
13 | |
14 set vb | |
15 set guioptions-=r | |
16 set guioptions-=l | |
17 set guioptions-=R | |
18 set guioptions-=L | |
19 | |
20 syntax on | |
21 set expandtab | |
22 set number | |
23 set ruler | |
24 set nocursorline | |
25 set showmatch | |
26 set title | |
27 set wrap | |
28 set wrapmargin=2 | |
29 set linebreak | |
30 set lbr | |
31 set tabstop=2 shiftwidth=2 | |
21
bf5c5093bad9
Add Base16-Ocean-Dark colorscheme
zegervdv <zegervdv@me.com>
parents:
19
diff
changeset
|
32 if has("gui_running") |
bf5c5093bad9
Add Base16-Ocean-Dark colorscheme
zegervdv <zegervdv@me.com>
parents:
19
diff
changeset
|
33 set background=dark |
35 | 34 " color base16-ocean |
22 | 35 color hybrid |
21
bf5c5093bad9
Add Base16-Ocean-Dark colorscheme
zegervdv <zegervdv@me.com>
parents:
19
diff
changeset
|
36 else |
bf5c5093bad9
Add Base16-Ocean-Dark colorscheme
zegervdv <zegervdv@me.com>
parents:
19
diff
changeset
|
37 color hybrid |
bf5c5093bad9
Add Base16-Ocean-Dark colorscheme
zegervdv <zegervdv@me.com>
parents:
19
diff
changeset
|
38 endif |
0 | 39 set guifont=Inconsolata\ for\ Powerline:h12 |
40 set autowrite | |
41 set hidden | |
42 set hlsearch | |
43 set incsearch | |
44 set ignorecase | |
32
2da8d8daa033
Add remaps to vim and aliases to zsh
zegervdv <zegervdv@me.com>
parents:
29
diff
changeset
|
45 set gdefault |
0 | 46 set smartcase |
47 set smartindent | |
48 set autoindent | |
49 set scrolloff=4 | |
50 set textwidth=80 | |
51 | |
52 set history=100 | |
53 set wildmenu | |
19 | 54 set wildmode=full |
79 | 55 set ttyfast |
85
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
56 set lazyredraw |
0 | 57 |
58 set diffopt+=iwhite | |
59 | |
79 | 60 set tags=.git/tags |
61 | |
0 | 62 set formatoptions= |
63 set formatoptions+=c " Format comments | |
64 set formatoptions+=r " Continue comments by default | |
65 set formatoptions+=o " Make comment when using o or O from comment line | |
66 set formatoptions+=q " Format comments with gq | |
67 set formatoptions+=n " Recognize numbered lists | |
68 set formatoptions+=2 " Use indent from 2nd line of a paragraph | |
69 set formatoptions+=l " Don't break lines that are already long | |
70 set formatoptions+=1 " Break before 1-letter words | |
71 | |
92 | 72 set complete+=kspell |
73 | |
0 | 74 set splitright |
75 set virtualedit=block | |
76 set conceallevel=0 | |
77 | |
78 set cryptmethod=blowfish | |
79 | |
80 filetype plugin indent on | |
81 autocmd FileType ruby set tabstop=2|set shiftwidth=2 | |
82 | |
83 set clipboard=unnamed | |
84 | |
32
2da8d8daa033
Add remaps to vim and aliases to zsh
zegervdv <zegervdv@me.com>
parents:
29
diff
changeset
|
85 set undofile |
16 | 86 set viminfo='10,\"100,:20,%,n~/.viminfo |
32
2da8d8daa033
Add remaps to vim and aliases to zsh
zegervdv <zegervdv@me.com>
parents:
29
diff
changeset
|
87 |
80 | 88 set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.o,*.bin,*.elf,*.hex |
89 | |
32
2da8d8daa033
Add remaps to vim and aliases to zsh
zegervdv <zegervdv@me.com>
parents:
29
diff
changeset
|
90 " set list |
91 | 91 " set listchars=tab:▸\ ,eol:¬ |
27 | 92 " }}} |
93 " Custom remaps and tricks {{{ | |
16 | 94 " When editing a file, always jump to the last known cursor position. |
95 " Don't do it for commit messages, when the position is invalid, or when | |
96 " inside an event handler (happens when dropping a file on gvim). | |
97 autocmd BufReadPost * | |
98 \ if &ft != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line("$") | | |
99 \ exe "normal g`\"" | | |
100 \ endif | |
0 | 101 |
40 | 102 nnoremap <F5> :buffers<CR>:buffer<Space> |
103 | |
104 " Set leader to , | |
105 let mapleader = "," | |
106 | |
0 | 107 " See long lines as line breaks |
108 map j gj | |
109 map k gk | |
110 | |
111 " remap tag-search to better place | |
85
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
112 " nmap <C-$> <C-]> |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
113 function! JumpToTagInSplit() |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
114 execute "normal! \<c-w>v\<c-]>mzzMzvzz15\<c-e>" |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
115 execute "keepjumps normal! `z" |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
116 Pulse |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
117 endfunction |
94
c31e63aba1dd
Use better colors for matching parentheses
zegervdv <zegervdv@me.com>
parents:
93
diff
changeset
|
118 nnoremap <C-$> :silent! call JumpToTagInSplit()<CR> |
0 | 119 |
120 " Jump to end of line in insert mode | |
33 | 121 inoremap <C-a> <C-o>I |
0 | 122 inoremap <C-e> <C-o>A |
123 | |
33 | 124 nnoremap <C-a> ^ |
125 nnoremap <C-e> $ | |
126 | |
92 | 127 nnoremap <C-s> <C-e> |
128 | |
33 | 129 nnoremap + <C-a> |
130 | |
131 " Jump out of inner bracket | |
132 inoremap <C-f> <ESC>%%a | |
0 | 133 |
4
050d4d8c6796
Vim: use double space to alternate files
zegervdv <zegervdv@me.com>
parents:
3
diff
changeset
|
134 " Switch between the last two files |
050d4d8c6796
Vim: use double space to alternate files
zegervdv <zegervdv@me.com>
parents:
3
diff
changeset
|
135 nnoremap <SPACE><SPACE> <C-^> |
050d4d8c6796
Vim: use double space to alternate files
zegervdv <zegervdv@me.com>
parents:
3
diff
changeset
|
136 |
0 | 137 " Very Magic search patterns |
138 nmap / /\v | |
139 cmap s/ s/\v | |
140 | |
85
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
141 " Keep search matches in the middle of the window. |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
142 nnoremap n nzzzv |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
143 nnoremap N Nzzzv |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
144 |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
145 " Show local search results in quickfix |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
146 nnoremap <silent> <leader>/ :execute 'vimgrep /'.@/.'/g %'<CR>:copen<CR> |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
147 nnoremap <silent> <leader>? :Ag <cword><CR> |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
148 " nnoremap <silent> <leader>? :execute "Ag! '" . substitute(substitute(substitute(@/, "\\\\<", "\\\\b", ""), "\\\\>", "\\\\b", ""), "\\\\v", "","") . "'"<CR> |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
149 |
40 | 150 " Clear highlight |
151 nnoremap <silent> <leader>n :nohlsearch<CR> | |
152 | |
0 | 153 inoremap £ \ |
154 | |
32
2da8d8daa033
Add remaps to vim and aliases to zsh
zegervdv <zegervdv@me.com>
parents:
29
diff
changeset
|
155 nnoremap <TAB> % |
2da8d8daa033
Add remaps to vim and aliases to zsh
zegervdv <zegervdv@me.com>
parents:
29
diff
changeset
|
156 vnoremap <TAB> % |
0 | 157 |
85
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
158 " Move between tabs |
82 | 159 nnoremap <S-j> :tabprevious<CR> |
160 nnoremap <S-k> :tabnext<CR> | |
161 nnoremap <S-h> :tabfirst<CR> | |
162 nnoremap <S-l> :tablast<CR> | |
163 nnoremap <S-t> :tabnew<CR> | |
34
3ed98613040a
Add mapping to switch between tabs in vim
zegervdv <zegervdv@me.com>
parents:
33
diff
changeset
|
164 inoremap <C-S-TAB> <ESC>:tabprevious<CR> |
3ed98613040a
Add mapping to switch between tabs in vim
zegervdv <zegervdv@me.com>
parents:
33
diff
changeset
|
165 inoremap <C-TAB> <ESC>:tabnext<CR> |
3ed98613040a
Add mapping to switch between tabs in vim
zegervdv <zegervdv@me.com>
parents:
33
diff
changeset
|
166 |
33 | 167 " highlight last inserted text |
168 nnoremap gV `[v`] | |
169 | |
170 " Briefly change colour of last highlight | |
94
c31e63aba1dd
Use better colors for matching parentheses
zegervdv <zegervdv@me.com>
parents:
93
diff
changeset
|
171 " nnoremap <silent> n n:call HLNext(0.4)<cr> |
c31e63aba1dd
Use better colors for matching parentheses
zegervdv <zegervdv@me.com>
parents:
93
diff
changeset
|
172 " nnoremap <silent> N N:call HLNext(0.4)<cr> |
0 | 173 |
174 function! HLNext (blinktime) | |
175 highlight WhiteOnRed ctermfg=white ctermbg=red guifg=white guibg=red | |
176 let [bufnum, lnum, col, off] = getpos('.') | |
177 let matchlen = strlen(matchstr(strpart(getline('.'),col-1),@/)) | |
178 let target_pat = '\c\%#'.@/ | |
179 let ring = matchadd('WhiteOnRed', target_pat, 101) | |
180 redraw | |
181 exec 'sleep ' . float2nr(a:blinktime * 1000) . 'm' | |
182 call matchdelete(ring) | |
183 redraw | |
184 endfunction | |
185 | |
94
c31e63aba1dd
Use better colors for matching parentheses
zegervdv <zegervdv@me.com>
parents:
93
diff
changeset
|
186 " Highlight matching parenthesis in different color so I don't mess up |
c31e63aba1dd
Use better colors for matching parentheses
zegervdv <zegervdv@me.com>
parents:
93
diff
changeset
|
187 hi MatchParen cterm=underline ctermbg=none ctermfg=white gui=underline guifg=white |
c31e63aba1dd
Use better colors for matching parentheses
zegervdv <zegervdv@me.com>
parents:
93
diff
changeset
|
188 |
85
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
189 " Highlight VCS conflict markers |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
190 match ErrorMsg '^\(<\|=\|>\)\{7\}\([^=].\+\)\?$' |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
191 |
0 | 192 " Swap v and CTRL-V |
193 nnoremap v <C-V> | |
194 nnoremap <C-V> v | |
195 | |
196 vnoremap v <C-V> | |
197 vnoremap <C-V> v | |
198 | |
199 " Use backspace as delete in visual mode | |
200 vmap <BS> x | |
201 | |
202 " Keep selection when shifting | |
203 vmap <expr> > KeepVisualSelection(">") | |
204 vmap <expr> < KeepVisualSelection("<") | |
205 | |
206 function! KeepVisualSelection(cmd) | |
207 set nosmartindent | |
208 if mode() ==# "V" | |
209 return a:cmd . ":set smartindent\<CR>gv" | |
210 else | |
211 return a:cmd . ":set smartindent\<CR>" | |
212 endif | |
213 endfunction | |
214 | |
215 let g:indent_guides_auto_colors = 0 | |
216 let g:indent_guides_guide_size = 1 | |
217 highlight IndentGuidesEven guibg=background | |
218 highlight IndentGuidesOdd guibg='#282a2e' | |
219 | |
42 | 220 au FileType c setl foldmethod=syntax |
221 | |
85
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
222 au VimResized * exe "normal! \<c-w>=" |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
223 |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
224 cnoremap <c-a> <home> |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
225 cnoremap <c-e> <end> |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
226 |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
227 " Swap backticks and quotes |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
228 nnoremap ` ' |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
229 nnoremap ' ` |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
230 |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
231 " Note that this will overwrite the contents of the z mark. I never use it, but |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
232 " if you do you'll probably want to use another mark. |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
233 inoremap <C-u> <esc>mzgUiw`za |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
234 |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
235 nnoremap <leader>ev :vsplit $MYVIMRC<cr> |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
236 |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
237 function! MyFoldText() " {{{ |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
238 let line = getline(v:foldstart) |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
239 |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
240 let nucolwidth = &fdc + &number * &numberwidth |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
241 let windowwidth = winwidth(0) - nucolwidth - 3 |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
242 let foldedlinecount = v:foldend - v:foldstart |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
243 |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
244 " expand tabs into spaces |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
245 let onetab = strpart(' ', 0, &tabstop) |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
246 let line = substitute(line, '\t', onetab, 'g') |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
247 |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
248 let line = strpart(line, 0, windowwidth - 2 -len(foldedlinecount)) |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
249 let fillcharcount = windowwidth - len(line) - len(foldedlinecount) |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
250 return line . '…' . repeat(" ",fillcharcount) . foldedlinecount . '…' . ' ' |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
251 endfunction " }}} |
8a5464ec3c29
Add vim mappings from https://bitbucket.org/sjl/dotfiles
zegervdv <zegervdv@me.com>
parents:
82
diff
changeset
|
252 set foldtext=MyFoldText() |
42 | 253 |
87 | 254 " Next and Last {{{ |
255 " | |
256 " Motion for "next/last object". "Last" here means "previous", not "final". | |
257 " Unfortunately the "p" motion was already taken for paragraphs. | |
258 " | |
259 " Next acts on the next object of the given type, last acts on the previous | |
260 " object of the given type. These don't necessarily have to be in the current | |
261 " line. | |
262 " | |
263 " Currently works for (, [, {, and their shortcuts b, r, B. | |
264 " | |
265 " Next kind of works for ' and " as long as there are no escaped versions of | |
266 " them in the string (TODO: fix that). Last is currently broken for quotes | |
267 " (TODO: fix that). | |
268 " | |
269 " Some examples (C marks cursor positions, V means visually selected): | |
270 " | |
271 " din' -> delete in next single quotes foo = bar('spam') | |
272 " C | |
273 " foo = bar('') | |
274 " C | |
275 " | |
276 " canb -> change around next parens foo = bar('spam') | |
277 " C | |
278 " foo = bar | |
279 " C | |
280 " | |
281 " vin" -> select inside next double quotes print "hello ", name | |
282 " C | |
283 " print "hello ", name | |
284 " VVVVVV | |
285 | |
286 onoremap an :<c-u>call <SID>NextTextObject('a', '/')<cr> | |
287 xnoremap an :<c-u>call <SID>NextTextObject('a', '/')<cr> | |
288 onoremap in :<c-u>call <SID>NextTextObject('i', '/')<cr> | |
289 xnoremap in :<c-u>call <SID>NextTextObject('i', '/')<cr> | |
290 | |
291 onoremap al :<c-u>call <SID>NextTextObject('a', '?')<cr> | |
292 xnoremap al :<c-u>call <SID>NextTextObject('a', '?')<cr> | |
293 onoremap il :<c-u>call <SID>NextTextObject('i', '?')<cr> | |
294 xnoremap il :<c-u>call <SID>NextTextObject('i', '?')<cr> | |
295 | |
296 | |
297 function! s:NextTextObject(motion, dir) | |
298 let c = nr2char(getchar()) | |
299 let d = '' | |
300 | |
301 if c ==# "b" || c ==# "(" || c ==# ")" | |
302 let c = "(" | |
303 elseif c ==# "B" || c ==# "{" || c ==# "}" | |
304 let c = "{" | |
305 elseif c ==# "r" || c ==# "[" || c ==# "]" | |
306 let c = "[" | |
307 elseif c ==# "'" | |
308 let c = "'" | |
309 elseif c ==# '"' | |
310 let c = '"' | |
311 else | |
312 return | |
313 endif | |
314 | |
315 " Find the next opening-whatever. | |
316 execute "normal! " . a:dir . c . "\<cr>" | |
317 | |
318 if a:motion ==# 'a' | |
319 " If we're doing an 'around' method, we just need to select around it | |
320 " and we can bail out to Vim. | |
321 execute "normal! va" . c | |
322 else | |
323 " Otherwise we're looking at an 'inside' motion. Unfortunately these | |
324 " get tricky when you're dealing with an empty set of delimiters because | |
325 " Vim does the wrong thing when you say vi(. | |
326 | |
327 let open = '' | |
328 let close = '' | |
329 | |
330 if c ==# "(" | |
331 let open = "(" | |
332 let close = ")" | |
333 elseif c ==# "{" | |
334 let open = "{" | |
335 let close = "}" | |
336 elseif c ==# "[" | |
337 let open = "\\[" | |
338 let close = "\\]" | |
339 elseif c ==# "'" | |
340 let open = "'" | |
341 let close = "'" | |
342 elseif c ==# '"' | |
343 let open = '"' | |
344 let close = '"' | |
345 endif | |
346 | |
347 " We'll start at the current delimiter. | |
348 let start_pos = getpos('.') | |
349 let start_l = start_pos[1] | |
350 let start_c = start_pos[2] | |
351 | |
352 " Then we'll find it's matching end delimiter. | |
353 if c ==# "'" || c ==# '"' | |
354 " searchpairpos() doesn't work for quotes, because fuck me. | |
355 let end_pos = searchpos(open) | |
356 else | |
357 let end_pos = searchpairpos(open, '', close) | |
358 endif | |
359 | |
360 let end_l = end_pos[0] | |
361 let end_c = end_pos[1] | |
362 | |
363 call setpos('.', start_pos) | |
364 | |
365 if start_l == end_l && start_c == (end_c - 1) | |
366 " We're in an empty set of delimiters. We'll append an "x" | |
367 " character and select that so most Vim commands will do something | |
368 " sane. v is gonna be weird, and so is y. Oh well. | |
369 execute "normal! ax\<esc>\<left>" | |
370 execute "normal! vi" . c | |
371 elseif start_l == end_l && start_c == (end_c - 2) | |
372 " We're on a set of delimiters that contain a single, non-newline | |
373 " character. We can just select that and we're done. | |
374 execute "normal! vi" . c | |
375 else | |
376 " Otherwise these delimiters contain something. But we're still not | |
377 " sure Vim's gonna work, because if they contain nothing but | |
378 " newlines Vim still does the wrong thing. So we'll manually select | |
379 " the guts ourselves. | |
380 let whichwrap = &whichwrap | |
381 set whichwrap+=h,l | |
382 | |
383 execute "normal! va" . c . "hol" | |
384 | |
385 let &whichwrap = whichwrap | |
386 endif | |
387 endif | |
388 endfunction | |
27 | 389 " }}} |
87 | 390 " }}} |
40 | 391 " Vim Math plugin; make simple calculations {{{ |
0 | 392 vmap <expr> ++ VMATH_YankAndAnalyse() |
393 nmap ++ vip++ | |
40 | 394 " }}} |
395 " Airline configuration {{{ | |
0 | 396 let g:airline_inactive_collapse=0 |
397 let g:airline_powerline_fonts=1 | |
398 | |
399 let g:airline_left_sep = '' | |
400 let g:airline_right_sep = '' | |
401 | |
402 let g:airline_theme = 'tomorrow' | |
403 | |
80 | 404 let g:airline#extensions#syntastic#enabled = 1 |
40 | 405 " }}} |
93
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
406 " Unite {{{ |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
407 call unite#filters#matcher_default#use(['matcher_fuzzy']) |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
408 call unite#filters#sorter_default#use(['sorter_rank']) |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
409 call unite#set_profile('files', 'smartcase', 1) |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
410 call unite#custom#source('line,outline', 'matchers', 'matcher_fuzzy') |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
411 " sort file results by length |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
412 call unite#custom#source('file', 'sorters', 'sorter_length') |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
413 call unite#custom#source('file_rec/async', 'sorters', 'sorter_length') |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
414 let g:unite_enable_start_insert=0 |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
415 let g:unite_source_history_yank_enable=1 |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
416 let g:unite_source_rec_max_cache_files=5000 |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
417 let g:unite_prompt='» ' |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
418 if executable('ag') |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
419 let g:unite_source_grep_command='ag' |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
420 let g:unite_source_grep_default_opts='--nocolor --line-numbers --nogroup -S -C4' |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
421 let g:unite_source_grep_recursive_opt='' |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
422 elseif executable('ack') |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
423 let g:unite_source_grep_command='ack' |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
424 let g:unite_source_grep_default_opts='--no-heading --no-color -C4' |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
425 let g:unite_source_grep_recursive_opt='' |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
426 endif |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
427 function! s:unite_settings() |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
428 nmap <buffer> Q <plug>(unite_exit) |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
429 nmap <buffer> <esc> <plug>(unite_exit) |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
430 imap <buffer> <C-j> <Plug>(unite_select_next_line) |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
431 imap <buffer> <C-k> <Plug>(unite_select_previous_line) |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
432 endfunction |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
433 autocmd FileType unite call s:unite_settings() |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
434 |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
435 nnoremap <silent> <C-m> :<C-u>Unite -auto-preview -buffer-name=recent file_mru<cr> |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
436 nnoremap <silent> <SPACE>y :<C-u>Unite -buffer-name=yanks history/yank<cr> |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
437 nnoremap <silent> <SPACE>l :<C-u>Unite -start-insert -auto-resize -buffer-name=line line<cr> |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
438 nnoremap <silent> <SPACE>b :<C-u>Unite -auto-resize -buffer-name=buffers buffer<cr> |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
439 nnoremap <silent> <SPACE>/ :<C-u>Unite -no-quit -buffer-name=search grep:.<cr> |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
440 nnoremap <silent> <SPACE>m :<C-u>Unite -auto-resize -buffer-name=mappings mapping<cr> |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
441 nnoremap <silent> <SPACE>s :<C-u>Unite -quick-match buffer<cr> |
8278ded5eb8c
Replace ctrlp and yankring with unite
zegervdv <zegervdv@me.com>
parents:
92
diff
changeset
|
442 nnoremap <silent> <C-p> :<C-u>Unite -start-insert file_rec/async<CR> |
40 | 443 " }}} |
444 " Nerdtree {{{ | |
0 | 445 map <F2> :NERDTreeToggle<CR> |
446 map <Leader>e :NERDTreeToggle<CR> | |
42 | 447 let NERDTreeIgnore = ['\.aux$', '\.log$', '\.out$', '\.o$', '\.hex$', '\.bin$', '\.elf$'] |
40 | 448 " }}} |
449 " Vim - Rspec {{{ | |
0 | 450 map <leader>t :call RunCurrentSpecFile()<CR> |
451 map <leader>s :call RunNearestSpec()<CR> | |
452 map <leader>l :call RunLastSpec()<CR> | |
453 map <leader>r :call RunAllSpecs()<CR> | |
40 | 454 " }}} |
455 " Cucumber {{{ | |
0 | 456 map <leader>f :call RunAllFeatures()<CR> |
457 map <leader>k :call RunCurrentFeature()<CR> | |
40 | 458 " }}} |
459 " Markdown {{{ | |
0 | 460 let g:vim_markdown_folding_disabled=1 |
40 | 461 " }}} |
462 " tComment {{{ | |
0 | 463 nmap <leader>c <C-_><C-_> |
40 | 464 " }}} |
465 " Neo Complete {{{ | |
91 | 466 let g:neocomplete#enable_at_startup = 1 |
467 let g:neocomplet#enable_smart_case = 1 | |
468 let g:jedi#auto_vim_configuration = 0 | |
469 let g:jedi#completions_enabled = 0 | |
470 let g:marching_enable_neocomplete = 1 | |
27 | 471 |
91 | 472 inoremap <expr><s-CR> pumvisible() ? neocomplete#smart_close_popup()"\<CR>" : "\<CR>" |
473 inoremap <expr><C-g> neocomplete#undo_completion() | |
474 inoremap <expr><C-l> neocomplete#complete_common_string() | |
475 function! CleverCr() | |
476 if pumvisible() | |
477 if neosnippet#expandable() | |
478 let exp = "\<Plug>(neosnippet_expand)" | |
479 return exp . neocomplete#smart_close_popup() | |
480 else | |
481 return neocomplete#smart_close_popup() | |
482 endif | |
483 else | |
484 return "\<CR>" | |
485 endif | |
486 endfunction | |
487 " <CR> close popup and save indent or expand snippet | |
488 imap <expr> <CR> CleverCr() | |
40 | 489 " }}} |
490 " Neo Snippets {{{ | |
0 | 491 imap <C-k> <Plug>(neosnippet_expand_or_jump) |
492 smap <C-k> <Plug>(neosnippet_expand_or_jump) | |
493 xmap <C-k> <Plug>(neosnippet_expand_target) | |
494 | |
23
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
495 " imap <expr><TAB> neosnippet#expandable_or_jumpable() ? |
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
496 " \ "\<Plug>(neosnippet_expand_or_jump)" |
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
497 " \: pumvisible() ? "\<C-n>" : "\<TAB>" |
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
498 " smap <expr><TAB> neosnippet#expandable_or_jumpable() ? |
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
499 " \ "\<Plug>(neosnippet_expand_or_jump)" |
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
500 " \: "\<TAB>" |
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
501 |
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
502 |
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
503 imap <expr><TAB> neosnippet#expandable() == 1 ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>" |
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
504 imap <expr><C-k> neosnippet#expandable_or_jumpable() == 1 ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>" |
4112c6eb9f47
Correct tab completion with snippets
zegervdv <zegervdv@me.com>
parents:
22
diff
changeset
|
505 smap <expr><TAB> neosnippet#expandable() == 1 ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>" |
90 | 506 " let g:neocomplete#sources#omni#input_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::' |
0 | 507 |
508 let g:neosnippet#snippets_directory='~/.vim/snippets' | |
40 | 509 " }}} |
510 " Tabular {{{ | |
0 | 511 inoremap <silent> <Bar> <Bar><Esc>:call <SID>align()<CR>a |
512 | |
513 function! s:align() | |
514 let p = '^\s*|\s.*\s|\s*$' | |
515 if exists(':Tabularize') && getline('.') =~# '^\s*|' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p) | |
516 let column = strlen(substitute(getline('.')[0:col('.')],'[^|]','','g')) | |
517 let position = strlen(matchstr(getline('.')[0:col('.')],'.*|\s*\zs.*')) | |
518 Tabularize/|/l1 | |
519 normal! 0 | |
520 call search(repeat('[^|]*|',column).'\s\{-\}'.repeat('.',position),'ce',line('.')) | |
521 endif | |
522 endfunction | |
523 | |
524 " Align Migration files | |
525 vmap <c-a> :Tabularize /:/l1l0l0<CR> | |
526 | |
527 nmap <Leader>a= :Tabularize /=<CR> | |
528 vmap <Leader>a= :Tabularize /=<CR> | |
529 nmap <Leader>a=> :Tabularize /=><CR> | |
530 vmap <Leader>a=> :Tabularize /=><CR> | |
531 nmap <Leader>a: :Tabularize /:\zs/l0l1<CR> | |
532 vmap <Leader>a: :Tabularize /:\zs/l0l1<CR> | |
533 nmap <Leader>a, :Tabularize /,\zs/l0l1<CR> | |
534 vmap <Leader>a, :Tabularize /,\zs/l0l1<CR> | |
535 vmap <Leader>a- :Tabularize /-<CR> | |
40 | 536 " }}} |
537 " Latex plugin {{{ | |
0 | 538 au BufNewFile,BufRead,BufEnter *.tex setlocal spell spelllang=en_gb |
539 au BufNewFile,BufRead,BufEnter *.tex setlocal textwidth=0 | |
540 au BufNewFile,BufRead,BufEnter *.txt setlocal spell spelllang=en_gb | |
541 au BufNewFile,BufRead,BufEnter *.txt setlocal textwidth=0 | |
542 | |
543 let g:tex_conseal = "" | |
544 | |
545 let g:tex_comment_nospell=1 | |
546 let g:Tex_DefaultTargetFormat = 'pdf' | |
547 let g:tex_flavor = 'latex' | |
548 let g:Tex_TreatMacViewerAsUNIX = 1 | |
549 let g:Tex_ExecuterUNIXViewerInForeground = 1 | |
92 | 550 let g:Tex_ViewRule_pdf = 'open -a Preview' |
551 " let g:Tex_ViewRule_pdf = 'open -a /Applications/TeX/TeXShop.app' | |
47 | 552 |
0 | 553 let g:Tex_ViewRule_ps = 'open -a Preview' |
47 | 554 |
555 nnoremap <leader>m :w<CR>:!rubber --pdf --warn all %<CR> | |
40 | 556 " }}} |
557 " Tagbar {{{ | |
0 | 558 nmap <F8> :TagbarToggle<CR> |
40 | 559 " }}} |
560 " Gundo tree {{{ | |
0 | 561 nnoremap <leader>u :GundoToggle<CR> |
40 | 562 " }}} |
563 " Smalls {{{ | |
13 | 564 nmap s <Plug>(smalls) |
565 omap s <Plug>(smalls) | |
566 xmap s <Plug>(smalls) | |
40 | 567 " }}} |
568 " Textmanip {{{ | |
14
09c60bc0fc38
Add vim-textmanip for visual block dragging
zegervdv <zegervdv@me.com>
parents:
13
diff
changeset
|
569 xmap <C-j> <Plug>(textmanip-move-down) |
09c60bc0fc38
Add vim-textmanip for visual block dragging
zegervdv <zegervdv@me.com>
parents:
13
diff
changeset
|
570 xmap <C-k> <Plug>(textmanip-move-up) |
09c60bc0fc38
Add vim-textmanip for visual block dragging
zegervdv <zegervdv@me.com>
parents:
13
diff
changeset
|
571 xmap <C-h> <Plug>(textmanip-move-left) |
09c60bc0fc38
Add vim-textmanip for visual block dragging
zegervdv <zegervdv@me.com>
parents:
13
diff
changeset
|
572 xmap <C-l> <Plug>(textmanip-move-right) |
09c60bc0fc38
Add vim-textmanip for visual block dragging
zegervdv <zegervdv@me.com>
parents:
13
diff
changeset
|
573 xmap <F10> <Plug>(textmanip-toggle-mode) |
40 | 574 " }}} |
575 " Startify {{{ | |
27 | 576 let g:startify_session_dir = "~/.vim/sessions" |
577 " }}} | |
54 | 578 " Vimwiki {{{ |
579 let g:vimwiki_list=[{'path':'$HOME/.vimwiki'}] | |
580 " }}} | |
58
b657d43a4fcb
Stop asking to save current session
zegervdv <zegervdv@me.com>
parents:
54
diff
changeset
|
581 " Vim Sessions {{{ |
b657d43a4fcb
Stop asking to save current session
zegervdv <zegervdv@me.com>
parents:
54
diff
changeset
|
582 let g:session_autosave = 'no' |
b657d43a4fcb
Stop asking to save current session
zegervdv <zegervdv@me.com>
parents:
54
diff
changeset
|
583 " }}} |
27 | 584 |
13 | 585 " Load local vimrc |
3
44d3af8838f8
Add support for local zshrc and vimrc files
zegervdv <zegervdv@me.com>
parents:
0
diff
changeset
|
586 if filereadable($HOME . "/.vimrc.local") |
44d3af8838f8
Add support for local zshrc and vimrc files
zegervdv <zegervdv@me.com>
parents:
0
diff
changeset
|
587 source ~/.vimrc.local |
44d3af8838f8
Add support for local zshrc and vimrc files
zegervdv <zegervdv@me.com>
parents:
0
diff
changeset
|
588 endif |
24 | 589 |