Можно ли посмотреть историю нажатий клавиш в обычном режиме?

32

Я знаю, что Vim хранит историю для бывших команд, поисков, мест перехода, изменений и, возможно, других.

С помощью showcmdset Vim также показывает, какие клавиши вы уже ввели для команды нормального режима, пока эта команда не будет выполнена.

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

Итак, есть ли способ просмотреть историю нажатий клавиш в нормальном режиме, предпочтительно с разделителями, когда происходит фактическое редактирование или действие (например, перемещение или изменение режима)?

Джон О'М.
источник
4
Возможно связано: drbunsen.org/vim-croquet
wchargin

Ответы:

20

Пройдя по ссылке от @WChargin немного дальше, я нашел это:

Вы можете запустить vim с помощью опции -wили -Wследующим образом:

vim -w keys.txt my_file

Все введенные символы записываются в файл {scriptout}, пока вы не выйдете из Vim.

-wдобавит к указанному файлу, если он существует; -Wперезапишу это.

Это не совсем то, что вы хотите, но это верное направление.

Обновление: Похоже , что на самом деле ВИМ буферами все нажатия клавиш , пока вы не закроете Vim, но есть одна линия патч здесь , что будет записывать нажатия клавиш сразу.

xthrd
источник
Благодарность! Я использую это как отправную точку для поиска в исходном коде. Похоже, -w сохраняет каждое нажатие клавиши, не только команды в нормальном режиме, но вы правы: это верное направление!
Джон ОМ.
@ xthrd, как эти keys.txtфайлы отформатированы / структурированы? Когда я использую -w, добавление всегда происходит в длинной-длинной-длинной линии; и отображаются странные символы: при UTF-8 всякий раз, когда я открываю файл в новом буфере, я получаю €齛. Это хороший маркер сам по себе, но было бы здорово, если бы логи можно было анализировать по желанию.
Llinfeng
@llinfeng Это вообще не отформатировано. Это буквально файл, содержащий нажатия клавиш в том порядке, в котором они были сделаны. (Хотя обратите внимание, что если некоторые нажатия клавиш выполняются <cr>, то файл будет содержать разрывы строк.) Это связано с тем, что основная цель заключается в создании файлов, которые можно воспроизвести с помощью этой -sопции. Но почему бы не попробовать это для себя!
Богатое
@Rich Спасибо за разъяснения. Я использовал этот механизм отслеживания ключей для устранения проблемы, с которой начался мой поиск. [Мой урок W
таков
-4

Есть, q:который показывает историю команд.

Я также считаю полезным, чтобы вы нажимали вверх в частично заполненной команде, чтобы циклически проходить матчи. Например, /abc нажатие вверх будет циклически перебирать историю ваших поисков, начиная с 'abc'.

Коллин Питерс
источник
5
q: показывает историю команд ex и полезен, но не является журналом обычных команд, таких как «ad2tn (удаляйте в регистр a до второго n)
John O'M.
Не забывайте, что в процессе редактирования команды вы можете вызвать текущую строку в редакторе истории и использовать vi для редактирования строки, нажавCtrl+f
Sukima