Gravando Sessões no Vim

Pense na cena: você está programando uma certa funcionalidade de um determinado projeto, vamos chamá-lo de A. Então, você tem 4 arquivos abertos em buffers dentro do Vim. Criou uns mapeamentos do teclado extra, só para o momento. Também tem marcadores que pulam de um trecho do código para outro. Está tudo do jeito que você adora.

Chega, então, o seu chefe e diz: “Cara, preciso que tu veja algo em outro projeto.” ou até mesmo atualiza seu kernel e precisa rebootar o sistema. Chega sua namorada e pede pra ver o orkut. Seja qual seja o motivo, você precisa fechar o Vim. Mas, mais tarde, vai voltar a mexer, nestes 4 mesmos arquivos. Vai refazer todos os mapeamentos, refazer as marcações, etc.

Pois, se já aconteceu isso com você – comigo acontece muito frequênte -, você pode usar o :mksession.

A sintaxe é a seguinte:

:mksession ~/.vim-sessions/projeto-A.vim

Você escolhe o nome do arquivo e o diretório e o vim grava no arquivo as informações exatas do editor no momento em que foi executado o comando. Dentre as coisas das quais ele grava estão:

  1. Mapeamentos de teclas
  2. Variáveis globais (iniciadas com maiúsculas e que tenham pelo menos 1 caracter minúsculo)
  3. Caso use o GVim, grava o posicionamento e o tamanho dele na tela
  4. Todos os arquivos abertos em buffers e o ponteiro do mouse
  5. O estado visual do Gvim (folds, marks, incserch)

Depois de gravada, para recarregar a session, basta abrir o arquivo.

gvim -S ~/.vim-sessions/projeto-A.vim
ou
vim -S ~/.vim-sessions/projeto-A.vim

Eu tenho usado bastante para funcionalidades que requerem muita manutenção. Por exemplo, no desenvolvimento web.

vim -S ~/.vim-sessions/projetoA-javascripts.vim
vim -S ~/.vim-sessions/projetoA-accounts.vim

Assim, até o módulo de accounts ficar pronto, testado e aprovado pelo inmetro, todos os arquivos relacionados estão ali. E quando acaba o expediente, sobreescrevo a session, para que no próximo dia eu possa dar continuidade.

E você? Tem alguma idéia melhor? Comente!

Inglês

Posts Relacionados

Por favor, se você deseja opinar, criticar ou até mesmo mandar uma receita de bolo, deixe um comentário! Ou fique atento aos feeds.

Comentários

muito bacana teu blog…
adoro o (G)vim…

continua assim cara…

O gerenciador de sessões do VIM é de fato sensacional, já que salva todo o ambiente.

Para poupar-me certo tempo, eu uso o plugin http://www.vim.org/scripts/script.php?script_id=2010, é uma camada de ‘abstração’ para o gerenciador de sessões.

Os comandos que ganhamos são (quote do vim.org):

:SessionOpen -> command takes a session name as an argument. It supports argument completion.

:SessionOpenLast -> command opens the g:LAST_SESSION session (see above).

:SessionClose -> command wipes out all buffers, kills cscope and clears variables with session name.

:SessionSave -> command saves the current editing session. If v:this_session is empty it asks for a session name.

:SessionSaveAs -> command takes a session name as an optional argument. If there is no argument or it is empty, it asks for a session name (default is the last part of v:this_session).

:SessionShowLast -> command shows the content of the g:LAST_SESSION and v:this_session variables.

Espero que seja útil.

Deixe um comentário

(obrigatório)

(obrigatório)