Posso retomar um processo de vim existente?

5

Quando saí do trabalho ontem, deixei o vim aberto com os arquivos em que estava trabalhando. Estou trabalhando em casa hoje, então eu entrei em VPN e, quando vou editar esses mesmos arquivos, recebo o aviso de que há outra sessão vim atual aberta com esses arquivos.

Eu sei que eu poderia forçar o logout do meu outro usuário, mas isso mataria a sessão existente do vim. Eu acho que minhas alterações seriam salvas no arquivo .swp .

Em vez disso, é possível eu pegar essa sessão vim existente e abri-la com meu segundo login? Dessa forma, com certeza preservaria todas as minhas alterações, e eu não precisaria abrir as mesmas guias novamente.

    
por Cory Klein 13.09.2011 / 17:14

6 respostas

7

Você pode matar o vim (mas não use -9) e todas as suas alterações serão salvas nos arquivos .swp . Então você começa um novo vim e usa o Recover.

    
por 13.09.2011 / 17:19
2

Que tal usar screen ou tmux como alternativa? Dessa forma, você pode desconectar sua sessão de tela quando terminar e depois fazer o login mais tarde (possivelmente de outra máquina) e reconectar.

    
por 13.09.2011 / 18:20
1

Você está correto em dizer que um logout / kill forçado de seu outro processo vim permitirá que você pegue o arquivo ".swp" deixado para trás e comece a trabalhar com ele. Apenas testei essa teoria e ela funcionou no Ubuntu de qualquer maneira. Apenas certifique-se de selecionar a opção "Recuperar" quando ele disser que um arquivo de troca já existe.

Isso deve receber qualquer modificação que não tenha sido salva, mas não tenho certeza sobre outras informações da sessão, como o histórico de comandos.

    
por 13.09.2011 / 17:20
0

Existe este pequeno programa chamado retty , mas eu não tenho absolutamente nenhuma idéia de como ele é confiável.

    
por 13.09.2011 / 17:15
0

Você não pode assumir processos que foram iniciados em outro terminal. Se você tivesse iniciado o vim dentro da tela, você teria sido capaz de desanexar a sessão de tela e então reconectar a partir de um terminal diferente (incluindo um externo sobre o ssh).

Depois, há retty , mas não está disponível para todas as plataformas de hardware e está em um estágio experimental - basicamente, use a seu próprio risco.

Outra opção é fazer :mks (fazer sessão) de vez em quando; se você matar o vim e iniciá-lo a partir de um terminal diferente, você pode simplesmente fornecer o arquivo Session.vim que o comando mks criou (ou iniciar o vim com vim -S Session.vim ) e retomar sua sessão (você pode ter que responder a alguns restaurar prompts embora).

    
por 13.09.2011 / 17:18
0

reptyr : utilitário para pegar um programa em execução existente e anexá-lo a um novo terminal

Da página man : "reptyr é um utilitário para pegar um programa em execução existente e anexá-lo a um novo terminal. Iniciou um processo de longa duração sobre o ssh, mas precisa sair e usar Não quero interrompê-lo? Basta iniciar uma tela, use o reptyr para pegá-lo e, em seguida, matar a sessão ssh e ir para casa. "

    
por 01.02.2018 / 23:48

Tags