При использовании set showcmd
Vim показывает частичные команды в последней строке экрана. Например, в обычном режиме при вводе команды dt.
отображается последняя строка, dt
а затем, когда вы нажимаете .
команду, команда завершена и, следовательно, ничего не отображается.
Есть ли способ показать полные команды? Например, при вводе текста будет показано dt.gU(
первое dt.
; и при начале ввода второй команды первая будет очищена, так что в конце gU(
будет отображаться только один.
Это может быть полезно, например, для иллюстрации GIF; и проверить, что вы набрали то, что вы хотели, если вы столкнулись с неожиданным результатом.
options
command-history
Гонсалу Рибейро
источник
источник
dt
Показано , потому что это оператор тока в ожидании. Как только он получил ходатайство, он больше не находится в состоянии ожидания оператора. Предположим, мы пошли дальше, и сделалиdt.gU(gu)daw
или так. Это все «одна полная команда», или четыре полные команды, или что-то еще?dt.gU(
есть две команды:dt.
иgU(
.... То, что вы действительно хотите, это показать какую-то историю команд (Vim уже показывает «полные командиры»).src/normal.c
кодовых вызововclear_showcmd()
в нескольких местах (normal_cmd()
,do_pending_operator()
,end_visual_mode()
). Я играю с дампом в файлshowcmd_buf
в тех точках, который выглядел довольно неплохо, но я уверен, что вы не можете получить то, что хотите, без аналогичного изменения исходного кода Vim и его перестройки. Конечно, это может стоить хлопот, чтобы сделать ваши гифки.Ответы:
Я не мог найти способ сделать это в обычном Vim. Однако, если вы хотите установить Vim, то вам может помочь следующее.
Очень простое исправление (примененное к Vim-7.4.052) отключает фактическое обновление экрана, который очищает историю в конце обычной команды. Это делается путем возврата того, установлено или нет значение
showcmd_is_clear
перед обновлением дисплея. ( в качестве альтернативы, вы можете закомментировать , если заявление и оставить только одну оригинальнуюreturn
строку. примечание : Пластырь ниже не паста очень хорошо, вы , возможно , придется применить это вручную, хотя это только короткий один вкладыш. примечание Я не закомментировал фактическое,display_showcmd()
потому что оно, кажется, используется в визуальном режиме для обновления отображения количества выбранных строк или другого, возможно, другого материала. Я не тестировал это всесторонне.Результат выглядит так:
Несколько интересных вещей для заметки:
j
,k
,b
и т.д.x
фактически становитсяdl
в showcmd_buf.:
команды или входа в режим вставки (по крайней мере, в моей настройке))"
, но моя последовательность клавиш видна в окне vim для моего длинного регистра, указанного yank.^[
в области showcmdисточник
Помимо решения John , есть еще один способ показать все нажатия клавиш vim, которые были нажаты с помощью
-w
параметра, который записывает все символы, которые вы вводите в файл. Проблема в том, что vim записывает нажатия клавиш только при выходе из Vim. Вот как работает VimGolf .Чтобы обойти это, Kana Natsuno разработала этот однострочный патч , который отключает буферизацию
-w
опции, поэтому у вас есть доступ к потоку нажатий клавиш в реальном времени. Затем их нужно прочитать (напримерtail -f
), проанализировать, или вы можете попытаться отобразить их в строке состояния (:set statusline
).Изучите пользовательскую сборку Vim, используя ветвь нажатий клавиш live-stream от MacVim, чтобы получить поток нажатий клавиш в реальном времени.
Источник: Vimprint - синтаксический анализатор нажатий клавиш Vim в блоге Drew Neil
Это полезно, если вы хотите показать нажатия клавиш Vim в видеоуроках или GIF-файлах.
источник