【问题标题】:word boundaries in irbirb 中的单词边界
【发布时间】:2011-02-23 22:17:38
【问题描述】:

我在 Snow Leopard 上使用终端。

在命令行中,如果我输入了foo.bar.baz.bang.quuz.quux,当我点击选项-B 时,它会逐字移动光标——在每个句点处停止,因为它认为句点是单词边界。同样,选项-F 逐字向前移动。

在 irb (0.9.5, ruby​​ 1.8.7) 中,选项-B 和 -F 也有这种行为,但句号不再被视为单词边界,这使得这些键盘快捷键的用处明显减少。

我该如何更改?

编辑:好奇和好奇:在具有相同 irb 和 ruby​​ 版本的 EC2 实例上,句点 被视为单词边界。

【问题讨论】:

  • 仅供参考,Ruby 1.9.2 将句点视为单词边界。

标签: ruby macos readline irb word-boundaries


【解决方案1】:

我认为这与 Readline 模块有关。

可以更改分词符。在你的 IRB 中运行它,看看 Readline 使用了哪些字符:

Readline.basic_word_break_characters

Readline 是标准 ruby​​ 库的一部分:http://ruby-doc.org/stdlib/libdoc/readline/rdoc/index.html

【讨论】:

  • 感谢您的回答,但更改此值似乎根本不会影响行为。此外,在我的一个 EC2 实例上,Readline.basic_word_break_characters 不包含.,但单词移动命令确实会在句点处停止。
  • 我在 OS X Lion (10.7) 上遇到了与 Ruby 1.9.3 相同的问题,并尝试修改 Readline.basic_word_break_characters,但也没有任何区别。另外,就像劳伦斯一样,在另一台装有 ruby​​ 1.8.7 的机器上,Readline.basic_word_break_characters 不包含句点,但 IRB 仍然在. 字符上中断,所以我真的不知道这个设置与 IRB 有什么关系。
【解决方案2】:

这可能与这里相关吗?
http://jorgebernal.info/2009/11/18/fixing-snow-leopard-ruby-readline/

在任何情况下,请确保 option-B/F 实际上绑定到您的 inputrc 文件中的正向和反向单词,就像 John 指出的那样。

单词边界也由您的语言环境决定(参见“locale”命令),更具体地说,由 LC_CTYPE(字符分类)决定。我认为这不是问题所在,但您可能需要检查并比较您的语言环境设置以防万一。

【讨论】:

  • jorgebernal.info 的程序做到了。谢谢!享受赏金;不要把所有的钱都花在一个地方:)
【解决方案3】:

Readline 还使用以下配置文件:

  • /etc/inputrc
  • ~/.inputrc(或由环境变量 INPUTRC 指定的文件名)

这可能会导致不同机器上的不同行为(但可能不会在 ruby​​ 版本之间 - 我猜 ruby​​ 在顶部添加了另一层配置)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多