2011-11-10 13 views
5

Me pregunto si soy capaz de hacer esto en Vim: CódigoSeleccionar trozos inconexos de código en Vim para tirar de

muestra:

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 

Ahora supongamos que quiero dar un tirón a sólo algunas líneas y poner ellos en otro archivo. Supongamos que quiero dar un tirón a estos bloque de líneas:

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 

no forman Estas líneas un grupo de línea continua, están separados. Entonces, para lograr lo que quiero, tengo que tirar de estos bloques en 3 pasos, lo que me resulta bastante molesto. Como tengo que tirar, cambiar el buffer, poner, cambiar buffer, yank, cambiar buffer, poner ... etc ...

Entonces, ¿hay alguna forma de hacer esto más eficientemente (en un solo paso)?

Respuesta

13

usar un registro en la modalidad de apertura:

  • Seleccione visualmente los primeros tres líneas, "ay
  • seleccionar visualmente las 10 líneas siguientes, "Ay (nótese la mayúscula)
  • seleccionar visualmente trozo 3, "Ay
  • Ir a otro búfer, "ap

¿Te gustan los registros? This answer is more in-depth.

+0

¡Excelente! ¡Gracias! – flyer88

Cuestiones relacionadas