Qualcuno sa come chiudere un buffer in VIM quando si usa NERDTree senza rovinare tutte le finestre? L'albero NERD normalmente suddivide il tuo schermo in due finestre verticali (il browser alla tua sinistra e poi la tua finestra principale sulla destra). Se chiudi un buffer, sei ridotto a una finestra di navigazione di file giganti. Se selezioni un altro file, allora apre una seconda finestra ma la separa orizzontalmente. Qualche idea?VIM e NERD Tree - chiusura di un buffer correttamente
risposta
Non utilizzo Albero NERD, ma se ho capito bene, si desidera chiudere un buffer senza chiudere una finestra. Se il mio ragionamento è corretto, prova questo script.
" 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 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>')
nnoremap <silent> <Leader>bd :Bclose<CR>
nnoremap <silent> <Leader>bD :Bclose!<CR>
:bd
lavora per me a Vim 7.3 e NERDTree 4.1.0.
Sì, ho appena aggiornato MacVim alla 7.3, ora funziona anche per me. – mxgrn
Hm, sono su Vim 7.3 e NERDTree 4.1 su Ubuntu 12.04 e ho ancora il problema dell'OP. – Milimetric
Non funziona per me su Vim 7.4, NERDTree 4.2.0 su un computer Windows 7. – Juan
Anche il plug-in bufkill sembra risolvere questo problema.
Prova questa mappatura: nnoremap <leader>q :bp<cr>:bd #<cr>
Funziona alla grande e così semplice :) – newUserNameHere
Soluzione assolutamente stupenda. Era sulla punta della mia lingua. – cbartondock
- 1. Impedisci l'albero NERD dall'apertura del buffer all'avvio
- 2. estensione vim e albero NERD - aggiunta di un file
- 3. Vim tabs e buffer
- 4. Python nel buffer Vim?
- 5. vim buffer di copia-incolla
- 6. Refresh Vim buffer
- 7. Come avviare VIM con albero NERD aperto automaticamente?
- 8. Che cos'è un "buffer" in VIM?
- 9. Mostra buffer vim corrispondenti a un modello
- 10. Buffer per scheda in vim
- 11. Vim Repeat punto (".") Buffer di comando?
- 12. Chiusura WebSocket correttamente (HTML5, Javascript)
- 13. Vim: Modifica dei numeri di buffer
- 14. Come posso riassegnare un numero di buffer in VIM?
- 15. Spostamento di un buffer in vim attraverso le istanze di vim
- 16. vim split buffer e aprirlo nella parte inferiore
- 17. Vim Codice Reading - Chiusura/Minimizzare Staffe
- 18. Vim ricerca attraverso tutti i buffer esistenti
- 19. Vim Completion Based in Buffer Name
- 20. Come gestire efficacemente tab/buffer in vim?
- 21. Vim - apre una nuova scheda nel buffer
- 22. Come riaprire il buffer in vim?
- 23. Come posso script vim per eseguire perltidy su un buffer?
- 24. Aprire un buffer come divisione verticale in VIM
- 25. Vim NERD Commenter \ c cancella la linea, invece di commenti non girevoli
- 26. sintassi Vim off quando si esce da un buffer?
- 27. comando copia vim negli appunti/buffer
- 28. Come modificare un buffer Vim con uno script python?
- 29. C'è un modo per incollare l'output di un comando vim nel buffer?
- 30. Conservare il buffer di annullamento dopo aver chiuso VIM?
impressionante ... questo è esattamente quello che stavo cercando per –
thakns, funziona alla grande - e utile non solo per NERDTree! – nihique