17

コマンドプロンプトを次のように設定した場合:

export PS1='\033[0;33m[\u@\h \w]\$ \033[00m'

プロンプトの色は黄色で、'$' 文字の後のすべてがデフォルトの端末の色になります。これは私が期待するものです。ただし、コマンドラインを思い出して編集しようとすると、カーソルを移動します-コマンドラインを編集しようとしている場合は、UpArrow/Ctrl-A (set -o emacs) または ESC K (set -o vi) のいずれかです。が十分に長い場合、カーソルはコマンドの先頭に配置されません。Ctrl-A (set -o emacs) または ^ (set -o vi) のいずれかを入力しても、カーソルは画面上で呼び出した行の先頭に移動しません。同様に、カーソルを行末 (Ctrl-E または $) に配置しようとすると、行末と思われる文字数を超えてカーソルが配置されます。プロンプトに追加したエスケープ文字によって bash が混乱しているようです。

4

1 に答える 1

27

プロンプトの長さを計算するときに非印刷文字を無視すること\[ ... \]がわかるように、非印刷文字を囲む必要があります。bash

export PS1='\[\033[0;33m\][\u@\h \w]\$ \[\033[00m\]'
于 2013-07-02T19:34:00.443 に答える