O que fazemos quando erramos, desfazemos o erro. Para isso serve a ferramenta undo, tão popular nos mais diversos tipos de editores. Hoje veremos o que o Vim nos oferece para desfazer e refazer a edições.
Desfazendo e refazendo
Desfazer uma ação é extremamente simples, mas pode haver algumas particularidades.
O comando u desfaz a última edição, enquanto o comando CTRL-R refaz a última edição desfeita.
iFooiBar iFooBar u <- Desfazendo iFooBar CTRL-R <- Refazendo iFooBar
Os comandos u e CTRL-R aceitam um count como argumento, portanto, podemos fazer 2u ou 4CTRL-R para desfazer 2 edições ou refazer a últimas 4 edições desfeitas.
Nota: CTRL-R difere de . pois o primeiro refaz a última edição desfeita, enquanto o segundo reexecuta o último comando de edição.
Listas
Listas são estruturas recorrentes em programação. Uma lista é um conjunto de elementos dispostos em um seqüência, aonde um elemento tem um elemento anterior e posterior associado a ele, exceto o primeiro elemento, que não possui o anterior e o último elemento, que não possui um posterior.
Um apontador nada mais faz do que apontar para um determinado elemento de uma lista.
Lista de edição
Uma lista de edição, é uma estrutura que contém as edições realizadas em ordem seqüencial. Os comandos u e CTRL-R simplesmente manipulam está lista para desfazer ou refazer as edições.
Conteúdo - Lista de edição | - Alteração feita: iFooFoo | - Alteração feita: iBar Foo Bar | - Alteração feita: iFooBar <-- Apontador Foo Bar FooBar
Utilizando o comando u:
Vazio | Alteração feita: iFooFoo | Alteração feita: iBar <-- Apontador Foo Bar Alteração desfeita: iFooBar
Utilizando o comando u novamente:
Vazio | Alteração feita: iFoo<-- Apontador Foo Alteração feita: iBar Alteração desfeita: iFooBar
Utilizando o comando CTRL-R:
Vazio | Alteração feita: iFooFoo | Alteração feita: iBar <-- Apontador Foo Bar Alteração desfeita: iFooBar
Quero mais!
Depois que você pega o jeito, editar no VIm é uma delícia. Desfazer uma ação é extremamente freqüente e a tecla u em teclados QWERTY é facilmente acessada.
Undo é um assunto extenso dentro do VIm pois ele envolve a função básica de editação. Outros tópicos interessantes são: bloco de edição, arvore de edição e timeline de edição. Estes dois últimos serão abordados futuramente, pois são de ampla utilidade.
Para os mais impacientes ou curiosos, vocês podem obter TUDO sobre undo no help, pesquisando sobre undo ou no capítulo 32.
:help undo :help 32