3

Windows 7 でSBT 0.13.6 を使用しており、Cygwin (bash シェル) を使用して実行しています。矢印キーに問題があります。上矢印を押すとカーソルが上に移動しますが、コマンド履歴を循環させたいです(デフォルトではそうすべきだと思います)。

問題は、ターミナルに表示される内容にあるようです。[上向き矢印] [Enter] を押すと、前のコマンドが実行されます。しかし、端末に表示されるのは、カーソルが1行上に移動し、入力後、前のコマンドを出力して実行することです。

もちろん、上矢印キーを押した直後に前のコマンドを出力する必要があり、カーソルを移動するべきではありません (少なくとも垂直方向ではありません)。

SBT のコマンドラインはJLine 2によって処理されます。JLine をトレース モードで実行すると、キーの押下が認識され、上向き矢印が「前の履歴」にマップされていることがわかりますが、ターミナルは正しく更新されていません。

また、コマンドを入力するために行末文字を手動で挿入しなければならないという問題もありましたが、SBT 起動スクリプトに次のオプションを追加することで修正されました。

-Djline.terminal=unix

他のオプションも試しました(win、auto、offなど)。ホームディレクトリのファイル jline.inputrc に次の行を入れましたが、役に立ちません:

"\e[A": previous-history
"\e[B": next-history

実際、キーの押下が正しく認識され、正しいコマンドにマップされていることがわかるので、それが役立つとは思いませんでした。

動作は、使用する矢印キー (テンキーのキーかどうか) に依存しません。

回避策は、Windows コマンド シェル (cmd.exe) から SBT を直接実行することです。

Cygwin でコマンド履歴の循環が期待どおりに機能するように、これを修正する方法を知っている人はいますか?

4

0 に答える 0