Melhorando o comportamento de arquivo alternativo para evitar a reabertura de buffers excluídos?

7

Atraído pela promessa do modo maligno, estive fazendo luar no Emacs. É um mundo selvagem com uma mistura de perdas de cabelo peludas e recursos surpreendentemente inteligentes. Um recurso que eu realmente gosto é um comando chamado bury-buffer, que coloca o buffer atual no final da lista de buffers e exibe o buffer ativo anteriormente em seu lugar. Enterrando um buffer, torna-se o provável candidato menos por other-buffer(como Vim de alternate-fileon Ctrl-^).

Então, eu poderia estar alternando entre o buffer A e o buffer B. Então, enquanto estou em B, quero verificar algo no buffer C. Sim, enterro C e sou colocado de volta em B com A como meu arquivo alternativo . O mesmo acontece se eu tivesse excluído o buffer C em vez de enterrá-lo. Qualquer uma das ações me colocaria de volta no meu fluxo de trabalho A / B.

Se eu fizer o mesmo no Vim, alternando entre A e B e, em B, abra C, a lista de buffers mostrará C como ativo ( %) e B como alternativo ( #). Quando eu excluo C, o Vim retorna para B. Mas C ainda é o arquivo alternativo, mesmo que ele não apareça mais na lista de buffers. Se eu acertar Ctrl-^, reabrirá C em vez de me levar de volta a A.

Existe uma maneira de configurar o Vim para que seu comportamento de arquivo alternativo marque o buffer aberto usado mais recentemente como o alternativo em vez de reviver os buffers excluídos? Existe uma maneira de manipular seu conceito de arquivo alternativo?

ivan
fonte

Respostas:

7

Eu acho que você está procurando :help :keepalt:

$ vim a b       current buffer is 'a', no alternate file
:bn             current is 'b', alternate is 'a'
:b#             current is 'a', alternate is 'b'
:b#             current is 'b', alternate is 'a'
:keepalt e c    current is 'c', alternate is still 'a'
:keepalt bd     current is 'b', alternate is 'a'
:b#             current is 'a', alternate is 'b'
romainl
fonte
Eu esperava que houvesse uma opção que eu pudesse definir que afetasse esse comportamento, independentemente de como o arquivo foi aberto / fechado, mas esse é um bom comando para se conhecer. Obrigado.
ivan
11
Fluxo de trabalho diferente: coloque seus buffers na lista de argumentos :args % #, edite os arquivos que desejar e depois restaure :last|N.
Antony