sexta-feira, 28 de agosto de 2009

Desfazendo no VIm

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.

    iFoo
    iBar
    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: iFoo
     Foo
     |        - Alteração feita: iBar
     Foo
     Bar
     |        - Alteração feita: iFooBar <-- Apontador
     Foo
     Bar
     FooBar

Utilizando o comando u:

     Vazio
     |      Alteração feita: iFoo
     Foo
     |      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: iFoo
     Foo
     |      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

Um comentário:

  1. Æ!!

    Lembrando que no vim você nunca perde suas alterações mesmo que você sobrescreva após dar um undo e escrever outra coisa pois o vim guarda a arvore de alterações, portanto você pode utilizar:

    g+ para avançar na arvore de alterações
    g- para retornar na árvore de alterações

    Para saber mais sobre as alterações:

    :undolist

    E sem contar que o vim tambem possui a maquina do tempo, onde você pode voltar por tempo utilizando:

    :earlier 5m
    que volta 5 minutos no tempo com sua edição

    :later 6m
    Avança 6 minutos no tempo

    ;)

    Há braços

    ResponderExcluir

Comenta ae, amiguinho!