2011-11-10 7 views
5

zastanawiam się, czy jestem w stanie to zrobić w vim: kodWybierz rozłączne fragmenty kodu w vim dla szarpiąc

próbki:

require 'abstract_controller/collector' 
require 'active_support/core_ext/hash/reverse_merge' 
require 'active_support/core_ext/array/extract_options' 
require 'IDONTWANTTHISLINETOBEINCLUDEDINMYYANKREGISTER' 
require 'IDONTWANTTHISLINETOBEINCLUDEDINMYYANKREGISTER' 

    module ActionMailer #:nodoc: 
     class Collector 
     include AbstractController::Collector 
     attr_reader :responses 

     def initialize(context, &block) 
      @context = context 
      @responses = [] 
      @default_render = block 
     end 

     def any(*args, &block) 
      options = args.extract_options! 
      raise "You have to supply at least one format" if args.empty? 
      args.each { |type| send(type, options.dup, &block) } 
     end 
     alias :all :any 

     def custom(mime, options={}) 
      options.reverse_merge!(:content_type => mime.to_s) 
      @context.freeze_formats([mime.to_sym]) 
      options[:body] = block_given? ? yield : @default_render.call 
      @responses << options 
     end 
     end 
    end 

Załóżmy teraz chcę szarpać tylko kilka linii i umieścić je w innym pliku. Załóżmy, że chcę szarpać te blokują linii:

Chunk 1:

require 'abstract_controller/collector' 
require 'active_support/core_ext/hash/reverse_merge' 
require 'active_support/core_ext/array/extract_options' 

Chunk 2:

module ActionMailer #:nodoc: 
     class Collector 
     include AbstractController::Collector 
     attr_reader :responses 

     def initialize(context, &block) 
      @context = context 
      @responses = [] 
      @default_render = block 
     end 

Chunk 3:

 def custom(mime, options={}) 
      options.reverse_merge!(:content_type => mime.to_s) 
      @context.freeze_formats([mime.to_sym]) 
      options[:body] = block_given? ? yield : @default_render.call 
      @responses << options 
     end 
     end 
    end 

Linie te nie tworzą ciągła grupa linii, są one rozdzielone. Aby osiągnąć to, co chcę, muszę zerwać te bloki w 3 krokach, co jest dość denerwujące. Ponieważ muszę szarpać, przełączać bufor, wkładać, przełączać bufor, szarpać, przełączać bufor, wkładać ... tak ...

Czy istnieje sposób, aby zrobić to bardziej efektywnie (w jednym kroku)?

Odpowiedz

13

pomocą rejestru w trybie dopisywania:

  • Wizualnie wybranych pierwszych trzech linii, "ay
  • Wizualnie wybrać 10 kolejnych linii, "Ay (zwróć uwagę na literę)
  • Wizualnie wybierz fragment 3, "Ay
  • Przejdź do innego bufora, "ap

Lubisz rejestry? This answer is more in-depth.

+0

Doskonale! Dzięki! – flyer88