Ответы:
Вы ищете определение 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
в режиме вставки, что полезно, если у вас есть несколько макросов режима вставки.