Обычно, если я определяю карты клавиш, для которых требуется 2 клавиши, нажатие первой будет ждать второй клавиши, но такие клавиши, как y
, выполняются немедленно, пока yy
все еще работает. Можно ли этого добиться с помощью vimscript?
Как vim внутренне сделал так, чтобы нажатие одного `y` не ждало второго `y` для карты клавиш `yy`?
Ответы (1)
Вот как это работает.
Когда вы нажимаете y, он ЕСТЬ ожидает ввода, он ждет, когда вы сделаете движение.
Если вы посмотрите на h: y
и h: yy
, вы увидите, что они говорят, что y
вставляет {движение} текст в регистр. Команда y
на самом деле не извлекает текст, пока вы не нажмете хотя бы вторую клавишу, чтобы указать направление. Типичным вариантом использования y
будет что-то вроде y4l
для переноса 4 символов вправо.
Когда вы предоставляете еще одно нажатие клавиши y
вместо движения, это особый случай, когда он просто дергает от начала строки к новой строке.
person
Stun Brick
schedule
18.07.2018
Спасибо за объяснение! а также я обнаружил, что эта статья очень ясно объяснила learnvimscriptthehardway.stevelosh.com/chapters/16.html< /а>
- person tga; 18.07.2018
Это удовольствие, и это отличный ресурс и отличное место для обучения. Я действительно рекомендую как можно больше читать о таких вещах, даже если вы их не реализуете, просто потому, что вы никогда не знаете, когда это произойдет.
- person Stun Brick; 18.07.2018
да, это отличный ресурс, изучение и настройка vim вызывает привыкание ????
- person tga; 18.07.2018
y
оценивается немедленно? В обычном режимеy
переключится в режим ожидания оператора, который будет ожидать текстовый объект или движение. Вы правы в том, что ожидание в режиме ожидания оператора — это не то же самое, что ожидание в многоклавишном отображении, но... можете ли вы лучше описать, что вы пытаетесь сделать (и что вы подразумеваете подy
не жду)? - person Amadan   schedule 18.07.2018