问题标签 [editline]

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 投票
3 回答
750 浏览

mysql - 让 MySQL 客户端命令行接受带有重音符号的字符作为输入

我不知道如何让我的 MySQL 客户端接受带有重音符号的字母作为 Ubuntu 命令行上的输入。这些字符不会在控制台上回显,也不会被接受为输入。据我记得,在以前版本的 mysql 中,我通过使用命令启动客户端解决了这个问题,mysql --default-character-set=utf8但这不适用于在 Ubuntu 18.04 上使用 EditLine 包装器的 mysql Ver 14.14 Distrib 5.7.25,适用于 Linux (x86_64) 。

起作用的是echo 'SELECT "é" AS letter' | mysql <dbname>,它给出了正确的输出。

我怀疑 EditLine 包装器犯了这种行为,但我不知道如何摆脱这个不需要的功能。

0 投票
1 回答
214 浏览

mysql - Bash 中是否有任何 WORDCHARS 替代品?

结论:

  • 在无法配置末端WORDCHARS的 Bash 中没有其他选择。C-w
  • mysql取决于editline,可使用 进行自定义~/.editrc
  • redis-cli取决于linenoise,它删除了整个单词而不考虑:-

在 zsh 中,WORDCHARS控制C-w删除单词时的行为。readline 有什么替代方案吗?

我最近注意到C-win mysql/的行为redis-cli与 Bash 中的不同,尽管两者都取决于readline?

以字符串foo:bar为例,仅在 Bash 中bar被删除。C-wmysql/redis-cli中,整个单词foo:bar被删除。

我该如何控制这种行为?

0 投票
2 回答
80 浏览

c++ - QT c++:插入多行编辑

我是 qt 的初学者,我做我的第一个项目。我遇到了一个问题。

我将一些编辑行放在滚动区域中。所有这些编辑文本都应该包含文件的路径。为了使这个应用程序更加用户友好,我决定实现拖放。通过这种方式,用户可以从他们的资源管理器中获取一个文件并将其拖放到行编辑中,该行将填充文件的路径。

我的问题是:当我尝试删除时,我的鼠标经过的所有编辑行都将填充文件的路径。如果我通过 else if 更改 if 语句,它是我的鼠标传递的第一个编辑行,它将被填充,但不是我的鼠标在下降时所在的编辑行。

这里的代码:

我不太明白的另一点是:

当我将鼠标放在编辑线上并停留在上面时,我会在控制台中看到两条消息...我希望在鼠标进入时看到第一个消息,而当我的鼠标离开时看到第二个消息。

提前感谢您的帮助。

0 投票
1 回答
29 浏览

python - 在 Python 中编辑几行未压缩的 PDF

我想在未压缩的 pdf 中编辑几行。我发现了一个类似的问题,但由于我需要扫描文件几次以获得我想要更改的确切行位置,这并不适合(并且 RegEx 匹配的纯数量超出了预期)。pdf 包含 utf-8 可编码行(其中一些我想编辑,特别是书签目标 ID)和很多 blob(猜测图像等)。当我用记事本编辑文件时,它工作正常,但是当我以编程方式(读入、更改几行、写回)时,图像和一些格式丢失了。(因为他们一开始没有被读入,忽略选项)

我可以读取文件errors="surrogateescape"并想映射上面导入的行,但不知道这种方法是否可行。

有谁知道如何处理这个问题?

最好的,卢卡斯

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().