^C文字は改行bashコマンドの編集の始めにあります。

^C文字は改行bashコマンドの編集の始めにあります。

私はbashみんな次の声明は正しいです...

  1. 私の(一行)プロンプトは特に長いです。
  2. 端末ウィンドウが比較的狭い。
  3. Ctrl + Cを押して前のプロセスを終了すると、そのプロセスが行の^C左側に表示されます。
  4. 編集中のコマンドが次の行に進みます。

…ところで編集者がめちゃくちゃになりました。結局編集中だと思っていた文字で2桁オフセットされた文字を入れ替えることになりました。

手順4で複数行にわたってコマンドを入力すると(上矢印キーを押すのではなく)、同様の状況が発生します。前の行に戻って、プロンプトから2文字を削除できます。

基本的には次のようになります。

(Some output)
^Cuser@host:~/path/to/somewhere $ some long command
that wraps

^C行の先頭に表示され、壊れます。

別のコマンド(例sleep 30:)を試しましたが、^C1行にのみ表示され、プロンプトは次の行に表示されます。この問題は以下でのみ発生するようです。node.jsnode 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] $ 

私が知る限り、数え切れない文字の場合、エスケープ文字が正しいです(\[..を使用\])。

私がする方法:

  • ^Cbashが検出して次の行に移動するようにしますか?または
  • コマンドの編集がめちゃくちゃになりませんか?

ベストアンサー1

引き続き作業できるソリューションが必要な場合は、Enterキーを1〜2回押すだけで、きちんとしたプロンプトが表示されます。

前の出力から「奇妙な」文字が混乱している場合は、リセットコマンドを実行することもできます。

本当に気になって根本的な原因を見つけなければならなかったら、残念ながら私はreadlineのこの特別な複雑さをまったく把握できませんでした...

おすすめ記事