gpt4 book ai didi

bash - 如何关闭 bash 的 "readline arguments"字符重复?

转载 作者:行者123 更新时间:2023-11-29 09:29:18 25 4
gpt4 key购买 nike

在 bash shell 中,you can type M-<number> <key> , where M is the meta key, in order to repeat that <key> press <number> times .例如,键入 M-6 aaaaaaa在你的命令行上。

在我的电脑上,meta 映射到 Esc 键。这意味着 Esc 的击键然后 6被解释为 M-6 , 并使终端期待另一个字符重复:

(arg: 6)

这对我来说是有问题的。我在 macOS 上使用 iTerm2,它有一个很棒的小功能,当您开始输入带有之前命令历史记录的命令时,它会弹出一个自动完成窗口。例如,如果您使用 Mercurial 并输入 hg update , 它允许您从所有以前的书签中选择并提交您过去更新过的哈希,按最频繁排序。

当我使用 Esc 关闭此窗口时,问题就来了。例如,如果我开始输入 hg update  ,然后出现自动完成窗口,然后我不小心不止一次点击了转义,然后粘贴了一个提交哈希,如 6dd0e54 ,我实际上在命令行中得到的是这样的:

$ hg update ddddddd0e54

为什么?因为第一次按下 Esc 键关闭了自动完成窗口,第二次启动了 M-。组合键,然后是 6d在粘贴的散列中被解释为“重复 d 字符 6 次。”

这真让人恼火,尤其是在处理更多有问题的提交哈希时,如 787075d : 在这种情况下,它将从字面上放入将近 80 万 d字符进入我的终端,使其无法使用。

所以知道我从不使用这些 readline 重复参数除非偶然,有没有办法关闭这个功能,最好是在 bash 中,或者在 iTerm2 中?

最佳答案

运行

bind -p | grep '"\\e1"'

返回

"\e1": digit-argument

因此,只需通过 bind -r 删除对 digit-argument 的所有绑定(bind):

for i in - {0..9} ; do
bind -r '\e'$i
done

- 也绑定(bind)到 digit-argument,以允许否定参数。

关于bash - 如何关闭 bash 的 "readline arguments"字符重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50122841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com