Como salvar o layout de janela, divisão e buffer?


56

Tenho várias tarefas em que estou trabalhando em um repositório. Eu gostaria de criar "espaços de trabalho" para trabalhar neles.

Um "espaço de trabalho" ou "layout do buffer" teria todos os arquivos nos quais eu preciso trabalhar abertos no layout que eu quero (usando ^w+v, ^w+spara dividir a janela).

Então, quando começar a trabalhar em outra tarefa, gostaria de salvar meu layout atual, passar para outra, mas gostaria de poder voltar aos layouts anteriores.

Qual a melhor maneira de alcançar isto?

Respostas:


48

Você pode usar o vim :mksessione gravar cada "espaço de trabalho" em um arquivo diferente e reabrir uma sessão usando vim -S session_file, no entanto, se estiver aberto a usar um plug-in, acho que o plug-in Startify é exatamente o que eu preciso para esse tipo de cenário: https : //github.com/mhinz/vim-startify

Ele faz um ótimo trabalho de gerenciamento de sessões, no vim e no mccvim, e fornece uma lista de arquivos recentes também quando você abre o vim. Ele também será alterado automaticamente para o diretório de trabalho certo. Também permite fixar arquivos na tela de abertura do startify, o que é bom para facilitar o acesso a coisas como o seu.vimrc


23

Você pode usar o plugin obsessão por vim do tpope para gerenciar facilmente as sessões. É como um invólucro embutido no Vim mksession, mas também fornece um conjunto de outras gentilezas.

Você pode salvar a sessão atual (ou tampão de layout), dando o comando :Obsess. Se você não fornecer um argumento, ele gravará um arquivo de sessão chamado Session.vimpor padrão.

Para recarregar uma sessão, use vim -S <session-name>ou :source <session-name>se você já estiver no Vim.

O bom é que você não precisa se lembrar de salvar a sessão sempre que sair do Vim. É gerenciado automaticamente pelo plugin.

Outra característica muito importante da vim-obession é que ela não salva opções e mapas. mksessioncaptura as opções e os mapas atuais, o que você não quer que aconteça se quiser salvar o layout do buffer. Também interfere quando um plugin é atualizado, etc.


Ele pode gerenciar vários arquivos de sessão?
Nebril 04/02

11
@Nebril It. Quando você salvar a sessão, utilize o formato :Obsess <session-name>. Use o nome da sessão específica que você deseja ao recarregar.
Thameera

Descobri que a obsessão não se lembrava de divisões verticais, enquanto a mksessão lembrava. Eu só estava brincando com essa noite, há algo que eu perdi?
Baxx

11
@baxx Obsession lembra todos os tipos de divisões. Talvez você tenha fechado a divisão antes de sair do vim?
thameera

2
@axax Isso é antigo, mas eu gostaria de adicionar uma nota, caso isso ajude mais alguém. A razão pela qual parece que a obsessão está esquecendo as divisões é provavelmente porque você está saindo de todas as divisões para sair do vim. Isso significa que o estado final é sua última janela quando você fecha o vim, é isso que a obsessão armazena. Eu tive o mesmo problema com as guias e a resposta é usar: qa para sair de todas as janelas abertas, divisões, guias. Se alguém tiver uma opção melhor, informe-nos.
TC0072

12

Como observação lateral, eu gostaria de salientar que construí outro plugin dhruvasagar / vim-prosession como uma extensão do tpope / vim-obsession que aprimora ainda mais a criação e o gerenciamento de sessões do vim por padrão em um repositório centralizado como por configuração em um diretório e os carrega automaticamente quando você inicia o vim sem nenhum argumento no diretório. Também permite alternar entre diferentes sessões por conveniência.


Isso parece incrível. Se eu pudesse gerenciar arquivos de sessão em uma pasta semelhante a desfazer e fazer backup de arquivos para evitar que meus projetos fiquem confusos com arquivos de troca, isso pode me surpreender.
Dragon788 15/05

1

Você pode experimentar o plug - in vim-workspace , seus recursos de gerenciamento de sessões são automatizados, com escopo definido para o seu diretório de trabalho atual e são bem simples (é necessário executar apenas ToggleWorkspaceuma vez).

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.