私はCygwin bash Promptを使用しています。長いコマンドの場合、PS1を単に '$'に設定しても、次の行に移動するのではなく、テキストが同じ行で折り返されます。
これがスクリーンショットです
私はすでにMinTTYを使用しており、PS1で改行を削除しても効果がありませんでした。一つのアドバイス このページ が助けになりました。私はこのbashコマンドを実行しました:
kill -WINCH $$
私の場合、これを実行すると、ログアウトして再度ログインした後でも問題が修正されました。これが常に当てはまるかどうかはわかりません。
私にとっての解決策は、次の行を.bashrcに追加することでした。
PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM
プロンプトの印刷できない文字は、\[
... \]
で囲む必要があることに注意してください。
MinTTYでも同じ問題が発生しました。問題はおそらくプライマリプロンプト(PS1)に関係しています。
私の解決策は、PS1から最後の「改行」文字を削除することでした(「$」記号の直前):
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 ~ $
http://cygwin.com/ml/cygwin/2001-07/msg00140.html を参照してください。
この変更を永続的にするには、export PS1 = '[\ e] 0;\w\a]\n [\ e [32m]\u @\h [\ e [33m]\w [\ e [0m] \を追加します$ 'を〜/ .bashrcファイルに追加します。
@jtpereydaの answer は確かに目立っています。しかし、どういうわけか、私はこれを手放すことができず、少し深く掘ることができませんでした。
このコメント を展開すると、vim(またはシェルからttyを制御する他のフルスクリーンアプリケーション)でターミナルのサイズを変更した場合、結果のSIGWINCH
はnotはシェルに送信されないため、制御を取り戻しても、端末のサイズが変更されていることはわかりません。
端末のサイズを変更する場合、vimが実行されているマスターptyでioctl(..., TIOCSWINSZ, ...)
を呼び出す必要があります。これにより、vimのプロセスグループでkillpg(SIGWINCH)
が生成されます。
問題は、vimが実行されたシェルとは異なる独自のプロセスグループで実行されるため、bashシェルがSIGWINCH
を受信せず、行/列を適切に調整しないことです。
永続的な回避策が必要な場合は、_shopt -s checkwinsize
_を_.bashrc
_に追加します。これにより、各コマンドから戻った後にbashがウィンドウサイズ(ioctl(..., TIOCGWINSZ, ..)
)をチェックし、その行/列を更新します。
端末の設定に問題があると思われます(おそらく)。
すでにそのセッションを終了して、新しいセッションを再開しようとしたと思います。
Cygwinターミナルの解決策は得られませんが、 MinTTY を試してみてください(実際にはより優れています)。
akatakritos によるコメントのように、vimが開いている間に端末のサイズを変更した可能性があります。
これが発生した場合は、もう一度端末のサイズを変更するだけで、問題は解消します。