【发布时间】:2018-05-01 19:47:37
【问题描述】:
在 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 a 会将 aaaaaa 放在命令行中。
在我的电脑上,meta 映射到 Esc 键。这意味着Esc 然后6 的击键被解释为M-6,并使终端期望另一个字符重复:
(arg: 6)
在我的情况下这是有问题的。我在 macOS 上使用 iTerm2,它有一个很棒的小功能,当您开始使用以前的命令历史输入命令时,它会弹出一个自动完成窗口。例如,如果您使用 Mercurial 并输入 hg update,它可以让您从所有以前的书签中进行选择,并提交您过去更新到的哈希值,按最频繁排序。
当我使用 Esc 关闭此窗口时,问题就出现了。例如,如果我开始输入hg update ,然后自动完成窗口出现,然后我不小心多次点击了escape,然后粘贴了6dd0e54这样的提交哈希,我实际上最终在命令行中是这样的:
$ hg update ddddddd0e54
为什么?因为第一次 Esc 键关闭自动完成窗口,第二次启动 M- 组合键,然后粘贴哈希中的 6d 被解释为“重复 d 字符 6 次。”
这令人恼火,尤其是在处理像787075d 这样有问题的提交哈希时:在这种情况下,它字面上会将近 80 万个 d 字符放入我的终端,使其无法使用。
所以知道我从不使用这些 readline 重复参数,除非是偶然的,有没有办法关闭这个功能,最好是在 bash 中,或者在 iTerm2 中?
【问题讨论】: