预期行为:使用readline快捷键的键盘快捷键,如this answer。
实际上发生了什么:按Ctrl+l
清除屏幕
irb
2023-08-08 20:31:17 -0600
Loaded Profile methods
irb.main{
irb.m${ ^Ltyping stuff^E^A
ruby版本:ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
我想我的~/.irbrc
可能无意中破坏了快捷方式。我已经重命名了它,所以它不是源代码,但行为保持不变,irb将“^#{letter_I_pressed}”写入屏幕,而不是readline行为。
我注意到<esc>
使Ctrl-l
能够清除和 * 一些 * 类似vi的行为(0移动到行的开头,Shift-c
不做任何事情)。所以,也许将我的bash模式设置为vi会破坏这个?在我的/etc/profile中:
set -o vi
set editing-mode vi
set keymap vi
set show-mode-in-prompt on
所以我尝试了:set -o emacs ; set editing-mode emacs ; set keymap emacs ; irb
奇怪的是,这并没有启用emacs的readline行为,也没有改变我上面描述的内容。
1条答案
按热度按时间zpjtge221#
可能出现的问题及Wrapper解决方案
您的Ruby可能在没有readline支持的情况下编译。这通常是由于Ruby或pkgconfig中的最新更改,其中各种编译标志没有得到正确处理,因为pkgconfig无法找到正确的库。
请确保已安装系统必备组件并在编译期间启用功能标志。在我遇到这个问题的一些平台或特定版本上,我还发现除了readline之外安装rlwrap也很有用,这是一个readline Package 器,为缺少它的应用程序提供GNU readline和BSD libedit支持。举例来说:
已经为我解决了当readline或libedit没有正确编译成irb或icr时的问题,后者是Crystal的REPL,我最近发现readline和libedit支持因为这个问题而被击中或错过。
GNU Readline编译环境变量
或者,您可以尝试设置以下环境值并尝试重新编译:
与OpenSSL相关的类似问题也有报道,因此您可能也需要在那里做一些类似的事情。