26 julho 2016

Salvando sessões no VIM

Às vezes costumo abrir vários splits e tabs no VIM e quando não termino o trabalho costumo salvar a sessão inteira para não ter trabalho de reabrir todos os arquivos novamente, uma vez que eles ficam em posições que eu já acostumei.

O VIM tem uma “feature” que é pouco usada e pouco conhecida, mas que é bem interessante, e ajuda muito na hora de restaurar todo o workflow de trabalho. Guardar sessões não é novidade para quem usa editores mais modernos, e no VIM não é diferente. Você pode guardar a sessão inteirar e restaurar independente do diretório atual que você esteja.

Para começar isso basta dar um:

:mksession

Isso fará com que o VIM salve um arquivo Session.vim no local em que foi aberto. E esse é o arquivo que você irá usar para restaurar toda sua sessão.

E como restaurar?

Há duas formas de fazer isso, estando com vim já aberto e outra via linha de comando.

Com o editor já aberto:

:source Session.vim

Via linha de comando:

$ vim -S Session.vim

Para deixar as coisas mais fáceis, é interessante ter uma pasta para guardar as sessões. Não é regra, mas um bom lugar para fazer isso é na raíz do seu $MYVIMRC, que no VIM é $HOME/.vim/sessions/. Já no NeoVIM, seguindo o XDG ficaria no $HOME/.config/nvim/sessions/. Simples, os comandos serão os mesmos o que muda é apenas a localização do arquivo de sessão e o nome dele para não conflitar.

:mksession ~/.vim/sessions/minha_sessao.vim

Para saber mais sobre as sessões, basta dar um help no comando:

:help mksession

Existe um plugin para isso!

O desenvolvedor Peter Odding, criou um plugin que ele intitula de “mksession on steroids”, que facilita muito o workflow. O plugin faz tudo que o mksession faz, mas de uma forma mais simples. Com ele você salva e resgata sessões rapidamente sem a necessidade de seguir o caminho do arquivo de sessão.

Você pode saber mais e ler sobre o plugin na sua página do GitHub https://github.com/xolox/vim-session


Este texto foi originalmente publicado no Medium e posteriormente migrado para este site.