问题标签 [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.
octave - 恢复 GNU/Octave 命令行中以字符串开头的最后一个命令
我曾经在 Octave 中恢复以某个字符串开头的最后一个命令,方法是键入它然后按向上箭头键(对于 Matlab 也是如此)。我当前的 Octave 命令提示符(原始命令提示符,从终端执行)中没有重现此行为。意思是,我输入一些东西,按下,最后一个命令出现,不管以该字符串开头的前一个命令是否在堆栈中。
有什么方法可以配置 Octave 来重现这种行为?这真的很有用。
更新
1. Octave 版本 3.8.1
2. 实现它的一种方法是按Ctrl-r,然后键入(实际上效果不一样,因为它搜索包含-不以该字符串开头的命令。)
c - 直接调用 readline() 的 Tab 补全
我知道如果我想要标签完成,我可以使用
我会在它运行时完成选项卡,但是如果我已经有一个想要完成的字符串怎么办?我可以直接调用 readline 库中的特定函数并将字符串作为参数发送以使其运行制表符完成吗?
我已经阅读了很多 complete.c 的源代码,以找到一个我可以发送字符串但没有运气的主函数。
readline - readline: 重新映射 \Cm (Ctrl+m)
我想在我的 ~/.inputrc 中为 \Cm 自定义绑定。但是,当我更换它时,我无法再输入任何命令。例如,
问题似乎是存在默认绑定
这本身不是问题,但似乎其他程序(终端?)发送 ^M(Ctrl-m)以指示回车。在我的设置中,我有 urxvt,但我也尝试了 xterm,行为是相同的(一旦我在 inputrc 的末尾添加“\Cm”vi-forward-word 绑定,返回就不再起作用)。
现在我想改变这个,我愿意修补任何涉及的程序/库。我的问题是:我应该在哪里寻找相关的作品?我检查了 readline 源代码,但找不到任何表明 \Cm 在内部被重用的东西。同样,我检查了 urxvt,但在代码中找不到将回车映射到 \Cm 的任何内容(这将是我对导致此行为的最佳猜测)。有趣的是 rxvt.7.pod 包含
和 rxvt-unicode.termcap 与
但是,这两个文件似乎主要是文档或至少没有安装。我对 terminfo 文件及其参与整个终端工作的了解有些有限。readline 和终端之间的交互也是如此(在我的示例中是在 urxvt 之前调用 readline 吗?)。因此,如果有人有关于在哪里看的指针,我将不胜感激。
顺便说一句:我添加的那一刻
在"\Cm" 绑定之后,我恢复了原始行为(即返回工作)。如果我在 "\Cm" 之前添加该行,则返回仍然无法按预期工作。
干杯!
德索
macos - 你可以在 Mac 上设置这样向前的单词(alt+f 或向后的 alt+b)尊重下划线作为单词边界吗?
这是否可以改变终端和其他应用程序alt+f
的行为。alt+b
我目前将它们分别设置为转发词和后缀词。我希望他们尊重下划线,但我不知道这是否可能,并认为修改 readline 包可以让它在终端中工作。
bash - 每次按下键时如何在终端中运行功能(绑定整个键盘)
过去一周我一直在玩 bash,并且想创建一个每次按下键盘上的键时都会调用的函数。我阅读了有关绑定的信息,但它迫使我绑定到特定的键。如果有人可以帮助我,我将不胜感激
我想在没有像 zsh 或 fish 这样的新 shell 的情况下完成这个
python - 如何在 Python 中使用 GNU readline 库停止自动完成并使用正常选项卡
现在,我在 Python 2.7 中运行以下代码:
据此,应该删除完成器功能,我认为这rl.set_completer()
会使选项卡正常工作。但是,tab 键根本不起作用。
我也尝试过编写自己的函数并将其作为完成者传递,但这也不起作用。(如果有人能找到一种方法来使 Tab 键正常工作,那也足够了。)
我如何获得使用箭头键的能力raw_input
,但也有一个普通的标签?
libreadline - 防止 readline 行提交
我在跟随输入实时的应用程序中使用 readline。我不想让用户按 Enter、Control + J 或任何其他等效键,从而无意中清除该字段。
我实际上是自己转发密钥,所以我可以捕获并阻止某些密钥输入,但我不认为这是要走的路,因为还必须处理反向搜索 (Control - R)。
我查看了 gnu 文档,但没有发现任何有用的东西。
macos - dyld:库未加载:引用自:/usr/local/bin/awk
当我打开终端时,它显示如下错误消息:
c - Readline & NCurses,处理特殊键和组合键
我正在为学生项目复制Irssi 界面。我想将NCurses用于文本界面,并使用 readline在编写消息时提供更好的文本编辑功能。
我的问题是我想要一个像这样的输入/事件循环:
但是为了匹配KEY_F(n)
或者KEY_UP
我需要启用keypad(window, TRUE)
,这将修改输入并使其无法用于 readline。
从手册:
如果 keypad 为 TRUE,并且按下了功能键,则返回该功能键的标记而不是原始字符。
当接收到可能是功能键开头的字符时(在现代终端上,这意味着转义字符),curses 设置一个计时器。如果序列的其余部分没有在指定时间内进入,则字符通过;否则,返回功能键值。由于这个原因,许多终端在用户按下退出键和退出返回到程序之间存在延迟。
以下是我的想法:
- 有没有反转效果的功能
keypad
? - 我应该实现自己的行为
keypad
吗?我想如果我想捕捉像 Shift + Up 这样的事件,我也必须这样做。我很高兴有这样的例子。 - 如果我无法从 NCurses 获得它,readline 可以给我组合键吗?也许与键绑定callbacs(相关?)?
感谢您的时间 !
c - 行首有输出时的“readline”
我在readline
自己的程序中使用(版本 6.3,默认 [非 vi] 模式,Ubuntu 14.04)库,在终端窗口(在 PC 上)中运行。当调用时有先前的输出未被换行符终止时,会出现问题readline()
。
所以这条线看起来像:
如果您键入少量字符(最多 5 个?)然后,说,Ctrl+U
(可能是其他人)删除您的输入,到目前为止一切似乎都很好 ---readline()
将插入符号移回到它自己的提示之后,即删除5 个字符。但是,尝试输入,说:
现在它删除回,只Hello
留下Hell
一行,然后是插入符号,即删除 6+6==12。所以你看:
我需要两种可能的解决方案之一:
我已经意识到这取决于在出错的行上输入了多少个字符。任何修复/解决方法?
或者,是否有一个
readline
库调用可以告诉我插入符号在我调用之前的位置/列readline()
?然后至少我可以认识到我在现有行的末尾并输出 a\n
以便首先将自己定位在新行的开头。
我想我可以猜测,对于最多输入 5 个字符,它最多可以使用 5 个退格键,但是如果它不是从行首开始,它会选择做其他事情,这会造成混乱吗?
我看到GNU Readline:如何清除输入行?. 这是同样的情况吗?解决方案似乎相当复杂。开始时不能问你在哪一列readline()
,或者告诉它不要试图在删除时那么聪明,只删除实际输入的字符?