Ubuntuで長い間気づいていたことは、新しい行に折り返すのではなく、端末の幅よりも長い(幅の広い)コマンドラインでコマンドを入力しているときです同じ行の1列目で、コマンドラインの先頭の上書きを開始します。(実際のコマンドは実際には上書きされませんが、視覚的には、表示されたテキストが上書きされます)。
見ずに説明するのは難しいですが、端末の幅が20文字(私の場合は120文字に近い-例のため)で、英語のアルファベットをエコーしたいとします。私が入力するのはこれです:
echo abcdefghijklmnopqrstuvwxyz
しかし、キーを押す前の私の端末は次のようになっています。
pqrstuvwxyzghijklmno
Enterキーを押すと、エコーします
abcdefghijklmnopqrstuvwxyz
そのため、コマンドが正しく受信されたことがわかります。「o」の後にタイピングをラップし、同じ行で最初からやり直しました。
幅が20文字しかない端末でこのコマンドを入力すると、次のようになります。
echo abcdefghijklmno
pqrstuvwxyz
背景:私はシェルとしてbashを使用しており、〜/ .bashrcに次の行があります。
set -o vi
VIコマンドを使用してコマンドラインをナビゲートできるようにします。現在、Ubuntu 10.10サーバーを使用しており、Puttyでサーバーに接続しています。
私が働いていた他の環境では、長いコマンドラインを入力すると、コマンドが端末の幅より長くなり、入力し続けると、作業中の行の下に新しい行が追加され、コマンドが表示されます2つの異なる行。しかし、Ubuntuの使用を覚えている限り、私の長いコマンドは1行しか占有しません。
これは、履歴内の前のコマンドに戻るときにも発生します(Escを押してから「K」を押して前のコマンドに戻る)-端末幅より長い前のコマンドに到達すると、コマンドラインが取得されますマングルされ、コマンドのどこにいるのかわかりません。
長いコマンド全体が表示されることがわかった唯一の回避策は、「Esc-V」を押すことです。これにより、VIエディターで現在のコマンドが開きます。
.bashrcファイルに奇妙なものはないと思います。「set -o vi」行をコメントアウトしましたが、まだ問題がありました。
Puttyの新しいコピーをダウンロードし、構成に変更を加えませんでした。接続するためにホスト名を入力しただけで、まだ問題があります。構成を変更します)
他の誰かがこの問題を抱えていて、誰もそれを修正する方法を考えることができますか?
編集
それは私の.bashrcファイルでした。同じプロファイルをマシンからマシンにコピーし、$ PS1で特殊文字を使用して、何らかの形でそれをスローしました。私は今、私の$ PS1の標準bash変数に固執しています。
.bashrcのヒントを提供してくれた@ændrükに感謝します!
...編集の終了...
/etc/skel/.bashrc
。変更を有効にするには再接続する必要があり、独自の.bashrcのバックアップを必ず保持してください。