nnoremap <silent> <leader>gs :Gstatus<CR>
 nnoremap <silent> <leader>gd :Gdiff<CR>
-nnoremap <silent> <leader>gc :tab Gcommit -v<CR>
+nnoremap <silent> <leader>gc :Gcommit -v<CR>
 nnoremap <silent> <leader>ga :Gwrite<cr>
 nnoremap <silent> <leader>gb :Gblame<cr>
 
             \ 'direction': 'botright'
             \ })
 
+nnoremap [unite] <Nop>
+nmap <leader>u [unite]
+
+" unite-grep {{{3
 " seems not respected
 let g:unite_source_grep_max_candidates = 2000
 if executable('ag')
     let g:unite_source_grep_default_opts = '--smart-case -w --vimgrep --hidden --ignore ''.hg'' --ignore ''.svn'' --ignore ''.git'' --ignore ''.bzr'''
     let g:unite_source_grep_recursive_opt = ''
 end
-
-nnoremap [unite] <Nop>
-nmap <leader>u [unite]
-nnoremap <silent> [unite]f :<C-u>Unite -start-insert file_rec<CR>
 nnoremap <silent> [unite]a :<C-u>Unite grep -input=\12\17<CR>
 
+" unite-file_rec {{{3
+if executable('ag')
+    " Use ag in unite rec source
+    let g:unite_source_rec_async_command = 'ag --follow --nocolor --nogroup --hidden -g ""'
+end
+nnoremap <silent> [unite]f :<C-u>Unite -start-insert file_rec/async<CR>
+
+" unite-buffer {{{3
+call unite#custom#default_action('buffer', 'goto')
+nnoremap <silent> [unite]b :<C-u>Unite buffer<CR>
+
 " yankring {{{2
 nnoremap <silent> <leader>p :YRShow<cr>
 let g:yankring_history_dir = expand('$XDG_CACHE_HOME/vim')