Как vim внутренне сделал так, чтобы нажатие одного `y` не ждало второго `y` для карты клавиш `yy`?

Обычно, если я определяю карты клавиш, для которых требуется 2 клавиши, нажатие первой будет ждать второй клавиши, но такие клавиши, как y, выполняются немедленно, пока yy все еще работает. Можно ли этого добиться с помощью vimscript?


person tga    schedule 18.07.2018    source источник
comment
Что вы имеете в виду, y оценивается немедленно? В обычном режиме y переключится в режим ожидания оператора, который будет ожидать текстовый объект или движение. Вы правы в том, что ожидание в режиме ожидания оператора — это не то же самое, что ожидание в многоклавишном отображении, но... можете ли вы лучше описать, что вы пытаетесь сделать (и что вы подразумеваете под y не жду)?   -  person Amadan    schedule 18.07.2018


Ответы (1)


Вот как это работает.

Когда вы нажимаете y, он ЕСТЬ ожидает ввода, он ждет, когда вы сделаете движение.

Если вы посмотрите на h: y и h: yy, вы увидите, что они говорят, что y вставляет {движение} текст в регистр. Команда y на самом деле не извлекает текст, пока вы не нажмете хотя бы вторую клавишу, чтобы указать направление. Типичным вариантом использования y будет что-то вроде y4l для переноса 4 символов вправо.

Когда вы предоставляете еще одно нажатие клавиши y вместо движения, это особый случай, когда он просто дергает от начала строки к новой строке.

person Stun Brick    schedule 18.07.2018