Par exemple, si je suis dans tail -f
un fichier ou dans read
une entrée utilisateur, <Enter>
cela produira ^M
dans le terminal au lieu de terminer read
ou d'ajouter une nouvelle ligne à stdout. ^J
fonctionne bien.
Je suis ssh
entré dans le système Ubuntu, si cela compte. Cela m’arrive à la fois en zsh et en bash. Une solution avec laquelle j'ai joué consiste à remapper le dans ^M
to ^J
dans zsh, mais il semble que cela ne résoudrait pas le problème fondamental. Quelqu'un sait ce qui pourrait causer cela?
Edit: Pour répondre à quelques questions, je me ssh
lance dans Ubuntu sous OSX. J'utilise iTerm et zsh. J'ai également oublié de mentionner que j'utilise tmux sur la machine Ubuntu.
Edit 2: Vous avez manqué une question. Quand je tape Ctrl-V Enter
je reçois ^M
(à la fois sur OSX et Ubuntu).
Edit 3: Sous OSX et echo $TERM
produit Ubuntu screen-256color
.
la source
Réponses:
Si quelqu'un d'autre a ce problème, il s'agit probablement d'un problème de paramètre de ligne de terminal stty plutôt que d'un problème TERM. Si cela vous arrive à nouveau, essayez de courir
stty sane
et dites -nous si cela résout le problème.la source
Essayez de courir
stty -a
pour voir les paramètres de votre terminal. Je soupçonne que votreicrnl
réglage n'est pas défini et sera affiché sous la forme-icrnl
(le signe moins signifie qu'il est éteint) au lieu d'avoir son réglage habituel d'activation. Voici comment mon terminal est normalement configuré lorsque je me connecte:Et je n’ai aucun problème avec les fins de ligne: soit retour (^ M), soit entrée (^ J) mettra fin aux lignes d’entrée. Mais si j'éteins
icrnl
^ M, des codes apparaissent soudainement à chaque fois que je parle à un programme et que je clique sur Entrée:Le code
icrnl
signifie "retourne les retours à la ligne dans les retours à la ligne" et cache au programme en cours d'exécution que vous pouvez taper ^ M alors qu'Unix veut vraiment ^ J. Auparavant, les anciens claviers avaient une touche Entrée et Entrée séparée (où Return vous faisait généralement avancer un formulaire et que Entrée l'avait soumis), mais aujourd'hui, nous n'avons généralement qu'une touche de fin de ligne. Ce paramètre de terminal permet donc de combiner les deux significations.Ajoutez la
stty icrnl
commande à votre.profile
ou.bashrc
si vous trouvez qu’il s’agit bien du paramètre qui pose problème.la source