Reutilize trabalhos existentes ao abrir arquivos

0

A pergunta é melhor dada por exemplos:

vim example.txt #Opens Vim on new or existing file

Ctrl + Z

vim someother.txt

Ctrl + Z

vim example.txt #Auto-runs 'fg 1' since example.txt is already open

Isso é possível?

    
por Alex 14.05.2012 / 04:30

4 respostas

0

Uma solução de exemplo, funciona sob bash (requer colar, grep, sed). É específico para o Vim, mas pode ser adaptado para outro editor.

jim ()  { 
  paste <(jobs) <(jobs -p | xargs -n1 ps o cmd= -p) |
  grep "$1$" > ~/tmp/jm && fg $(cat ~/tmp/jm | sed -r 's/^\[([0-9]+).*//')
  [[ $? == 1 ]] && vim $1
}

Aproveite!

    
por 14.05.2012 / 11:54
0

Não. O vim (ou qualquer outro aplicativo para esse assunto) não tem como se comunicar para bash que deve tomar outra ação.

    
por 14.05.2012 / 04:37
0

Você pode considerar o uso de buffers vim para editar vários arquivos.

Edite os dois arquivos: vim example.txt someother.txt , em seguida, alterne entre eles usando :buffer <filename> .

Veja também a dica de troca de buffer mais fácil e o Perguntas freqüentes sobre o buffer do Vim .

    
por 14.05.2012 / 09:09
0

Eu não acho que exista uma maneira tão genérica de reutilizar trabalhos.

Para o seu fluxo de trabalho de edição, você pode querer mudar para o emacs. Em vez de pressionar ctrl-z para retornar ao shell, você pode executar um shell filho em um buffer do emacs com M-x ansi-term ou M-x shell e alternar entre o shell e seus buffers de edição ou até mesmo dividir a exibição para mostre ambos de uma vez. O Emacs rastreia o diretório de trabalho do shell, portanto, se você navegar pelo sistema de arquivos e decidir abrir um arquivo, em vez de digitar emacs somefile , basta avisar o emacs para abri-lo com C-x C-f somefile<RET> e ele abrirá o arquivo outro buffer e mude para ele.

Você também pode iniciar o servidor emacs e executar emacsclient somefile para dizer à sessão existente do emacs para abrir algum arquivo. Se já está aberto, apenas muda para o buffer existente.

    
por 14.05.2012 / 17:54