Задать вопрос
@Promix17

Как переопределить последовательность нажатий клавиш?

Хочу переопределить клавиши таким образом, чтобы, например:

space + u делало Ctrl + u

Но при этом:

space + uu делало Ctrl + uu

Допустим в конфиге следующее содержимое:

nnoremap <space>u <C-u>

Когда я нажимаю space + u, то первый раз работает всё нормально, но когда я второй раз нажимаю u (не отпуская space с первого раза), то u работает как undo.

Но я хочу, чтобы c клавишей space всё работало так же как и с клавишей Ctrl, когда я один раз зажимаю Ctrl, а затем сколько угодно раз нажимаю u при зажатом Ctrl.

Что делать?
  • Вопрос задан
  • 285 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@SilentFl
Мне кажется что вы хотите чего-то очень странного. Клавиши ctrl, alt, shift, mod, win и прочие - это клавиши-модификаторы, которые отслеживаются параллельно "обычным" цифро-буквенным клавишам (в т.ч. и space). И сказать, что теперь space у нас клавиша-модификатор - это явно надо идти ниже уровня вима. И именно поэтому nnoremap u работает не так как - нажатие u расценивается вимом как последовательное нажатие: сначала , потом u, можете убедиться.
Ответ написан
@habrahbarauser
Поддеживаю SilentFl, но, как вариант (и если используете *nix), можете попробовать использовать xcape для задания пробелу двойственного поведения: как Ctrl в сочетании с другой клавишей, и как пробел при одиночном нажатии.
Ответ написан
Комментировать
konofeev
@konofeev
Программист
Не вижу проблемы: nnoremap uu
Когда нажмёшь пробел и два раза u всё отработает как и задумано. Но также будет отрабатывать, если нажмёшь пробел + u и ещё раз пробел + u.
То есть, второе будет правильное поведение, первое - побочное.
И да, у тебя будет отрабатывать это как одна команда, а не как две отдельные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы