问题标签 [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 投票
0 回答
1364 浏览

bash - 如何将修补的 GNU readline 库正确链接到所有现有程序?

我最初的问题是,在 vi 模式下使用 bash 时,我想要一种方法来区分我是处于 vi 命令模式还是 vi 插入模式。我知道从 GNU readline 7.0 开始,有一种方法可以在命令提示符中设置指示器;但是,我想要的是更改光标的形状(即在插入模式下为垂直线,在命令模式下为实心块)。


注意: 我已经尝试将以下内容放在我的 .inputrc 中,这起到了作用,但是在命令模式下移回行首时会导致一些问题,因此我得出结论,这不是一个好的选择。


我遇到了一篇由遇到同样问题的人写的文章,最终决定自己修补 GNU readline 库,链接如下:

http://blog.mkoskar.com/2010/10/gnu-readline-vi-mode-visualization.html http://blog.mkoskar.com/2010/11/gnu-readline-vi-mode-visualization-2 .html


到目前为止,我已经能够成功应用补丁并编译/安装库(在本地......我宁愿保持安装未打补丁的版本,以防我想切换回来),但 bash 似乎仍在使用原来的。

以下是重要的细节:

1)修补的库文件(静态和动态)位于我的计算机上$HOME/.local/lib/
2)我确定的原始库文件(仅限动态)位于/lib/x86_64-linux-gnu/
3) 我的 LD_LIBRARY_PATH 环境变量设置$HOME/.local/lib:在我的 .bashrc 中。


即使安装了修补版本并且我的 LD_LIBRARY_PATH 变量设置正确,Bash 似乎仍然没有使用我修补的 GNU readline 库。我想知道我做错了什么吗?

我希望问题不在于 Bash 附带已经静态链接的 readline 库,我想我需要重新安装 Bash(以及使用该库的任何其他程序,例如 iPython),在修补版本中手动链接的阅读线。


解决方案

虽然不是标题中列出的问题的解决方案,但这是我遇到的原始问题的解决方案。在浏览了 Readline 的手册页后,我发现了以下对vi-cmd-mode-stringand的描述vi-ins-mode-string

关于\1\2转义的部分是重要的东西......


所以基本上,将以下内容放在我的 .inputrc 中允许我根据当前的 vi 模式设置光标形状:

0 投票
0 回答
168 浏览

c - 告诉 GNU readline 像 bash 一样自动引用/自动转义文件名

0 投票
1 回答
75 浏览

c - GNU 自动完成变量

我正在开发一个带有 C 提示符的 Linux 工具。我已经使用 GNU 库启用了“函数”和“文件”完成。现在我想将支持扩展到“变量”名称完成。下面是一个更好理解的例子:

工作输出:

预期的额外支持:

为自动完成添加了代码:

如果问题不清楚,请告诉我。请帮我解决。

0 投票
1 回答
115 浏览

readline - 为什么 readline 不取消设置 `backward-delete-char`?

我需要将代码127(又名DEL,又名^?)绑定到delete-char.

如果我把DEL: delete-char~/.inputrc,它不起作用。这是因为backward-delete-char默认情况下使用此代码。

因此,首先我需要从以下位置释放此代码backward-delete-char

但由于某种原因,它并没有取消:

readline库(供本地使用)的源代码中应更改哪些内容以取消绑定\C-?from backward-delete-char

注意如果我取消设置例如delete-char,它可以完美地工作:

0 投票
1 回答
323 浏览

c - 如何在编辑行中附加历史记录?

我正在尝试将历史追加添加到 MacPorts shell。MacPorts 当前使用类似 bash 的历史记录,其中历史记录是在会话结束后写入的。如果会话崩溃,这可能会出现问题,所以我试图让 MacPorts shell 遵循 zsh 的示例。即,在执行时将每个历史记录项附加到文件中。

GNU readline 中,这个功能对于函数来说是微不足道的append_history但是, MacPorts依赖于 Apple 的编辑线。editline 库似乎没有等效项,append_history所以我有点迷失了如何将历史记录附加到文件中。我曾想过使用像fopenand这样的旧标准函数fprintf,但我意识到 editline 对历史字符串使用自己的编码(例如,空格字符被转换为八进制\040)。MacPorts 需要与该编码兼容,因为在多个地方使用了 editline。我假设使用了这种编码,因为空格被用作历史分隔符。

