如何编写 ~/.haskeline 以便 ghci 或 haskeline 可以在 `home` 和 `end` 上正常运行
How to write ~/.haskeline so that ghci or haskeline can behave properly on `home` and `end`
我的问题是如何让我的 ghci
在我的 home
和 end
按下时做出正确的反应。
我了解到 ghci
使用 haskeline
对用户输入做出反应,并且 haskeline
的行为在某种程度上部分定义在 ~/.haskeline
中。
长期以来,我一直在为 end
键和 ghci
的 home
键缺乏支持而苦恼。所以我尝试定义自己的 ~/.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
和 end
密钥发送到 ghci
和 haskline
?
默认情况下应该工作。很可能 Haskeline 无法识别您的键盘作为 home
和 end
键发送的任何内容。这取决于您的 OS 和终端设置。
您可能需要将 $TERM
设置调整为支持这些键的设置,之后 Haskeline
应该 自动拾取它们。
否则,Haskeline trac wiki 有一个方法可以让它识别未知的键序列,它应该可以在 POSIX 系统上工作(不适用于 Windows,其中 home
和 end
也应该已经默认工作了)。将其适应当前情况:
$ 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
变量中的任何内容。
我目前不太了解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
我的问题是如何让我的 ghci
在我的 home
和 end
按下时做出正确的反应。
我了解到 ghci
使用 haskeline
对用户输入做出反应,并且 haskeline
的行为在某种程度上部分定义在 ~/.haskeline
中。
长期以来,我一直在为 end
键和 ghci
的 home
键缺乏支持而苦恼。所以我尝试定义自己的 ~/.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
和 end
密钥发送到 ghci
和 haskline
?
默认情况下应该工作。很可能 Haskeline 无法识别您的键盘作为 home
和 end
键发送的任何内容。这取决于您的 OS 和终端设置。
您可能需要将 $TERM
设置调整为支持这些键的设置,之后 Haskeline
应该 自动拾取它们。
否则,Haskeline trac wiki 有一个方法可以让它识别未知的键序列,它应该可以在 POSIX 系统上工作(不适用于 Windows,其中 home
和 end
也应该已经默认工作了)。将其适应当前情况:
$ 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
变量中的任何内容。
我目前不太了解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