6 votes

Suspendu (sortie tty) lors du lancement d'éditeurs comme vim, vi, emacs, ou nano

J'utilise Oh-My-ZSH depuis quelques semaines maintenant et c'est une excellente expérience. Aujourd'hui, cependant, le terminal a commencé à agir bizarrement. Lorsque j'essaie d'exécuter un éditeur de terminal interactif comme vim , vi , emacs ou nano le processus est suspendu :

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

Bien sûr, je peux l'ouvrir à nouveau avec fg mais c'est incroyablement ennuyeux.

Je n'ai pas rencontré ce problème hier. Depuis, je n'ai pas redémarré mon ordinateur, ni iTerm, ni même fermé les onglets de terminal (à partir desquels j'ai réussi à exécuter vim hier sans qu'il soit suspendu).

De plus, j'ai temporairement rétabli mon shell en bash. Il présente maintenant le même comportement de suspension que ZSH. Ce problème se produit à la fois dans iTerm2 et dans l'application Terminal.app native de Osx pour bash et zsh, donc on peut supposer que ce n'est pas un problème avec mon shell.

J'ai parcouru toutes les solutions proposées sur les 10 premières pages de Google pour ce problème, mais je n'en ai pas trouvé une qui le résolve. J'en arrive à un point où je ne comprends plus pourquoi cela se produit et où je ne peux donc pas le déboguer.

Y a-t-il un moyen d'obtenir des processus interactifs comme vim pour arrêter de se suspendre lorsque j'essaie de les exécuter à partir d'un terminal ?

Edit : Depuis cet article, j'ai essayé de nouveaux onglets iTerm et Terminal, relancé iTerm et Terminal et redémarré mon ordinateur. Toutes ces tentatives n'ont pas permis de résoudre le problème.

4voto

sirlark Points 111

Il s'avère que j'ai mal lu le premier résultat sur Google . J'ai supposé à tort qu'ils faisaient référence au shell du terminal (et quand ils ont dit shell plus tard, j'ai supposé qu'ils voulaient dire $SHELL même si j'aurais dû être prévenu par le fait que shell n'était pas en majuscule). Au lieu de cela, ils se référaient au paramètre de l'interpréteur de commandes vim, qui avait, à tort, l'attribut -i au lieu de l'option -l drapeau.

Donc, si quelqu'un d'autre a ce problème, allez dans votre .vimrc et changez pour vous assurer que la ligne qui définit votre shell ressemble à ça :

set shell=/bin/zsh\ -l

(Remplaçant /bin/zsh avec la valeur de which zsh s'il est installé dans un endroit non standard, bien sûr).

Engagement de référence : https://github.com/devx/vimified/commit/772e130c9c359ac87927a963e00a9cc6597cd170

3voto

DigitalRoss Points 80400

Le terminal suspend l'éditeur parce qu'un autre processus écrit dans le terminal.

Running stty -tostop devrait le réparer.

Si cela ne résout pas le problème, jetez un coup d'œil à ce problème GitHub de la oh-my-zsh dépôt.

le problème résulte d'un réglage :set shellcmdflag=-ic . Après que j'ai commenté cela de .vimrc tous les problèmes pertinents ont été résolus.

D'autres utilisateurs ont manifestement rencontré ce problème. Ceci semble être la solution correcte.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X