问题标签 [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.
python - OS X 上的 Python/editline:£ 符号似乎绑定到 ed-prev-word
在 Mac OS XI 上,无法在 Python 交互式 shell 中输入英镑符号 (£)。
当我在 Python 交互式 shell 中键入 shift-3 时,我似乎调用了前一个单词函数,即光标将移动到该行上键入的最后一个“单词”(即以空格分隔的项目)的开头。当我回到 bash shell 时,键入 shift-3 只会产生一个 £,正如预期的那样。
这个版本的 Python 显然使用 editline 作为它的交互式 shell,而不是 readline。我猜测默认的编辑行键绑定之一将 shift-3(或当我键入 shift-3 时看到的任何编辑行)绑定到 ed-prev-word 命令。
我在 ~/.editrc 文件中尝试了一些方法来删除此绑定,但它们没有任何效果:
bind -r £
bind -r \243
bind -r \156
另一个导致总线错误:
bind £ \243
有任何想法吗?
readline - 使用 GNU 阅读线;如何在同一程序中添加 ncurses?
标题比我的实际目标更具体:
我有一个使用 GNU Readline 的命令行程序,主要用于命令历史记录(即使用向上箭头检索以前的命令)和其他一些细节。现在程序的输出似乎与用户的输入穿插在一起,这有时是可以的,但输出是异步的(它通过网络连接来响应输入命令),有时会变得烦人(例如,如果在用户输入时输出行正在输入新的输入)。
我想为这个程序添加一个功能:一个单独的“窗口”用于输出。我考虑过为此使用ncurses。但是从ncurses FAQ看来,这两个库并不容易一起使用。
我可能会考虑使用Editline或tecla而不是 Readline,但我不清楚其中任何一个是否能解决我的问题。我还考虑使用 ncurses 以外的东西,包括提供两种功能(文本模式窗口和命令历史记录)的库,但我不知道什么可能是最好的。
哦,对彩色文本的支持可能会获得奖励积分。我怀疑我可以用 Readline 做到这一点,所以也许这是一个单独的问题,但如果我的问题的解决方案也可以很容易地为输出添加一些颜色,那就更好了。
我正在使用 Ubuntu Hardy (Linux 2.6)。
c++ - 具有非阻塞输入的编辑线
我在我的程序中使用 editline 库,用于在 shell 中输入用户命令。但是由于 shell,程序有一个 gui 界面,所以我需要在单独的线程中运行 editline 的 readline() 函数,因为它会阻塞直到按下 Enter。有没有办法在不阻塞的情况下使用 readline() 函数,所以我可以避免单独使用线程?
c - 尝试使用已安装的开发人员工具进行编译时,在 macOS 上找不到 editline/history.h 和 editline/readline.h/正在工作
我正在编写有关构建自己的 LISP(http://www.buildyourownlisp.com/chapter4_interactive_prompt)的教程,由于某种原因,当我尝试编译时,我得到了这个:
我已经安装了 macOS 开发人员工具,并且 brew 显示已安装 readline,当我尝试 brew install editline 时它不知道该怎么做。
这是我的代码:
这显然是非常基本的,但我真的很想让这个项目滚动,所以我希望我能解决这个问题。这是我用来编译的:
c - GTK 可以与类似库的 readline 一起使用吗?
图形 GTK 程序是否也有可能像GNU readline、editline或linenoise提供的那样具有“命令行界面” ?
如何处理阻塞 gtk_main() 调用,并阻止这些库中的循环步骤?
c - 编辑线错误
我是 C 语言的新手,每当我使用 command 编译我的 C 代码时,都会不断收到此错误cc prompt.c
。我收到此错误:
架构 x86_64 的未定义符号:
“_add_history”,引用自:
“_readline”,引用自:
ld:未找到架构 x86_64 的符号
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
这是我的代码:
如果有帮助,我正在运行 OSX 10.10.3 的 Macbook Air 上编写这个程序。
我刚开始学习C语言,所以不要评判我这个问题是否真的很简单,当我搜索它时没有结果。
任何帮助将不胜感激。谢谢!
c - 在终端中显示可删除的字符(使用 libedit/editline 或 readline)
我目前正在将 libedit 用于“readline”功能,到目前为止它工作得非常好,但我想在提示后显示可由用户删除的字符(空格)。类似于 IPython:
如您所见,自动添加了 4 个额外的字符(空格),我可以通过按退格键将其删除,直到出现提示...:
。
我想用 libedit/editline 来模拟这种行为,如果没有办法做到这一点(例如使用 curses 或 libedit 使用的底层终端功能),我会切换到 readline。
这怎么可能,最好使用 libedit/editline 或 readline。
编辑:我尝试修改rl_line_buffer
,这并没有修改显示,只有我从中得到的值readline
。
c - 在 libedit/editline 中有一种方便的方法来进行多行输入
使用 libedit/ editline,并尝试找出一种进行多行输入/编辑的好方法。目标是 SQL 客户端,其中查询通常跨越多行并以;
.
我可以调用el_gets
并处理每一行输入,当我看到终止时停止;
。我什至可以将它们连接起来并将它们作为单个条目存储在 el_history 中——当使用箭头滚动历史记录时,它将正确访问它们。
但是,当输入命令并开始新行后,我不能再使用箭头向上移动和编辑上一行。例如:
那时,我希望能够使用向上箭头向上移动并编辑已在第一行输入的文本。这可能吗?一个人会怎么做?我认为el_gets
在这种情况下使用是不正确的,因为它会从编辑行缓冲中删除该行,但我没有看到可以工作的替代 API。
想法?
c - 无法在 OpenBSD 上使用编辑行编译
我认为我必须安装 editline (libedit?) 库,但我在哪里可以为 OpenBSD 获得它?代码在 PC-BSD 上编译得很好,但是在 OpenBSD 上我得到了这个错误
它是未找到的编辑线库。我尝试用谷歌搜索在哪里可以找到 OpenBSD,但没有找到。你能帮助我吗?我使用的标题是
生成文件
这是有问题的代码
如果我运行,locate editline
那么它会找到并更改 Makefile 并得到一个新错误undefined reference to tgetnum
,根据 google 似乎我必须与ncurses
库链接。现在它编译了。新Makefile
的是: