プロンプトの色を変更すると、コピー/貼り付けが正しく機能しません。

プロンプトの色を変更すると、コピー/貼り付けが正しく機能しません。

プロンプトを開き、次を試してください。

  • 次のコードを入力してください。export PS1="\e[1;30m-30-\e[m >"
  • マウスでコピー(コード選択+コピー(マウス選択を有効にすると自動コピー))
  • プロンプトを閉じる
  • 新しいプロンプトを開く
  • 今貼り付け(SHIFT INS)
  • 「HOME」キーと「END」キーを押すと、カーソルが論理位置(コードの先頭と終わり)に移動するのを見ることができます。
  • 次にEnterキーを押します。
  • 色を変更するように求められます。
  • 今貼り付け(SHIFT INS)
  • 「HOME」キーと「END」キーを押すとカーソルが非論理的位置(オフセット発行)

つまり、プロンプトに色を適用すると、コピーしたコードをコピー/貼り付け+変更することはできません。

注:問題があるようで、ここに質問をします。ここにあります。しかし、それは私が割り当てたいものだけに関連しているようです。export PS1="\e[1;30m-30-\e[m >"...何の問題も見えません。プロンプトの色を変更するだけです(実際にはそうします)。しかし、私が見えないことをしているようです。それが何であるかを知っている人はいますか?

答え1

エスケープシーケンスをペアで囲む必要があります\[\]それ以外の場合、オフセットの問題が発生します。

答え2

user1274247が正しいです。エスケープシーケンスを含める必要があります。

これが私のPS1の外観です。

\[\033]0;\u@\h:\w\007\]\[\033[01;31m\]\h\[\033[01;34m\] \w \$\[\033[00m\]

関連情報