Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为字符重复关闭bash的“readline参数”?_Bash_Shell_Iterm2 - Fatal编程技术网

如何为字符重复关闭bash的“readline参数”?

如何为字符重复关闭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,它允许您从以前的所有书签中进行选择,并提交您过去更新过的哈希值,按最频繁的次

在bash shell中。例如,键入M-6a会将aaaaaa放在命令行上

在我的计算机上,meta映射到Esc键。这意味着Esc then 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中

跑步

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