阅读行单词分隔符是什么?

阅读行单词分隔符是什么?

当我在 Bash 中删除一个“单词”时,它会停在某些字符处,例如_/。例如,如果我输入

/foo/bar

并激活backward-kill-word(通常映射到Alt-Backspace和/或Ctrl- w),剩余的文本是

/foo/

。这确实不是对应于$COMP_WORDBREAKSreadlinerl_completer_word_break_characters。我如何检测(最好是在正在运行的系统中,而不是代码中的默认值,因为它们可能可以被覆盖)哪些字符用于确定分词?

答案1

bash 文档指出:

backward-kill-word (M-Rubout)

杀掉点后面的字。字边界与向后字使用的边界相同。

backward-word (M-b)

返回到当前或上一个单词的开头。单词由字母数字字符(字母和数字)组成。

Bash 4.2 中的处理backward-word是在捆绑的 libreadline 代码中完成的(text.c:rl_backward_word)。断词是基于rl_alphabetic,它本身依赖于isalnum功能。这与语言环境相关,但不能直接在 bash 中配置。

请注意,Bash 4.0 引入了另一种“单词”类型,其中包含shell-forward-wordshell-backward-word操作(以及等效的 Kill 操作)。这些仅在 shell 元字符 ( ()<>;&|") 和空格(可能通过 依赖于语言环境isblank)上中断,并在主 bash 代码 ( bashline.c) 中处理。

相关内容