Patcheando com o Vim
Publicado em Developer
O Vim realmente não deixa de me surpreender mesmo após um bom tempo usando ele o dia inteiro. Hoje descobri um recurso muito útil para os desenvolvedores (olha eu no meio ehehe).Vou descrever abaixo como podemos criar e aplicar patches com esse ótimo. editor.
Vamos criar um arquivo, chamado, digamos, foo.rb, com o seguinte conteúdo:
1 class Foo 2 def foo 3 puts "xoo!" 4 end 5 end
Aí o Juquinha (putz, de onde tirei isso) pega meu código e vê que eu escrevi a string do método errado, e resolve fazer um patch, também adicionando outra classe chamada Bar. Ele abre o arquivo no Vim, corrige a string para "foo", cria (em um arquivo chamado foo.patch) e envia o patch, que resulta em:
--- foo.rb.orig 2007-08-01 16:19:03.000000000 -0300 +++ foo.rb 2007-08-01 16:19:26.000000000 -0300 @@ -1,5 +1,11 @@ class Foo def foo - puts "xoo!" + puts "foo!" + end +end + +class Bar + def bar + puts "bar!" end end
Com esse patch em mãos, abrimos o nosso arquivo foo.rb no Vim, e digitamos:
:diffpatch foo.patch
Olhem a mágica que acontece! Temos os dois arquivos abertos, assinalados onde estão as diferenças que podem ser aplicadas pelo patch. Podemos inclusive navegar pelas alterações usando ]c para ir para a o início da próxima alteração e [c para ir para o início da alteração anterior. Se você estiver na janela do novo arquivo criado com o código do patch aplicado e desejar aplicar a alteração que o cursor se encontra no arquivo original, digite, em Normal Mode, dp. Se for o inverso, ou seja, você estiver no arquivo original e quiser incorporar as mudanças do arquivo novo criado com o patch, digite do. O resultado final fica:
1 class Foo 2 def foo 3 puts "foo!" 4 end 5 end 6 7 class Bar 8 def bar 9 puts "bar!" 10 end 11 end
Uma dica é digitar :1,$+1diffget estando posicionado no arquivo original para incorporar todas as alterações feitas pelo patch e mostradas no arquivo novo. Happy patching and happy vimming! :-)
Comentários
Comentários fechados.
Artigos anteriores
- Pull requests em modo raiz - sex, 22 de dezembro de 2023, 09:57:09 -0300
- Qual a idade do seu repositório? - ter, 27 de dezembro de 2022, 12:50:35 -0300
- Utilizando ctags em projetos Rails mais recentes - qui, 24 de junho de 2021, 08:23:43 -0300
- Fazendo o seu projeto brotar - seg, 15 de julho de 2019, 08:57:05 -0300
- Learn Functional Programming with Elixir - sex, 02 de março de 2018, 18:47:13 -0300
- Ambiente mínimo - Driver Driven Development - qua, 23 de agosto de 2017, 15:15:03 -0300
- Ambiente mínimo - repositórios de código - dom, 16 de abril de 2017, 13:02:14 -0300
- Ambiente mínimo - terminal e navegador - dom, 02 de abril de 2017, 21:43:29 -0300
- Utilizando muitas gems no seu projeto? - sáb, 29 de outubro de 2016, 11:57:55 -0200
- Desenvolvedores e inteligência artificial - seg, 11 de julho de 2016, 09:09:38 -0300
realmente muito boa a dica.
[]'s
Fantástico!!
Adicionado aos meus favoritos!