概要
Groovyには対話型モードとしてgroovyshが標準で付属されている。
UnixのシェルやWindowsのコマンドプロンプトで起動すると対話モードになり簡単にテストするときは便利に使うことができる。
しかし、WindowsのCygwin上で使うときはバックスペースや矢印キーを押下した時、正常に動作せず自分が入力した文字を突き抜けてカーソルが移動してしまう。
あまりにも不便でかと言ってコマンドプロンプトは使う気もないし、そもそもCygwin上にSDKMANで入れたものだから参照もしていなかった。
諦めてちょっとたまに試したいときはGroovyConsoleを使っていたのだが偶然解決策を見つけたので備忘録と共有を兼ねて
方法
Groovyとは全く関係ないがElixirの情報を調べていたら下記のページを見つけた。
Cygwin環境下でElixirを使うときのバッドノウハウ
ElixirをCygwin出たいわモード使う時のノウハウだけど、groovyshと同じ問題が出るみたい。
そんなときにはrlwrapを使うと、安直にまともな挙動を得ることができます。
なるほど、そうなのか
rlwrapを調べてみたけどよくわからん。各種対話系ツールの矢印キーとかをフックしてshellのように履歴参照できるようにするツールみたい。
とりあえず導入してみる。
babunを使っている場合pactでインストールできる。普通のCygwinの場合はapt-cyg使えるのかな?
pact install rlwrap
これで導入完了したのでgroovysh起動してみる。
rlwrap -A groovysh
お!起動する!矢印キーで業移動したりしないし、履歴参照まで出来る。
これは便利だ。
groovysh起動するたびにコマンド打つのは面倒なのでaliasに登録
.bashrcや.zshrcの最後尾に書きを記述
alias groovysh='rlwrap -A groovysh'
これでgroovysh起動するだけでrlwrapされたモードで立ち上がることになる。
あと、Cygwinでgroovysh立ち上げた時は--terminal=unixってオプションつけたほうがいいと聞いたので下記のように書いたほうがいいのかなぁ(違いがよくわかんない)
alias groovysh='rlwrap -A groovysh --terminal=unix'
ということで今まで苦難の日々を過ごしてきたが、布教活動がだいぶ捗るようになった。