私は最初にWindows上のAnsi Cで小さなプログラムを作成し、組み込みのGCCを使用してUbuntuでコンパイルしました。
プログラムは簡単です:
scanf()
を使用してコンソールから行を読み取ります。しかし、奇妙なことが起こります。カーソルを移動しようとすると、4文字が印刷されます。
^[[A
"^[[B
"^[[C
"^[[D
"どうすればこれを回避できますか?
カーソルを移動するのではなく、なぜこれらの4文字を印刷するのですか?
それは、キーボードが実際にPCに送信するものであるためです(より正確には、端末が実際にキーボードから受信するものを印刷するものです)。 bash
は、たとえば、それらの値を取得し、それらを解読し、移動したいことを理解します。そのため、カーソルを移動(左/右の場合)するか、履歴を使用して前のコマンドをフェッチします(上/下) )。したがって、プログラムが魔法のように矢印キーをサポートすることは期待できません。
ただし、端末からの標準入力からの読み取りはすでに左/右矢印キーをサポートしています(私は信じていますが、テストと確認のために今のところLinuxにはいません)。それで、私の推測では、干渉する別の問題があると思います。考えられる原因の1つは、修飾キーの1つがスタックしていることです。おそらく、ALT、CTRL、またはSUPER?
Osx(mac)から来ている人のために、シェルをbash
に変更してみてください
Terminal -> Preferences -> Shells open with -> [select] Command (complete path)
その後貼り付けます
/bin/bash