Pergunta

Eu queria saber se esse recurso IDE comum está disponível.

Suponha que eu abrir muitos arquivos usando Vim, usando vsplit e split. Então, eu fechar tudo.

No dia seguinte, eu quero recuperar esses arquivos. Ou seja, recuperar a forma como eles foram abertos, não ter que abrir cada um deles (usando split e vsplit) novamente.

É possível?

UPDATE:

Usando mksession! e source comandos, comandos de mapeamento no arquivo .vimrc, há uma maneira para parametrizar mapeamentos de forma a escrever um arquivo específico?

Por exemplo:

map <F2> :mksession! ~/vim_session @INSERT_HERE<cr> "Save session to @INSERTHERE file

Agradecemos antecipadamente

Foi útil?

Solução

Você pode mapear usando: mksession e: fonte de um conjunto de chaves para fácil salvar e restaurar. Aqui está um exemplo do meu .vimrc que usa F2 e F3:

map <F2> :mksession! ~/vim_session <cr> " Quick write session with F2
map <F3> :source ~/vim_session <cr>     " And load session with F3

Outras dicas

Dê uma olhada no comando :mksession , para criar um session :

A sessão mantém as vistas para todos janelas, além das configurações globais. Você pode salvar uma sessão e quando você restaurá-lo mais tarde, o layout da janela parece o mesmo. Você pode usar um Session para alternar rapidamente entre diferentes projectos, carregar automaticamente a ficheiros que foram última operação naquela projeto.

Você pode considerar o uso GNU tela . Em suma: é uma linha de comando Window Manager que permite que um usuário para acessar vários sessões de terminal separados dentro de uma única sessão de terminal. A principal vantagem para mim é que você pode separar a sessão, perto de sua janela terminal, e mais tarde re-anexar a sessão, e continuar a trabalhar.

A melhor abordagem que eu encontrei é usar o plugin vim-sessão, http: // github. com / Xolox / vim-sessão que pode ser instalado adicionando:

Plugin 'xolox/vim-session'

ao seu .vimrc, seguida por:

:PluginInstall

Este plugin suporta múltiplas sessões: a identificar uma sessão pelo nome e, em seguida, controlá-lo com esse nome. As sessões podem ser acrescentados, apagados, atualizados na lista, ...

Eu tenho usado há vários meses; altamente recomendado.

Você pode estar interessado neste livro:

http://www.swaroopch.com/notes/Vim#Download

É uma das primeiras coisas que eles mostram como um exemplo de como é grande Vim é. ;)

Além disso, <cr> significa Retorno de carro.

http://www.vim.org/scripts/script. php? SCRIPT_ID = 2010 oferece uma funcionalidade mais fácil. Tenha cuidado com miniBufExplorer. É incompatível menos que você use a versão modificada feita por Andrew em vim_use (e mesmo assim, é apenas metade compatível)

A minha solução é como abaixo, colocá-los no arquivo .vimrc. HTH.

" session related.
" Default session is located `~/.session_'. The suffix `_' is a dirty
" solution, just like the one-element tuple `(tuple_eliment,)' in Python..
cnoremap <C-O> source ~/.session_
cnoremap <C-S> mksession! ~/.session_
nnoremap <silent> <C-S><C-S> :mksession! ~/.session_ <CR>

Parece ser mais complexa, mas muito útil se você tiver várias sessões para salvar e carregar.

P.S.
Aqui, adoto os familiares <Ctrl-S> e <Ctrl-O> atalhos, para salvar e sessões de carga. IMHO, este é mais confortável do que estendendo a mão para chave <Fn>. ; -)

Eu sugiro usar vim-obsessão . É muito melhor que o mksession padrão, pois fica de fora do seu enquanto ainda está fazendo o que você quer.

Com base na resposta de hgmnz e expandindo para a atualização.

Você pode soltar o <cr> a partir do mapeamento e isso vai colocá-lo em modo de comando para terminar o comando.

map <F2> :mksession! ~/<will stop here and you can type>

Quando vai no modo de comando, você pode digitar%, em seguida, pressione tab e vai expandir-se para o caminho absoluto do arquivo atual, você também pode digitar%: p: h e pressione tab para expandir-se para o diretório do arquivo atual.

Você também pode salvar cada sessão para o diretório de trabalho e usando diretórios buffer local você pode ter várias sessões para diretórios de trabalho.

map <F2> :mksession! ./.vim_sessions <cr> " Will save session to current buffers directory.
map <F3> :source ./.vim_sessions <cr>
:lcd " Changes the current's buffer directory

Também deve ter cuidado com a recarga sessões como faz descarregar todos os buffers carregados atuais ( http: //vimdoc.sourceforge.net/htmldoc/starting.html#%3Amksession )

  1. descarrega buffers todos carregados no momento.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top