Ответы:
Вы ищете определение undo-blocks.
От :h undo-blocks:
Одна команда отмены обычно отменяет набранную команду, независимо от того, сколько изменений она вносит. Эта последовательность отменяемых изменений образует блок отмены. Таким образом, если набранные клавиши вызывают функцию, все команды в функции отменяются вместе.
Этот же блок используется для redo. От :h redo:
Последние изменения запоминаются. Вы можете использовать команды отмены и возврата выше, чтобы вернуть текст к тому, что было до каждого изменения. Вы также можете применить изменения снова, вернув текст перед отменой.
Модальные редактирования Vim, часто рассматриваются как оператор (например c, d...) применяется над движением (например iw, w, }, ...). В качестве замечательного продукта Vim получает толстые отменить. В то время как другим редакторам приходится делать какие-то догадки, чтобы превратить множество маленьких откатов в блоки отмены, Vim делает это естественно. Еще один побочный эффект - это дает вам оператор повтора .(он же точка).
В вашем вопросе конкретно упоминаются нажатия клавиш, поэтому я предполагаю, что вы хотите знать, как отменить небольшие изменения в режиме вставки. Ответ в том, что это не «путь Vim». «The Vim Way» означает, что вы будете в режиме вставки для короткой серии за раз. Это означает, что при ошибках в режиме вставки вы часто просто выходите в обычный режим и исправляете текст или просто отменяете его uи переписываете текст.
Иногда необходимо разделить блок отмены в режиме вставки. Это может быть выполнено через <c-g>uрежим вставки. Смотрите :h :undojи :h undo-blocksдля получения дополнительной информации.
Для получения дополнительной помощи я предлагаю следующее:
:h undo-blocks
:h :undoj
:h undo-tree
:h persistent-undo
:h undo.txt
Есть также несколько скринкастов на эту тему:
Вы также можете думать об этом так: каждый раз, когда вы переходите в режим вставки для редактирования текста, и вы нажимаете Esc, это будет формировать блок. Если вы попытаетесь отменить этот блок, вы перейдете в ту же позицию, прежде чем войти в режим вставки.
Поэтому вы можете «сохранить» ваши изменения, просто выходя из режима вставки время от времени: допустим, вы переходите в режим вставки и пишете функцию. Вы можете продолжить кодирование и перейти к следующей функции, однако иногда предпочтительнее вернуться в обычный режим и снова переключиться в режим вставки. Таким образом, вы можете структурировать свой код простым способом, и если вам нужно вернуться назад, вы можете знать, в какой позиции вы окажетесь.
Примечание: если вы используете стрелки для перемещения, это как если бы вы нажали Esc+ [ hjkl]
CTRL-G uв режиме вставки, что полезно, если у вас есть несколько макросов режима вставки.