以下は私にとってはうまくいきます(ほとんどの場合、下部のメモを参照してください):
- ミントシェルを使用。これは、新しい cygwin インストールのデフォルトのシェルだと思いますが、しばらくの間、代替として含まれていました。mintty.exe が
<cygwin home>\bin
フォルダーに存在する場合は、すぐに使用できます。存在しない場合は、setup.exe から通常の cygwin パッケージを選択してインストールできます。
- mintty ウィンドウを開き、任意の場所を右クリックして、
Options...
->Keys
に移動し、チェックされていることSend Backspace as ^H
を確認します。これにより、REPL がバックスペースを正しく解釈できるようになります。
必要なのはScala REPLを実行するだけですが、実行しようとsbt console
すると例外が発生する可能性があります。sbt
それを乗り越えるには、引数なしで実行して sbt プロンプトを表示します。そこから実行します:
eval System.setProperty("jline.terminal", "scala.tools.jline.UnixTerminal")
それから
console
または、単一のコマンドとして (両方のセミコロンが重要です):
; eval System.setProperty("jline.terminal", "scala.tools.jline.UnixTerminal") ; console
私が知る限り、これは少なくとも部分的には Scala REPL と、互換性のないバージョンの JLine を使用する sbt プロンプトが原因です。特に、Scala REPL はライブラリの周りに独自のラッパーを作成し、sbt が JLine ライブラリを直接使用している間にそれを使用しているようです。
ノート
私が遭遇し続けている制限の 1 つは、シェル ウィンドウの水平方向のスペースがより広い場合でも、REPL が列 80 で折り返されることです。それだけでなく、REPL がこのようにラップすると、次の行に進むのではなく同じ行を上書きし、履歴から長い行を取得すると、実際に編集している行の上にカーソルが押し出されます。