bclose to vundle
This commit is contained in:
parent
3740d36994
commit
a59552e75a
2 changed files with 6 additions and 78 deletions
|
@ -1,78 +0,0 @@
|
||||||
" Delete buffer while keeping window layout (don't close buffer's windows).
|
|
||||||
" Version 2008-11-18 from http://vim.wikia.com/wiki/VimTip165
|
|
||||||
if v:version < 700 || exists('loaded_bclose') || &cp
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let loaded_bclose = 1
|
|
||||||
if !exists('bclose_multiple')
|
|
||||||
let bclose_multiple = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Display an error message.
|
|
||||||
function! s:Warn(msg)
|
|
||||||
echohl ErrorMsg
|
|
||||||
echomsg a:msg
|
|
||||||
echohl NONE
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Command ':Bclose' executes ':bd' to delete buffer in current window.
|
|
||||||
" The window will show the alternate buffer (Ctrl-^) if it exists,
|
|
||||||
" or the previous buffer (:bp), or a blank buffer if no previous.
|
|
||||||
" Command ':Bclose!' is the same, but executes ':bd!' (discard changes).
|
|
||||||
" An optional argument can specify which buffer to close (name or number).
|
|
||||||
function! s:Bclose(bang, buffer)
|
|
||||||
if empty(a:buffer)
|
|
||||||
let btarget = bufnr('%')
|
|
||||||
elseif a:buffer =~ '^\d\+$'
|
|
||||||
let btarget = bufnr(str2nr(a:buffer))
|
|
||||||
else
|
|
||||||
let btarget = bufnr(a:buffer)
|
|
||||||
endif
|
|
||||||
if btarget < 0
|
|
||||||
call 'bdelete'.a:bang
|
|
||||||
call s:Warn('No matching buffer for '.a:buffer)
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
if empty(a:bang) && getbufvar(btarget, '&modified')
|
|
||||||
call s:Warn('No write since last change for buffer '.btarget.' (use :Bclose!)')
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
" Numbers of windows that view target buffer which we will delete.
|
|
||||||
let wnums = filter(range(1, winnr('$')), 'winbufnr(v:val) == btarget')
|
|
||||||
if !g:bclose_multiple && len(wnums) > 1
|
|
||||||
call s:Warn('Buffer is in multiple windows (use ":let bclose_multiple=1")')
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
let wcurrent = winnr()
|
|
||||||
for w in wnums
|
|
||||||
execute w.'wincmd w'
|
|
||||||
let prevbuf = bufnr('#')
|
|
||||||
if prevbuf > 0 && buflisted(prevbuf) && prevbuf != w
|
|
||||||
buffer #
|
|
||||||
else
|
|
||||||
bprevious
|
|
||||||
endif
|
|
||||||
if btarget == bufnr('%')
|
|
||||||
" Numbers of listed buffers which are not the target to be deleted.
|
|
||||||
let blisted = filter(range(1, bufnr('$')), 'buflisted(v:val) && v:val != btarget')
|
|
||||||
" Listed, not target, and not displayed.
|
|
||||||
let bhidden = filter(copy(blisted), 'bufwinnr(v:val) < 0')
|
|
||||||
" Take the first buffer, if any (could be more intelligent).
|
|
||||||
let bjump = (bhidden + blisted + [-1])[0]
|
|
||||||
if bjump > 0
|
|
||||||
execute 'buffer '.bjump
|
|
||||||
else
|
|
||||||
execute 'enew'.a:bang
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
execute 'bdelete'.a:bang.' '.btarget
|
|
||||||
execute wcurrent.'wincmd w'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
command! -bang -complete=buffer -nargs=? Bclose call <SID>Bclose('<bang>', '<args>')
|
|
||||||
" command! -bang -complete=buffer -nargs=? bc call <SID>Bclose('<bang>', '<args>')
|
|
||||||
nnoremap <silent> <Leader>bd :Bclose<CR>
|
|
||||||
nnoremap <silent> <Leader>bD :Bclose!<CR>
|
|
||||||
nnoremap <silent> <Leader>BD :Bclose!<CR>
|
|
||||||
|
|
6
vimrc
6
vimrc
|
@ -18,6 +18,7 @@ Plugin 'ctrlpvim/ctrlp.vim'
|
||||||
Plugin 'godlygeek/tabular'
|
Plugin 'godlygeek/tabular'
|
||||||
Plugin 'itchyny/lightline.vim'
|
Plugin 'itchyny/lightline.vim'
|
||||||
Plugin 'nathanaelkane/vim-indent-guides'
|
Plugin 'nathanaelkane/vim-indent-guides'
|
||||||
|
Plugin 'rbgrouleff/bclose.vim'
|
||||||
Plugin 'rodjek/vim-puppet'
|
Plugin 'rodjek/vim-puppet'
|
||||||
Plugin 'thoughtbot/vim-rspec'
|
Plugin 'thoughtbot/vim-rspec'
|
||||||
Plugin 'tpope/vim-dispatch'
|
Plugin 'tpope/vim-dispatch'
|
||||||
|
@ -160,6 +161,11 @@ map <Leader>ra :bufdo e!<cr>
|
||||||
map <Leader>s :Vexplore ~/Source/<cr>
|
map <Leader>s :Vexplore ~/Source/<cr>
|
||||||
map <Leader>d :Vexplore .<cr>
|
map <Leader>d :Vexplore .<cr>
|
||||||
|
|
||||||
|
" bclose
|
||||||
|
nnoremap <silent> <Leader>bd :Bclose<CR>
|
||||||
|
nnoremap <silent> <Leader>bD :Bclose!<CR>
|
||||||
|
nnoremap <silent> <Leader>BD :Bclose!<CR>
|
||||||
|
|
||||||
map <Leader>fw :FixWhitespace<cr>
|
map <Leader>fw :FixWhitespace<cr>
|
||||||
map <Leader>lf :call LargeFileToggle()<cr>
|
map <Leader>lf :call LargeFileToggle()<cr>
|
||||||
map <Leader>sa :call RenameFile()<cr>
|
map <Leader>sa :call RenameFile()<cr>
|
||||||
|
|
Loading…
Add table
Reference in a new issue