Причиной этой проблемы «иногда работает / иногда не работает» может быть причина в $KEYTIMEOUT
.
Когда вы нажимаете клавишу, которая является частью многосимвольной последовательности, связанной в текущей раскладке клавиатуры , zsh ожидает $KEYTIMEOUT
миллисекунд, пока вы не нажмете вторую клавишу. По умолчанию установлено значение 40. Это задокументировано в руководстве по zsh.
Поэтому, если вы нажмете ^G
, у вас будет 40 мс, чтобы нажать ^B
, в противном случае два нажатия клавиш будут интерпретироваться как введенные отдельно, а не как часть одной последовательности.
Очевидно, что вы можете изменить значение $KEYTIMEOUT
, например, чтобы увеличить его, чтобы у вас было больше времени для нажатия второй клавиши.
(Обратите внимание, что это может привести к эффектам включения, например, если вы находитесь в режиме вставки vi и пытаетесь нажать ESC, чтобы перейти в командный режим vi, оболочка будет ждать миллисекунды $KEYTIMEOUT
поскольку существуют многосимвольные сочетания клавиш, начинающиеся с ESC - а именно клавиши со стрелками!)