screenを使ってるとき, プロンプトの前に変な出力がでます

手っ取り早い解決策はこちらです.

次のコマンドをfish上で実行してください.

function fish_title; end; funcsave fish_title

これで解決するはずです.

さらに何が起こっているか説明します.

fishはターミナルにタイトルバーメッセージを設定します. screenがこの機能をサポートしており, ターミナルがサポートしていない場合, screenはエスケープコードを出力しターミナルはそれを無視することなくテキストとして表示してしまいます. fishはターミナルの種類がなんであるか判別する方法を持たないので, fish側からこの問題を解決することはできません. したがって, 上記のようにタイトルバーメッセージを空にするしか方法がありません.

fishはデフォルトのタイトルバーメッセージを持っていて, それはfish_title関数が未定義のときに使われることに注意してください. そのため単純にfish_title関数を削除してもうまくいきません.