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?


: 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.


1

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

:help session

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.