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)?
Doskonale! Dzięki! – flyer88