2011-11-10 9 views
5

Mi chiedo se sarò in grado di fare questo in Vim: CodiceSelezionare pezzi disgiunti di codice in Vim per tirando

Esempio:

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 

Ora supponiamo che io voglio tirare solo alcune linee e mettere li in un altro file. Supponiamo che io voglio tirare questi blocco di righe:

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 

Queste linee non formano un gruppo di linee continue, sono separate. Quindi, per ottenere ciò che voglio, devo tirare questi blocchi in 3 passaggi, che trovo abbastanza fastidioso. Perché devo strattonare, cambiare buffer, mettere, passare buffer, strattonare, passare buffer, mettere ... così via ...

Quindi, c'è un modo per farlo in modo più efficiente (in un unico passaggio)?

risposta

13

Utilizzare un registro in accodamento:

  • visivamente selezionare prime tre righe, "ay
  • selezionare visivamente prossimi 10 linee, "Ay (notare la lettera maiuscola)
  • selezionare visivamente pezzo 3, "Ay
  • Vai a altro buffer, "ap

Ti piacciono i registri? This answer is more in-depth.

+0

Eccellente! Grazie! – flyer88

Problemi correlati