私はbash
。みんな次の声明は正しいです...
- 私の(一行)プロンプトは特に長いです。
- 端末ウィンドウが比較的狭い。
- Ctrl + Cを押して前のプロセスを終了すると、そのプロセスが行の
^C
左側に表示されます。 - 編集中のコマンドが次の行に進みます。
…ところで編集者がめちゃくちゃになりました。結局編集中だと思っていた文字で2桁オフセットされた文字を入れ替えることになりました。
手順4で複数行にわたってコマンドを入力すると(上矢印キーを押すのではなく)、同様の状況が発生します。前の行に戻って、プロンプトから2文字を削除できます。
基本的には次のようになります。
(Some output)
^Cuser@host:~/path/to/somewhere $ some long command
that wraps
^C
行の先頭に表示され、壊れます。
別のコマンド(例sleep 30
:)を試しましたが、^C
1行にのみ表示され、プロンプトは次の行に表示されます。この問題は以下でのみ発生するようです。node.js:node some_command_that_wraps.js
。
重要な場合は、明るい色のgit統合バージョンがありますPROMPT_COMMAND
。以下で見つけることができます。フラッグハブ、もし私が愚かなことをした場合に備えて。
修正する
たとえば、私のPS1は次のように設定されます(少しパックされました)。
\[\e]0;\u@\h:\w\a\]
\[\e[0;93m\]\u@\h\[\e[0;96m\]:\w
\[\e[0;97m\]{\[\e[0;94m\]master\[\e[0;92m\]\[\e[0;91m\] ~1\[\e[0;97m\]}
\[\e[0m\]\[\e[0;96m\]\$\[\e[0m\]
...表示(より多くの色):
roger@roger-p5q:~/Source/rlipscombe/bash_profile [master ~1] $
私が知る限り、数え切れない文字の場合、エスケープ文字が正しいです(\[
..を使用\]
)。
私がする方法:
^C
bashが検出して次の行に移動するようにしますか?または- コマンドの編集がめちゃくちゃになりませんか?
ベストアンサー1
引き続き作業できるソリューションが必要な場合は、Enterキーを1〜2回押すだけで、きちんとしたプロンプトが表示されます。
前の出力から「奇妙な」文字が混乱している場合は、リセットコマンドを実行することもできます。
本当に気になって根本的な原因を見つけなければならなかったら、残念ながら私はreadlineのこの特別な複雑さをまったく把握できませんでした...