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
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 )
- descarrega buffers todos carregados no momento.