如何为字符重复关闭bash的“readline参数”?
在bash shell中。例如,键入M-6a会将aaaaaa放在命令行上 在我的计算机上,meta映射到Esc键。这意味着Esc then 6的击键被解释为M-6,并使终端期望另一个字符重复:如何为字符重复关闭bash的“readline参数”?,bash,shell,iterm2,Bash,Shell,Iterm2,在bash shell中。例如,键入M-6a会将aaaaaa放在命令行上 在我的计算机上,meta映射到Esc键。这意味着Esc then 6的击键被解释为M-6,并使终端期望另一个字符重复: (arg: 6) 这在我的情况下是有问题的。我在macOS上使用了iTerm2,它有一个很好的小功能,当你开始用以前的命令历史记录键入命令时,它会弹出一个自动完成窗口。例如,如果您使用Mercurial并键入hg update,它允许您从以前的所有书签中进行选择,并提交您过去更新过的哈希值,按最频繁的次
(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中 跑步
bind -p | grep '"\\e1"'
返回
"\e1": digit-argument
因此,只需通过bind-r删除所有对数字参数的绑定:
-也绑定到数字参数,以允许使用否定参数。这里有一个答案:谢谢。这确实回答了所问的问题。不幸的是,这会导致一种情况,即6dd0e54的提交散列被粘贴为dd0e54,剥离第一个字符,这更好,但仍然不是很好。我打算寻找一种在iTerm2中将Esc作为Meta关闭的方法,但这超出了我要求的范围,所以我接受这个答案。
for i in - {0..9} ; do
bind -r '\e'$i
done