Иногда я делюсь снимками экрана и клипами использования vim с другими. Было бы неплохо расширить часть командной строки, выделенную на этом рисунке:

vim с выделенной текущей последовательностью клавиш в строке состояния

Я хотел бы сделать так, чтобы предыдущие последовательности клавиш также были видны, например:

y2w jj f[ p   2d - Вы можете видеть последовательности клавиш, ведущие к текущей. Я уточню список желаний внизу.

Что-то подобное доступно в виде плагина или скрипта vim? Огромное количество скриптов, доступных на vim online, затрудняет поиск по ключевому слову.

Пояснение: я добавил следующий раздел, чтобы показать, какую функциональность я хотел получить, если было много плагинов vim, которые занимались этим. Поскольку кажется, что плагинов для выполнения того, что я хочу, может быть мало или нет , этот раздел в значительной степени не имеет отношения к вопросу - вопрос не в том, как реализовать эти функции, а в том, где они уже реализованы или нет.

Некоторые функции, на которые я надеюсь (но кажущиеся невероятными):

  1. Разделяйте последовательности клавиш с не-клавиатурным символом вместо пробела и другим для текущей команды, так что y2w jj f[ p   2d может стать y2w¦jj¦f[¦p » 2d
  2. Замените ключи, у которых есть альтернатива буквы, альтернативой, например, клавиша со стрелкой вправо - ^[[C с эквивалентным l . Редактировать: Чтобы уточнить, клавиша со стрелкой вправо является действительной клавишей в vim, но не имеет символа для ее представления (должна использоваться строка, такая как <right arrow> ), в тех случаях, когда клавиша l выполняет ту же функцию (большинство времени) он должен заменить более длинную строку.
  3. Предыдущие нажатия клавиш выполняются вплоть до начала строки (вместо одного или двух), и просто командная строка vim перезаписывает его при необходимости.
  4. Заменить некоторые нажатия клавиша с более элегантной альтернативой, например , hhhhh с 5h или более выразительно d2f) с d% (в соответствующей ситуации).

1 ответ1

1

Некоторые функции, на которые я надеюсь (но кажущиеся невероятными):

1. Разделяйте последовательности клавиш с не-клавиатурным символом вместо пробела и другим для текущей команды, так что y2w jj f [p 2d может стать y2w¦jj¦f [¦p »2d

Во-первых, вы должны выяснить, что вы хотите для себя. Один наивный (я уверен, что другие будут использовать более изящные методы) способ записи нажатых клавиш в обычном режиме состоит в записи макроса (нажмите qa, чтобы начать, qq, чтобы завершить запись, и просмотрите его с помощью :reg). Но это не собирается "разделять ключи" для вас, ставить пробелы между ними, потому что, ну ... потому что вы не нажимали пробел во время записи.

Если вы хотите поместить содержимое регистра а, например , в текст, вы можете с «ар , а затем разделить их по своему вкусу. После этого вы можете попытаться соединить их с помощью чего-то вроде join(a, "|") или любого другого вертикального символа. Я не уверен, отсюда.

2. Замените ключи, у которых есть альтернатива буквы, альтернативой, например, клавиша со стрелкой вправо - ^ [[C с эквивалентным l.

Это требует некоторой более высокой логики, так как часто есть много способов сделать то же самое. Что такое "альтернатива"?

3. Предыдущие нажатия клавиш выполняются вплоть до начала строки (вместо одного или двух), и просто командная строка vim перезаписывает его при необходимости.

Теперь, когда я думаю об этом, вы пробовали это с кейлоггером? Кажется, это было бы лучше, чем мое первое предложение, особенно если вы нацелены на запись скринкастов.

4. Замените некоторые нажатия клавиш более элегантной альтернативой, например, ччххх с 5ч или более впечатляюще d2f) на d% (в соответствующей ситуации).

Сложно. 5h - это просто способ Vim избавить вас от необходимости нажимать hhhhh.

РЕДАКТИРОВАТЬ: просто чтобы добавить, если вы делаете все это для целей записи скринкаста или образовательного видео, DemoCreator может записывать нажатия клавиш и представлять их на экране, когда вы нажимаете их.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .