Иногда при вводе команды в обычном режиме вы можете сделать опечатку, например, если я собираюсь печатать 10dk
, я могу случайно начать печатать 19d
.
Поскольку команда еще не была завершена / зафиксирована, возможно ли удалить неправильные ключи, используя клавишу Backspace, например: 19d<backspace><backspace>0dk
вместо того, чтобы нажимать escape и повторить команду?
Дополнительный вопрос: существует ли термин Vim для структуры данных, которая содержит текущую команду до ее фиксации?
vimrc
normal-mode
command-history
HellaMad
источник
источник
Ответы:
Нет никакого способа сделать это, и это нормально, что нет: команды обычного режима, как правило, довольно короткие и могут быть отменены, Escесли вы запутались.
Возможный обходной путь - использовать
:normal
команду. Это удлиняет процесс, но, например, если вы наберете:normal 10j
в командной строке, Vim будет выполняться так,10j
как если бы вы набирали его в обычном режиме. (См.:h :normal
)Вы также можете добавить эти строки в свой
.vimrc
:Они создают отображение (здесь, F4но используют все, что вы хотите), которое будет вызывать функцию
NormalModeCommand()
.Функция позволяет вам ввести строку в командной строке, а затем выполнить введенную вами строку как команду обычного режима. Когда вы вводите строку в командной строке, вы можете исправить ее, как и любую другую команду. Конечно, это не идеально, но опять же Вим не предназначен для этого.
источник