Как отключить "аргументы readline" Баша для повторения символов?
В оболочке bash, Вы можете ввести M-<number> <key>
, где M
- мета-ключ, чтобы повторить, что <key>
Нажмите <number>
раз. Например, ввод M-6 a
помещает aaaaaa
в командную строку.
На моем компьютере meta сопоставляется с ключом Esc. Это означает, что нажатие клавиши Esc
затем 6
интерпретируется как M-6
, и терминал ожидает повторения другого символа:
(arg: 6)
Это проблематично в моем случае. Я использую iTerm2 на macOS, и у него есть замечательный маленький функция, в которой появляется окно автозаполнения, когда вы начинаете вводить команду с предыдущей историей команд. Например, если вы используете Mercurial и type hg update
, он позволяет выбирать из всех предыдущих закладок и фиксировать хэши, которые вы обновляли в прошлом, сортируя их по наиболее частым.
Проблема возникает, когда я использую Esc, чтобы закрыть это окно. Например, если я начну печатать hg update
, а затем появится окно автозаполнения, а затем я случайно нажму escape more чем один раз, а затем вставить в коммит хэш, как 6dd0e54
, то, что я на самом деле в конечном итоге в командной строке является следующим:
$ hg update ddddddd0e54
Почему? Поскольку первое нажатие клавиши Esc закрывает окно автозаполнения, второе запускает комбинацию клавиш M-
, а затем 6d
в вставленном хэше интерпретируется как "повторите символ d
6
раз."
Это приводит в бешенство, особенно при работе с более проблемными хэшами фиксации, такими как 787075d
: в этом случае это будет буквально поместил почти 800 тысяч d
символов в мой терминал, сделав его непригодным для использования.
Итак, зная, что я никогда не использую эти аргументы повторения readline, кроме как случайно, есть ли способ отключить эту функцию, в идеале в bash, но альтернативно в iTerm2?