Considere um caso com várias divisões em uma janela. O vim permite "maximizar" rapidamente a divisão atual para ocupar toda a janela <C-W>
o
.
Existe uma maneira de o vim "lembrar" as divisões que existiam antes e reverter para esse estado após a execução <C-W>
o
?
EDIT: Para esclarecer, estou procurando uma maneira de fazer isso sem o uso de plugins de terceiros.
Respostas:
A maneira mais simples de fazer isso é provavelmente com arquivos de sessão, que são scripts do vim (que o vim pode produzir automaticamente para você) que restauram um ambiente de edição anterior.
Você pode criar um novo arquivo de sessão usando
:mksession <filename>
. Você pode restaurar essa sessão executando o script de sessão gerado:source <filename>
,.Assim, você pode salvar a sessão atual antes de maximizar uma janela e restaurá-la quando desejar "desmaximizar" a janela.
Usando isso, você pode remapear os comandos de janelas apropriados para salvar uma sessão com antecedência e adicionar um novo mapeamento para que um "desfaça" o último comando de janelas restaurando a sessão. Por exemplo:
nnoremap <C-w>o :mksession! ~/session.vim<CR>:wincmd o<CR>
e assim por diante para todos os comandos de janelas que você deseja suportar (veja:help CTRL-W
, há muito). Os!
evita erros relativos ao sobrescrever um arquivo de sessão existente.nnoremap <C-w>u :source ~/session.vim<CR>
para "desfazer" o último comando de janelas.Se você quiser ser particularmente robusto, poderá estender isso via funções para salvar os arquivos de sessão em uma pilha e removê-los para obter uma cadeia completa de desfazer, embora nesse momento seja provavelmente mais eficiente escrever várias funções para rastrear o histórico de comandos da janela na memória ... nesse ponto você provavelmente está duplicando os plugins que já fazem esse tipo de coisa.
fonte
Outra opção pode ser abrir a janela atual em uma nova guia e simplesmente fechar a guia quando terminar.
O comando
:split
(ou:sp
abreviado), sem argumento, tem o efeito de abrir uma nova divisão com o mesmo buffer que a divisão atual. O:tab
comando pode executar muitos comandos relacionados à janela, alterando-os para usar uma guia. Combinando esses dados juntos:tab sp
, será aberta uma nova guia com o buffer atual.Depois, você pode fechar a nova guia com
:q
ou:tabclose
(:tabc
para abreviar).fonte
Eu uso o plugin ZoomWin ( https://github.com/itspriddle/ZoomWin ) para exatamente esse cenário. Pressionar CtrlW- Ouma segunda vez restaura o layout da janela.
fonte
O que você está descrevendo soa exatamente como o recurso chamado "zoom". Já existe uma ótima resposta no SO que faz isso muito bem.
EDIT: Resposta explícita, copiada e colada do SO . Coloquei o trecho abaixo no meu .vimrc e depois invoco
no meu prompt de comando do vim.
fonte
Este post é antigo, a resposta aceita não se preocupa
terminal buffer
.A resposta aceita é usada
session
para fazer o truque, massession
não pode restaurar completamenteterminal buffer
:A resposta de Tommcdo ainda funciona,
<c-w>:tab split
funciona bemterminal buffer
. Merece um mapa:fonte