O que é um buffer abandonado no vim?

7

Uso o vim há mais de cinco anos e fiquei surpreso quando não sabia o que era um buffer abandonado. A resposta mais próxima que encontrei foi nesta resposta SO .

Então, um buffer abandonado foi carregado, mas não é mais exibido? E se houver várias guias - algum dos buffers carregados nessas guias foi abandonado ou não?

stanm
fonte

Respostas:

8

Um buffer "abandonado" é um buffer que você deixou sem salvar as alterações.

Se você possui set nohidden(o valor padrão), o Vim geralmente avisa sobre alterações não salvas ao tentar deixar um buffer modificado. Quando você abre caminho com força, o buffer anterior fica "abandonado" e você perde todas as alterações não salvas.

Se você tiver set hidden, os buffers modificados serão mantidos em seu estado atual quando você os deixar, para que eles - tecnicamente - nunca sejam "abandonados". Você ainda receberá um aviso se tentar sair do Vim com alterações não salvas.

Enquanto ele ainda é exibido em uma janela, um buffer não pode ser considerado "oculto" ou "abandonado", de modo que seus buffers atualmente exibidos em outra janela em outra página da guia não sejam "ocultos" nem "abandonados".

romainl
fonte
Eu posso ter descoberto um bug neste caso (ou apenas um comportamento estranho): 1. edite um buffer, não salve; 2. conjunto escondido; 3. mudar para outro buffer; 4. conjunto oculto; 5. volte ao buffer oculto; 6. volte ao buffer não oculto: o resultado é que o buffer oculto é salvo automaticamente. Isso está funcionando como esperado?
stanm
@stamm, não é possível reproduzir #
Christian Brabandt
11
@stanm: também não é possível reproduzir, após o 5. o primeiro buffer ainda é alterado, mas agora não posso voltar ao segundo buffer (porque nohiddenestá definido). Qual é a sua configuração?
nobe4
@ Nobe4: ok, é o que eu esperava como comportamento. Minha configuração origina vários arquivos rc externos (corp), então talvez em algum lugar aí esteja o motivo. Obrigado pela ajuda, no entanto!
Stanm 27/08/2015
@stanm talvez autowritese envolva? set autowrite?e set autowriteall?o que eles mostram?
Jason Hu