Ich verwende die Cygwin-Bash-Eingabeaufforderung, und bei langen Befehlen wird der Text in derselben Zeile umgebrochen, anstatt in die nächste Zeile zu wechseln, obwohl meine PS1 einfach auf "$" eingestellt ist.
Hier ist ein Screenshot,
Ich verwende die Cygwin-Bash-Eingabeaufforderung, und bei langen Befehlen wird der Text in derselben Zeile umgebrochen, anstatt in die nächste Zeile zu wechseln, obwohl meine PS1 einfach auf "$" eingestellt ist.
Hier ist ein Screenshot,
Antworten:
Ich habe bereits MinTTY verwendet und das Entfernen des Zeilenumbruchs in PS1 hat auch nicht geholfen. Ein Ratschlag auf dieser Seite hat geholfen. Ich habe diesen Bash-Befehl ausgeführt:
kill -WINCH $$
In meinem Fall hat das einmalige Ausführen dieses Befehls das Problem behoben, auch nachdem ich mich abgemeldet und wieder angemeldet habe. Ich bin mir nicht sicher, ob dies immer der Fall ist.
-WINCH
, signalisiert dies dem Bash-Prozess, dass die Größe des Terminalfensters geändert wurde. Das sollte also nach jeder Größenänderung des Terminalfensters geschehen, denke ich.
Für mich bestand die Lösung darin, die folgenden Zeilen zu .bashrc hinzuzufügen:
PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM
Beachten Sie, dass nicht druckbare Zeichen in der Eingabeaufforderung in \[
... eingeschlossen sein müssen
\]
.
Ich hatte das gleiche Problem auch mit MinTTY. Das Problem hat wahrscheinlich etwas mit der primären Eingabeaufforderung (PS1) zu tun.
Die Lösung für mich war das Entfernen des letzten 'New Line'-Zeichens aus PS1 (direkt vor dem' $ '-Zeichen):
user@host ~
$ echo $PS1
\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
user@host ~
$ export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ '
user@host ~ $
Weitere Informationen finden Sie unter http://cygwin.com/ml/cygwin/2001-07/msg00140.html .
Fügen Sie Export PS1 = '[\ e] 0; \ w \ a] \ n [\ e [32m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ hinzu, um diese Änderung dauerhaft zu machen. $ 'in Ihre ~ / .bashrc-Datei.
Wie von dregad und ak2 kommentiert, genügte die Einstellung export TERM=cygwin
in meiner ~/.bashrc
Datei, um dieses Problem für mich zu beheben.
@ jtpereydas Antwort trifft es mit Sicherheit. Aber aus irgendeinem Grund konnte ich das nicht loslassen und etwas tiefer graben.
Erweitern Sie diesen Kommentar , wenn Sie die Größe des Terminals in vim (oder einer anderen Vollbildanwendung, die die Kontrolle über tty von der Shell übernimmt) ändern, wird das Ergebnis SIGWINCH
häufig nicht an die Shell gesendet. Wenn es also die Kontrolle zurückerhält, funktioniert es nicht weiß nicht, dass die Größe des Terminals geändert wurde.
Wenn Sie die Größe Ihres Terminals ändern, sollte es ein ioctl(..., TIOCSWINSZ, ...)
auf dem Master-Pty aufrufen, auf dem vim ausgeführt wird. Dies führt wiederum zu einer killpg(SIGWINCH)
auf vim befindlichen Prozessgruppe.
Das Problem ist, dass vim in einer eigenen Prozessgruppe ausgeführt wird, die sich von der Shell unterscheidet, von der es ausgeführt wurde, sodass die Bash-Shell die nicht empfängt SIGWINCH
und ihre Zeilen / Spalten nicht entsprechend anpasst.
Wenn Sie eine dauerhafte Problemumgehung wünschen, ergänzen Sie shopt -s checkwinsize
Ihre .bashrc
. Dadurch überprüft bash die Fenstergröße ( ioctl(..., TIOCGWINSZ, ..)
) nach der Rückkehr von jedem Befehl und aktualisiert seine Zeilen / Spalten.
In Ihren Terminaleinstellungen ist (wahrscheinlich) etwas kaputt.
Ich vermute, Sie hätten bereits versucht, diese Sitzung zu beenden und eine neue neu zu starten.
Während Sie keine Lösung für das Cygwin-Terminal erhalten, probieren Sie MinTTY aus (es ist tatsächlich besser).
Wie von akatakritos kommentiert , haben Sie wahrscheinlich die Größe Ihres Terminals geändert , während vim geöffnet war.
Wenn dies passiert, ändern Sie die Größe des Terminals einfach noch einmal und das Problem ist behoben.
TERM
Umgebungsvariable eingestellt? Für die Cygwin-Konsole sollte es so seincygwin
.