我可以尝试编写自己的函数来兼容这种编码,但这似乎充满了不必要的困难。我觉得我一定是错过了什么。有没有一种简单的方法可以将历史记录附加到带有编辑行的文件中?

0 投票
2 回答
651 浏览

c++ - Bash 在不运行应用程序的情况下自动完成一个选项

我发现这段代码是 bash 自动完成的。但是,这对我来说看起来很奇怪。如果我根本不喜欢运行代码怎么办。如果我想输入./a.out空格(不输入),然后按 Tab,我只想看到两个选项applecherry如果我输入a并按 Tab,它会自动完成该选项apple,类似c. 假设只有两个选项之一是可以接受的:

其中applecherry是选项,而不是目录中文件的名称。在第一种情况下,我想要your option is apple在第二种情况下的程序类型your option is cherry。在任何其他情况下,程序应该打印一个选项无效的错误。

我在 Internet 上找到的所有示例(例如以下示例)看起来都应该首先运行程序,然后它会做出反应。函数内部的 while 循环main与程序的正常功能发生冲突。我误解了readline图书馆吗?是否可以通过编辑以下代码来实现上述应用程序?

0 投票
11 回答
44951 浏览

ruby-on-rails - 未加载库:/usr/local/opt/readline/lib/libreadline.7.dylib

当我尝试运行时rails console,出现此错误:

快速搜索让我找到了这篇文章,我尝试了一些事情:

brew reinstall postgresql(这确实是这个项目的数据库)

(我的 readline 版本是 8)

brew link readline --force

但是这些都没有解决它。

我最近在我的项目中添加了pry-coolline,guardguard-livereloadgems,如果这有什么不同的话(rails 控制台在这些之前加载得很好)。我正在运行最新的 macos。

(更新)我使用 pry rails 作为我的 rails 控制台,如果这有什么不同的话。

有什么帮助吗?谢谢。

0 投票
2 回答
1754 浏览

python - Homebrew pyenv安装错误dyld:未加载库:/usr/local/opt/readline/lib/libreadline.7.dylib

在 MacOS Mojave 上从 Homebrew 安装 pyenv 后,我在尝试安装任何 python 版本时遇到构建错误。

为任何版本运行时pyenv install,构建将失败并出现错误:

0 投票
1 回答
933 浏览

python - Mojave 升级后,遇到 Readline 库错误。Python 3.5 需要 Readline 7,但 Brew 只安装 Readline 8

在升级到 MacOS Mojave 之后,我使用 Homebrew 和 Pyenv 重建了我的 Python 开发环境。

  • 我首先更新了 XCODE 和我的 SDK 标头(https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes#3035624)。

    /li>
  • 我使用自制软件安装了 Pyenv、Readline 和 XZ。

    /li>
  • 然后使用 Pyenv 我安装了各种 Python 包:

    /li>
  • Pyenv 安装程序告诉我它正在使用 Homebrew 的 readline。

    /li>
  • 当我尝试运行 Python 程序时,出现错误:

    /li>
  • 查看 /usr/local/opt/readline/lib 我看到的只是版本 8 库。

    /li>

在这一点上,我不知道我是否应该:A)弄清楚如何通过自制软件安装 readline v.7,或者 B)以某种方式更新 pyenv 以不使用自制软件的 readline 而是安装库本身,或者 C)其他东西。

任何帮助将不胜感激。

0 投票
0 回答
38 浏览

python - 扩展 code.InteractiveInterpreter 与历史,选项卡完成,

有没有一种简单的方法来扩展code.InteractiveInterpreter历史,标签完成,......?

我现在正在做的是子类code.InteractiveInterpreter化以接收来自不同进程的输入并将结果传输到不同的进程。现在我想像普通的 Python shell / IPython 一样添加历史记录(向上和向下箭头)和完成(选项卡)等功能。

除了 Python / CPython / IPython 源代码和 GNU readline 之外,我找不到太多关于此的信息:

GNU readline 是要走的路吗?如何在 Python 3 中使用它?