1

私の質問は、私のプレスghciに適切に反応させる方法です。homeend

ghciを使用haskelineしてユーザー入力に反応し、haskelineの動作が部分的に定義されていることを学びました~/.haskeline

endkey とhomekey ofのサポート不足にghci長い間悩まされています。そこで、独自の~/.haskelineファイルを定義しようとしました。

まず:

bind: a home
bind: b end

keyseq: "a" home
keyseq: "b" end

bind: left home
bind: right end

aどちらも、カーソルを一番左に押したときと同じように動作し、他のものと同様に動作します。

第二に:

bind: home a
bind: end b

それは、私が私ghciを無視し、絶対homeに押しているように見えることを示しています。end

homeでは、どうすればand にendキーghciを送信できhasklineますか?

4

2 に答える 2

2

これはデフォルトで機能するはずです。homeほとんどの場合、キーボードがおよびendキーとして送信するものを Haskeline が認識していません。これは、OS と端末の設定によって異なります。

$TERMこれらのキーをサポートする設定に調整すると、自動的にキーHaskeline 選択されます。

それ以外の場合、Haskeline trac wikiには、不明なキー シーケンスを認識させるためのレシピがあります。これは、POSIX システムで動作するはずです (Windows ではなく、homeendもデフォルトで動作しているはずです)。これを現在のケースに適応させる:

$ ghc -e getLine
<press home, then return>...some noise here...
"...haskell string for home..."
$ ghc -e getLine
<press end, then return>...some other noise...
"...haskell string for end..."

に対応する行を追加し~/.haskelineます。

keyseq: your-terminal "...haskell string for home..." home
keyseq: your-terminal "...haskell string for end..." end

変数your-terminalの内容はどこにありますか。$TERM

于 2015-11-16T02:27:17.243 に答える
0

Most likely Haskeline isn't recognizing whatever your keyboard sends as the home and end keys. This depends on your OS and terminal setup.今日初めて知った。

しかし~/.haskeline、ラップトップ(Ubuntu 14.04、ghc-7.10.2)に適合したものを作成することに成功しました。

keyseq: "\ESCOH" home
keyseq: "\ESCOF" end
于 2015-11-16T05:52:16.623 に答える