Muito obrigado, esse comportamento do vim me incomodou muito! btw, a versão mais recente do bufkill está em github.com/qpkorr/vim-bufkill
fsrechia
326
bp|bd # vai fazer isso.
Detalhes: bp("buffer anterior") nos move para um buffer diferente na janela atual ( bntambém funcionaria), depois bd #("buffer delete" "arquivo alternativo") exclui o buffer do qual acabamos de nos afastar. Veja: help bp, help bd, help alternate-file.
Você não tem idéia de há quanto tempo estou procurando por algo assim tão simples, que não exija um script inteiro para executá-lo. No meu VIMRC, agora tenho esse mapeado para CTRL + C:nnoremap <C-c> :bp\|bd #<CR>
Cloud
11
Estou tentando remapear usando nmap <silent> <leader>d :bp|bd #<CR>, mas estou conseguindo E94: No matching buffer for #<CR>.
Fábio Perez
22
Coloque uma barra invertida na frente do |(por exemplo :bp\|bd)
Mud
4
Eu sabia que não deveria ter que instalar um plugin para isso. Obrigado!
Akash Agrawal
2
b#|bd #mudará para o último buffer usado em vez do próximo / anterior. No entanto, ele vai pular para buffers ocultos, se você tiver set hidden, então criei uma função BD mais inteligente para evitar isso.
C24w 07/11
15
Você pode adicionar o seguinte ao seu .vimrcpara ter o Bdtrabalho como bdsem tocar nas divisões da janela:
command Bd bp\|bd \#
Achei isso um complemento útil para o que Mud respondeu.
E você pode adicionar os 3 comandos para descarregar, excluir e apagar um buffer: comando! Comando BUN bp \ | bun \ #! Comando BD bp \ | bd \ #! BW bp \ | bw \ #, que é equivalente ao que o bufkill fornece, mas com 3 linhas no vimrc, em vez de um plug-in de mais de 700 linhas!
Fevel
3
Para mim, funcionou apenas com isso no .vimrc command! Bd bp|bd #. O comando acima com o `` manteve o buffer na lista de buffers.
Faço algo semelhante ao @Mud, mas mudo para o buffer de exibição anterior #, em vez do buffer anterior na lista de buffers. Aqui está uma chave de ligação no meu .vimrc:
DeleteCurBufferNotCloseWindow()
funciona bem e é bastante legível] ( stackoverflow.com/a/44950143/3625404 ).Respostas:
Eu realmente gosto bufkill.vim há um repo github bem
fonte
bp|bd #
vai fazer isso.Detalhes:
bp
("buffer anterior") nos move para um buffer diferente na janela atual (bn
também funcionaria), depoisbd #
("buffer delete" "arquivo alternativo") exclui o buffer do qual acabamos de nos afastar. Veja:help bp
,help bd
,help alternate-file
.fonte
nnoremap <C-c> :bp\|bd #<CR>
nmap <silent> <leader>d :bp|bd #<CR>
, mas estou conseguindoE94: No matching buffer for #<CR>
.|
(por exemplo:bp\|bd
)b#|bd #
mudará para o último buffer usado em vez do próximo / anterior. No entanto, ele vai pular para buffers ocultos, se você tiverset hidden
, então criei uma função BD mais inteligente para evitar isso.Você pode adicionar o seguinte ao seu
.vimrc
para ter oBd
trabalho comobd
sem tocar nas divisões da janela:command Bd bp\|bd \#
Achei isso um complemento útil para o que Mud respondeu.
fonte
command! Bd bp|bd #
. O comando acima com o `` manteve o buffer na lista de buffers.Veja a exclusão de um buffer sem fechar a janela no wiki de dicas do VIM.
fonte
Faço algo semelhante ao @Mud, mas mudo para o buffer de exibição anterior
#
, em vez do buffer anterior na lista de buffers. Aqui está uma chave de ligação no meu.vimrc
:Feche as janelas Localização, se existir, alterne para o buffer de exibição anterior e feche o último buffer comutado.
fonte
Minha escolha é
Pense assim! /// <1. Lembrar Buffer> | <2 Excluir buffer>
porque?! É fácil lembrar de 3 (+ 1) palavras-chave!
Isso é fácil e muito útil em muitos outros casos!
Tenha um bom dia! :)
fonte
Eu costumava usar :
Mas encontrei certas ocasiões em que fechava minha janela. Além disso, o buffer seguinte ou anterior pode não ser o que você deseja exibir na divisão.
Agora eu faço isso:
nnoremap <leader>d :bd#<CR>
fonte