Quando estou trabalhando no vim, geralmente tenho uma abertura, ou divisões, aberta contendo um arquivo de ajuda.
Se eu fechar outras janelas usando :q
o vim para ficar em um estado com apenas janelas de ajuda abertas, o vim fechará o editor inteiro, o que me fará perder a posição nas páginas de ajuda. por exemplo, diga que tenho esse layout
tab1 (this is the only tab open)
+------------------+-------------+-----------------+
| | | |
| |:h usr_26.txt| |
| A normal file, | | :h change.txt|
| containing code |section 26.2 | |
| e.g. |line 47 | line 272 |
| | | |
| app_db.sql | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+------------------+-------------+-----------------+
Se eu entrar na janela que contém app_db.sql
um problema no :q
comando, surpreendentemente todo o editor estará perdido.
Geralmente, demora muito tempo - até 15 a 20 minutos - para pesquisar a ajuda para finalmente descobrir esse conteúdo de ajuda; portanto, mesmo que não seja exatamente um trabalho perdido, é definitivamente muito tempo perdido quando isso acontece.
Como posso impedir que o vim feche o próprio editor quando fecho uma janela apenas com a ajuda de janelas abertas?
Possíveis soluções que considerei
- Simplesmente não feche a última janela quando houver janelas de ajuda abertas.
- o problema é que não presto atenção ao que há em outras janelas quando fecho a janela atual.
- Usar
mksession
- isso exige que você saiba com antecedência o que precisa
:mksession
e o fechamento do editor sempre ocorre inesperadamente.
- isso exige que você saiba com antecedência o que precisa
- Use um plug-in como a obsessão do vim, que atualiza constantemente um
Session.vim
arquivo.- No momento, parei de usar o vim-obsession por causa de (ironicamente), os
Session.vim
arquivos que o vim obsession normalmente não restaura guias que contêm páginas de ajuda, mas osSession.vim
arquivos gerados por:mksession
restauram as guias com janelas de ajuda. (Outro problema com os rótulos das guias sendo incompatíveis com as próprias guias)
- No momento, parei de usar o vim-obsession por causa de (ironicamente), os
fonte
QuitPre
evento que retornaria o foco para a janela anterior antes de fechar a atual:autocmd QuitPre * wincmd p
~/.vimrc
e manter um olho sobre quaisquer efeitos colaterais estranhoswincmd p
não está funcionando porque talvez p seja nulo. Vou ter que testar um pouco mais tarde, quando eu chegar em tempoobsession
vai economizar janelas de ajuda se você adicionarhelp
asessionoptions
algum tempo antes de salvar a sessão:set sessionoptions+=help
.Respostas:
usar o comando em
:clo[se]
vez de:q
parece ter resolvido o problema para mim.Ou seja, se eu emitir
:clo
o layout da janela acima, ele causará o vimDe fato, parece que
:close
foi planejado para essa situação, ou seja, para impedir o fechamento acidental do editor quando tudo o que você queria era fechar uma janela (ou guia)de
:h windows.txt
fonte