Suspended (tty-Ausgabe) beim Starten von Editoren wie vim, vi, emacs oder nano

Ich benutze Oh-My-ZSH jetzt seit ein paar Wochen und es war eine großartige Erfahrung. Aber erst heute fing das Terminal an, sich seltsam zu verhalten. vimWenn ich versuche, einen interaktiven Terminal-Editor wie , vi, emacsoder auszuführen nano, wird der Prozess angehalten:

$ vim
[1] + 3515 suspended (tty output) vim

Natürlich kann ich es mit wieder öffnen fg, aber das ist unglaublich nervig.

Gestern hatte ich dieses Problem nicht. Seitdem habe ich weder meinen Computer noch iTerm neu gestartet oder Terminal-Tabs geschlossen (von denen ich gestern vim erfolgreich ausgeführt habe, ohne dass es angehalten wurde).

Außerdem habe ich meine Shell vorübergehend wieder auf Bash zurückgesetzt. Es zeigt jetzt das gleiche Suspendierungsverhalten wie ZSH. Dieses Problem tritt sowohl in iTerm2 als auch in der nativen osx Terminal.app für bash und zsh auf, also ist dies vermutlich kein Problem mit meiner Shell.

Ich habe jede Lösung auf den ersten 10 Seiten von Google für dieses Problem durchgesehen, aber keine gefunden, die es behebt. Ich nähere mich dem Punkt, an dem ich nicht mehr verstehe, warum dies geschieht, und es daher nicht debuggen kann.

Gibt es eine Möglichkeit, interaktive Prozesse dazu zu bringen, vimsich nicht mehr selbst anzuhalten, wenn ich versuche, sie vom Terminal aus auszuführen?

Bearbeiten: Seit diesem Beitrag habe ich neue Registerkarten für iTerm & Terminal ausprobiert, iTerm & Terminal neu gestartet und meinen Computer neu gestartet. All dies konnte dieses Problem nicht lösen.

Antworten (2)

Das Terminal hält den Editor an, weil ein anderer Prozess in das Terminal schreibt.

Laufen sollte es beheben.stty -tostop

Wenn das Problem dadurch nicht behoben wird, sehen Sie sich dieses GitHub-Problem aus dem oh-my-zshRepository an.

das Problem ergibt sich aus einer Einstellung :set shellcmdflag=-ic. Nachdem ich kommentiert habe, dass aus .vimrcalle relevanten Probleme gelöst wurden.

Andere Benutzer sind offensichtlich auf dieses Problem gestoßen. Dies scheint die richtige Lösung zu sein.

Danke, dass du so schnell geantwortet hast! Leider habe ich versucht, auszuführen stty -tostop, aber nachfolgende Versuche, vim (oder nano, vi, emacs usw.) auszuführen, werden immer noch ausgesetzt. ps azeigt, dass die einzigen Dinge, die ausgeführt werden, login -fpund sind -zsh(und wie ich es verstehe, loginstartet es -zsh). Ist es möglich, dass etwas anderes läuft, das ich nicht sehen kann und das auf das Terminal schreibt?
In Ihrer Frage sagten Sie, dass Sie Ihren Computer weder neu gestartet noch Terminalfenster / Registerkarten geschlossen haben. Wenn dies immer noch der Fall ist, versuchen Sie beides. @PhpMyCoder
Von der Zeit, als es vimzuletzt funktionierte, bis heute, als es anfing, anzuhalten, hatte ich meinen Computer/iTerm nicht neu gestartet oder Terminal-Tabs geschlossen. Ich habe jetzt alle 3 gemacht und trotzdem bleibt vim weiterhin ausgesetzt. Sorry für die Verwirrung, ich formuliere die Frage um.
Ich habe meine Antwort geändert. @PhpMyCoder

Es stellt sich heraus, dass ich das erste Ergebnis bei Google falsch gelesen habe . Ich habe fälschlicherweise angenommen, dass sie sich auf die Terminal-Shell bezogen (und als sie shellspäter sagten, nahm ich an, dass sie meinten , obwohl ich durch die Tatsache, dass es nicht groß geschrieben wurde, $SHELLhätte einen Hinweis bekommen sollen ). shellStattdessen verwiesen sie auf die vim-Shell-Einstellung, die fälschlicherweise das -iFlag anstelle des -lFlags hatte.

Falls also jemand anderes dieses Problem hat, gehen Sie zu Ihrem .vimrcund ändern Sie, ob die Zeile, die Ihr festlegt, shellso aussieht:

set shell=/bin/zsh\ -l

( Natürlich /bin/zshdurch den Wert von ersetzen, wenn es an einem nicht standardmäßigen Ort installiert ist).which zsh

Referenzcommit: https://github.com/devx/vimified/commit/772e130c9c359ac87927a963e00a9cc6597cd170