Existe algum plugin vim que implemente o recurso hot exit a partir de texto sublime

11

Hot exit é um dos principais recursos do editor de texto sublime. Ele permite fechar o editor a qualquer momento sem se preocupar com modificações nos arquivos abertos - ele é fechado sem nenhuma pergunta. Ao iniciar o ST novamente, todos os arquivos abertos e editados estarão no mesmo estado em que estavam antes de fechar

Gostaria de saber se existe uma maneira de fazer o mesmo no vim?

LazyS
fonte
: xa exit all (salve todas as alterações e feche o Vim)
Sim
Isso grava os arquivos, mas não salva mais nada. Eu acho que o OP quer algo que tanto salva os arquivos sem gravá-los, e salva o estado de todos os separadores abertos ou buffers
EvergreenTree
Sim, entendi isso mais tarde pelos comentários dele.
Sim

Respostas:

6

O Vim pode fazer isso, embora possa ser um pouco desajeitado e precise de algumas configurações.

romainl te deixa no meio do caminho session. Os bits ausentes são arquivos de troca :preserve, e o &sinalizador para cpoptions.

Os arquivos de troca destinam-se à recuperação se o Vim ou o seu sistema travar. Eles permitem recuperar alterações não salvas (com algumas limitações, consulte :he swap-file). No entanto, quando o Vim sai normalmente, ele exclui os arquivos de troca que estava usando, mesmo que o buffer tenha sofrido alterações não salvas.

É aí que :preservee cpoptions's &entrar. :preserveForças Vim para escrever todos os tampões para os seus arquivos de swap imediatamente (em oposição ao padrão após 4 segundos ou 200 caracteres, ou o que quer que suas opções definiu que ele). Doing :set cpoptions+=&diz ao Vim para não excluir os arquivos de troca salvos :preserveao sair normalmente.

Infelizmente, o Vim não limpa automaticamente os arquivos de troca ao se recuperar deles, para que você possa acabar com um diretório parecido com este:

.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt

Você pode excluir os antigos manualmente, mas o Vim oferecerá automaticamente a recuperação apenas se houver um *.swparquivo onde ele colocaria seu novo arquivo de troca. O :recovercomando forçará o Vim a procurar arquivos de troca dos quais recuperar.

Usando comandos automáticos, você pode automatizar a preservação (provavelmente com o QuitPreevento) e a recuperação (provavelmente com BufReadou BufReadPost). O Recover.vim é um plug-in que pode funcionar como uma alternativa mais amigável para gerenciar a recuperação. Parece também lidar com a limpeza de arquivos de troca. Não tenho certeza de como ele trataria um diretório com um arquivo, .swomas sem .swp. Você ainda pode precisar usar :recoverpara esse caso.

O vim-obsession é outro plug-in que afirma facilitar as sessões de manuseio.

8bittree
fonte
1

Sim. Chama-se "sessão" e você pode ler tudo sobre isso em:

:help session
romainl
fonte
1
Estou ciente das sessões. Mas parece que não é o mesmo - ele salva todos os buffers e guias abertos (e configurações), mas se você tiver algumas alterações em um dos buffers, deverá gravá-las no disco antes de sair. No texto sublime, você não precisa salvar o arquivo aberto na saída - o sublime salva todas as alterações em um local separado e as restaura ao reabrir. Então arquivo original é intocável no disco, mas as alterações não são perdidos demasiado
LazyS
Sim, essa seria a principal diferença. Não faço ideia se isso pode ser alcançado sem recorrer ao tmux / screen / destacável.
romainl