O texto do processo em segundo plano aparece no terminal vim

1

pôster da primeira vez, espreita por muito tempo, procurou, não conseguiu encontrar etc, etc.

Estou a executar o vim no tmux, no iTerm2. Estou executando um servidor com o Grunt.js, que estou executando em segundo plano, fora do meu caminho. Eu começo meu servidor grunhido no fundo assim:

grunt server &

O Grunt também assiste a vários arquivos e executa algumas tarefas quando qualquer um dos arquivos observados foi gravado. O problema é, quando estou no vim e escrevo um arquivo, a saída do grunt começa a renderizar no vim! Aqui estão algumas imagens para ilustrar o problema:

Antes de gravar o arquivo:

Edepoisdeescreveroarquivo:

O que eu tentei?

Eu tentei executar um "stock" vim começando com isto:

vim -u NONE

… Mas o problema permanece. Isto sugere-me que o problema não é com o meu .vimrc . Talvez seja um problema com o iTerm2, eu não sei. Ajuda.

    
por Jezen Thomas 07.11.2013 / 09:59

2 respostas

3

Iniciar um processo como plano de fundo não redireciona automaticamente sua saída. Então, o que o processo de segundo plano envia para stdout ou stderr aparece no terminal em que você iniciou o processo.

Soluções

  • Redirecionar a saída do processo em segundo plano durante a inicialização:
    grunt server >grunt-server.log 2>&1 &
  • Inicie o processo em segundo plano em uma sessão tmux separada.
  • nohup redireciona automaticamente a saída para nohup.out :
    nohup grunt server &
  • se você não precisar da saída, poderá descartá-la:
    grunt server >/dev/null 2>&1 &
por 07.11.2013 / 11:09
1

Você não pode corrigir esse problema do próprio Vim: grunt está apenas cuspindo coisas via stdout an que a saída está vazando em qualquer coisa que você faz nesse shell, incluindo o Vim. Normalmente, um simples <C-l> deve limpar a tela.

Ou você encontra uma maneira de silenciar grunt completamente ou de iniciá-lo em outro painel / guia / janela iTerm.

    
por 07.11.2013 / 11:08