Tekst procesu w tle pojawia się w terminalu vim

1

Plakat po raz pierwszy, czyhający od dawna, przeszukany, nie mógł znaleźć itp. Itp.

Korzystam z vima w tmuxie, w iTerm2. Używam serwera z Grunt.js, który działam w tle, na mojej drodze. Zaczynam mój serwer gruntu w tle w następujący sposób:

grunt server &

Grunt obserwuje również kilka plików i uruchamia niektóre zadania po zapisaniu dowolnego z oglądanych plików. Problem polega na tym, że kiedy jestem w vimie i piszę plik, dane wyjściowe z gruntu zaczynają się renderować w vimie! Oto kilka zrzutów ekranu ilustrujących problem:

Przed zapisaniem pliku:

wprowadź opis zdjęcia tutaj

A po zapisaniu pliku:

wprowadź opis zdjęcia tutaj

Co próbowałem?

Próbowałem uruchomić vim „stockowy”, zaczynając od tego:

vim -u NONE

… Ale problem pozostaje. To sugeruje mi, że problem nie dotyczy mojego .vimrc. Być może to problem z iTerm2, nie wiem. Wsparcie.

Jezen Thomas
źródło
Czy nieuczciwy tekst jest rzeczywiście zapisany w pliku i nadal występuje po ponownym załadowaniu?
FreudianSlip,
Nie, jest usuwane, gdy vim przerysowuje ten region. Zauważyłem to po wyłączeniu lazyredrawi przesunięciu kursora nad artefaktami.
Jezen Thomas

Odpowiedzi:

3

Rozpoczęcie procesu jako tła nie powoduje automatycznego przekierowania wyniku. Więc to, co proces w tle wysyła stdoutlub stderrpojawia się w terminalu, w którym rozpocząłeś proces.

Rozwiązania

  • Przekieruj dane wyjściowe procesu w tle podczas uruchamiania:
    grunt server >grunt-server.log 2>&1 &
  • Rozpocznij proces w tle w osobnej tmuxsesji.
  • nohupautomatycznie przekierowuje dane wyjściowe do nohup.out:
    nohup grunt server &
  • jeśli nie potrzebujesz danych wyjściowych, możesz je odrzucić:
    grunt server >/dev/null 2>&1 &
pabouk
źródło
1

Nie można rozwiązać tego problemu od samego Vima: gruntpo prostu pluje coś przez stdoutwyjście, które przecieka we wszystkim, co robisz w tej powłoce, w tym Vim. Zwykle prosty <C-l>powinien oczyścić ekran.

Albo znajdziesz sposób na gruntcałkowite wyciszenie, albo uruchomisz go w innym panelu / karcie / oknie iTerm.

romainl
źródło