问题标签 [libreadline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
46 浏览

c - libreadline 编辑和执行命令支持

在 bash(和其他)中,我可以使用or 中定义的外部编辑器或C-x C-d其他键绑定来编辑命令。$EDITOR$VISUAL

但是,当我在程序中使用 libreadline 时,默认情况下它没有类似的功能。

如何在我的程序中启用它?或者它可能是特定于 bash 的恐惧,而不是 libreadline?那怎么实现呢?

0 投票
1 回答
186 浏览

c++ - 如何更改默认的 C/C++ gnu readline 换行符?

我的目标是在 telnet 服务器端使用 C/C++ readline 库,因为它提供了开箱即用的所有必要终端功能。Readline 已经连接到 telnet 套接字,对套接字的读写工作正常。我正在使用Sean Middleditch 的 libtelnet

问题是 readline 输出 '\n' 而不是 '\n\r' 这是一个 telnet 标准去一个新行 = 新行 + 回车。

客户端的当前输出:

预期输出:

我阅读文档试图找到一个带有默认换行符的简单变量,但没有这样的东西,或者我一定错过了它。telnet 终端类型也有可能改变这种行为——我还没有到这一步。

你知道如何将这个 '\n' 更改为 '\r\n' 吗?

编辑:

Telnet 启动 & Readline 连接到套接字:

部分事件处理程序:

我想我应该保留 readline 模块。最好的解决方案可能是告诉客户端将“\n”或换行解释为“\n\r”或换行和回车。我在寻找这种 telnet 选项时遇到问题。

0 投票
0 回答
38 浏览

python - 交互式输入的python readline模块问题

在python 3(在ubuntu机器上)中使用readline模块时,每当我按下向上箭头键时,我就可以在我的命令历史记录中返回一些来自旧命令的单词卡在输入的开头,当我粘贴一些东西并保留时也会发生这种情况按左箭头键,这样我就可以从头开始写了。在我的代码中import readline,我只是需要帮助和感谢。 在此处输入图像描述

0 投票
1 回答
45 浏览

c - 如何使 libreadline 或 libedit 应对 SIGALRM?

我正在编写一个通过 GPIO 线与一些自定义硬件交互的 Linux 程序。它使用一个定期发送的计时器SIGALRM来管理这些交互的时间,并且在信号处理程序中执行了相当多的工作。该程序提供了一个命令行界面,我很想拥有libreadline提供的行编辑便利。不幸的是,libreadline 似乎不能很好地处理这些周期性信号。我还尝试了libedit的 readline 兼容模式(又名“editline”),但没有成功。

是否有一种简单的方法可以在接收大量SIGALRM信号的程序中具有 readline 功能?

症状

使用 libreadline 时,如果计时器正在运行,某些键入的字符会随机回显两次。例如,键入“帮助”可能会导致终端上显示“帮助”。这个问题只在回显中很明显:程序确实接收到输入的单词(即“帮助”)。

在 readline 兼容模式下使用 libedit 时,如果计时器正在运行,则在被信号中断时 readline()返回。NULLSIGALRM

当计时器停止时,一切都按预期工作,无论是使用 libreadline 还是使用 libedit。

环境

Ubuntu 20.04 带有最新的 apt 软件包 libreadline-dev(版本 8.0-4)和 libedit-dev(3.1-20191231-1)。该程序最终将部署在运行 Raspberry Pi OS 的 Raspberry Pi 上。

示例代码

这是一个最小(ish)的可重现示例的尝试:

编译要么

或者

编辑:我将命令解释器移出了main().

0 投票
0 回答
19 浏览

python - python REPL:仅显示完成选择的相关部分

在 bash 中对文件和目录使用制表符补全时,仅显示相关目录级别的补全选项:

类似于文件系统,python 具有子对象的层次结构。不幸的是,我还没有找到一种方法来让 python 的 REPL(即通常是rlcompleter模块)的制表符完成机制只显示可能选择的相关部分而不是完整的对象位置:

由于我觉得这种行为很烦人,有没有办法让 python 的 REPL 上的选项卡完成机制表现得像bash文件和目录一样?

0 投票
1 回答
273 浏览

r - 如何修复运行 R 后加载 libreadline.so.6 的错误?

我尝试使用 conda 安装 R,如下所示: (base) [root@localhost ~]# conda install -crr 安装完成后,我尝试运行 R,不幸的是,我遇到以下错误: $ R /opt/miniconda3 /lib/R/bin/exec/R:加载共享库时出错:libreadline.so.6:无法打开共享对象文件:没有这样的文件或目录

0 投票
1 回答
52 浏览

r - R:设置命令行Readline初始化文件位置

根据https://cran.r-project.org/doc/manuals/r-release/R-intro.html#The-command_002dline-editor,对于 R 命令行,Readline 初始化文件默认为~/.inputrc. 有没有办法为这个文件指定另一个位置?

0 投票
0 回答
26 浏览

c - 如何从 C 中的终端删除 ^\ SIGQUIT 字符

所以我试图重现 bash,当我在 bash 中按下 control + \ 时,它什么也不做。所以我试图重现这种行为,这是我的代码。

当我按下 control + \ 时,它第一次工作,但是当我再次按下它时,它开始显示 ^ 字符,那么我应该怎么做呢?顺便说一句,我在 macOS 上。

编译此代码运行gcc main.c -lreadline