为了获取我的~/.inputrc
,我尝试了C-x C-c
和bind -f ~/.inputrc
。即使阅读了 上的 man bash 部分,我还是没有主意bind
。
"\C-Rubout": backward-kill-word
我的 中有~/.inputrc
。但是当我使用 查询 bash 时bind -q backward-kill-word
,我没有得到我期望的输出:
$ bind -q backward-kill-word
backward-kill-word can be invoked via "\C-rubout", "\e\C-h", "\e\C-?".
我认为错误的大写字母rubout
可能是一个问题,但无论我如何更改文件~/.inputrc
,都无法让它工作!!
我正在努力寻找一个好的资源来帮助我学习如何在bind
bash 部分变得不那么无能......我得到的结果似乎是错误的,但我知道在了解更多这些内容之前,最好不要对此有信心。
我已经读完了GNU手册,并尝试使用\b
、\d
和\177
代替Rubout
,但这些都不起作用。gnu 手册中的那个(这里)非常整洁。
答案1
这默认终端中没有绑定。我需要将其添加"\C-x\C-r": re-read-init-file
到我的~/.inputrc
。
重新读取初始化文件不会导致当前绑定的命令消失。我错误地认为从我的~/.inputrc
调用中删除一行bind -f ~/.inputrc
会解除所述绑定。因此,此命令实际上确实可以重新读取我的初始化文件。
我排除故障的能力很差。由于我的基础不牢靠,我所有的知识都支离破碎。我没有重新获取我的 readline 文件,而是重新阅读。这是一个关键的区别
此外,在同一个文件中多次绑定命令似乎会丢弃除最后一个定义之外的所有定义。我在故障排除过程中遇到的所有问题都让我放弃了。
最后,我不知道有 和unix-word-rubout
。backward-kill-word
它们是两个不同的命令,但它们在我的终端上的作用相同。
delete
我意识到我可以通过查看绑定到删除的命令来弄清楚如何表示:
$ bind -q backward-kill-word
backward-kill-word can be invoked via "\e\C-h", "\e\C-?".
我的终端转换 删除我想,这与其他终端不同...我以为那?
是“我无法表示这一点”的占位符,但那是�
!我真的只需要使用文字?
,ASCII 代码 63。
无论如何,当我放入"\C-?": unix-word-rubout
我的时~/.inputrc
,一切都完美地工作了:)