Respostas:
Você está procurando a definição de undo-blocks
.
De :h undo-blocks
:
Um comando desfazer normalmente desfaz um comando digitado, independentemente de quantas alterações esse comando fizer. Essa sequência de alterações que podem ser desfeitas forma um bloco de desfazer. Portanto, se a (s) tecla (s) digitada (s) chamam uma função, todos os comandos na função são desfeitos juntos.
O mesmo bloco é usado para redo
. De :h redo
:
As últimas alterações são lembradas. Você pode usar os comandos desfazer e refazer acima para reverter o texto como estava antes de cada alteração. Você também pode aplicar as alterações novamente, retornando o texto antes de desfazer.
Edição modal do Vim é muitas vezes visto como um operador (por exemplo c
, d
...) aplicado sobre um movimento (por exemplo iw
, w
, }
, ...). Como um produto maravilhoso, o Vim recebe desfazer pedaços. Onde outros editores precisam adivinhar para transformar muitos pequenos desfazer em blocos de desfazer, o Vim faz isso naturalmente. Outro efeito colateral é que isso fornece um operador de repetição .
(também conhecido como comando dot).
Sua pergunta menciona especificamente pressionamentos de teclas, portanto, presumo que você queira saber como desfazer pequenas alterações enquanto estiver no modo de inserção. A resposta é que este não é "o caminho do Vim". "The Vim Way" significa que você estará no modo de inserção por breves momentos de cada vez. Isso significa que quando erros são cometidos no modo de inserção, você geralmente sai do modo normal e corrige o texto ou apenas desfaz u
e reescreve o texto.
Às vezes, é necessário dividir um bloco de desfazer no modo de inserção. Isso pode ser feito através do <c-g>u
modo de inserção. Veja :h :undoj
e :h undo-blocks
para mais informações.
Para obter mais ajuda, sugiro o seguinte:
:h undo-blocks
:h :undoj
:h undo-tree
:h persistent-undo
:h undo.txt
Existem também alguns screencasts sobre esse assunto:
Você também pode pensar dessa maneira: toda vez que você insere o modo para editar o texto e pressiona Esc, isso forma um bloco. Se você tentar desfazer esse bloco, irá para a mesma posição antes de entrar no modo de inserção.
Portanto, você pode "salvar" suas alterações apenas saindo do modo de inserção de tempos em tempos: digamos que você vá para o modo de inserção e escreva uma função. Você pode continuar codificando e ir para a próxima função, mas às vezes é preferível voltar ao modo normal e alternar para o modo de inserção novamente. Dessa forma, você pode ter seu código estruturado de maneira simples e, se precisar voltar, poderá saber em que posição você terminará.
Nota: se você usar setas para mover, é como se você pressionasse Esc+ [ hjkl]
CTRL-G u
no modo de inserção, o que é útil se você tiver algumas macros do modo de inserção.