c++ - GNU readline 空格引用

标签 c++ parsing whitespace gnu readline

我正在开发一个应用程序,它使用 readline 从 stdin 读取命令。 它接受“cd”和其他需要路径作为参数的命令。我在处理包含空格的路径时遇到了麻烦。我的目标是以某种方式让 readline 引用空格,并在该字符出现后自动完成路径名(实际上,当遇到空格时,它只是被跳过,自动完成从下一个单词开始)。

我一直在努力实现这一目标,但我一直在尝试,但没有一个奏效。我已经设法将“”引用为“\”,这就是我想要的。但是 readline 不会将其解释为路径的一部分,它只是跳过它,并自动完成下一个单词,就好像之前没有任何内容一样。基本上,我期待与 bash 的自动完成功能相同的行为。

感谢任何帮助。 提前致谢!

编辑:

好吧,我已经设法以某种方式完成了我一直在寻找的东西。我所做的是:

初始化期间:

rl_attempted_completion_function = completition;
rl_completer_quote_characters = "\"";
rl_filename_quote_characters  = " ";

完成应该返回一个字符**,其中包含到目前为止与“文本”相匹配的每个命令。我省略了那部分,因为它与我的要求无关。重要的部分是 rl_filename_quoting_desired = 1;它告诉 readline 你想要你的文件名被引用。

char **completition(const char *text, int start, int end) {    
    rl_filename_quoting_desired = 1;
    return 0;
}

请注意,我最终做的是 BuHHu-nyx 所说的,只是在文件名中添加双引号 (")。

最佳答案

尝试转义的不是空格,而是整个路径。例如:

cd "/path/to/some where"

关于c++ - GNU readline 空格引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4904980/

相关文章:

c++ - Qt - 使用预处理器指令检查 Windows 上链接的 .lib 的可用性

c++ - websocketpp 回调(通过函数指针的类方法)

javascript - 如何将本地文件定义为 DOM 对象?

c++ - 使用soxr重采样时发生访问冲突

c++ - ptr_fun - 无法创建类型?

xml - JSTL - 解析不适​​用于具有命名空间的元素

html - 在 hpple 和文本中获取 HTML 标签?

css - whitespace nowrap css for children but not parent

Mercurial 差异 : ignore trailing whitespace?

php - 在 PHP 中删除空格