def _find_next regex=@last_regex, start = @search_found_ix, first_time = false
      #raise "No previous search" if regex.nil?
      warn "No previous search" and return if regex.nil?
      #$log.debug " _find_next #{@search_found_ix} : #{@current_index}"
      extra = 1 # first time search on current line, next time skip current line or else we get stuck.
      extra = 0 if first_time
      start ||= 0
      fend = @list.size-1
      if start != fend
        start += extra unless start == fend # used to be +=1 so we don't get stuck in same row
        @last_regex = regex
        @search_start_ix = start
        regex = Regexp.new(regex, Regexp::IGNORECASE) if @search_case
        start.upto(fend) do |ix| 
          row1 = @list[ix].to_s

          # 2011-09-29 crashing on a character F3 in log file
          # 2013-03-20 - 18:25 187compat
          if row1.respond_to? :encode
            row = row1.encode("ASCII-8BIT", :invalid => :replace, :undef => :replace, :replace => "?")
          else
            row = row1
          end

          m=row.match(regex)
          if !m.nil?
            @find_offset = m.offset(0)[0]
            @find_offset1 = m.offset(0)[1]
            ix += (@_header_adjustment || 0)
            @search_found_ix = ix
            return ix 
          end
        end
      end
      fend = start-1
      start = 0
      if @search_wrap
        start.upto(fend) do |ix| 
          row = @list[ix].to_s
          m=row.match(regex)
          if !m.nil?
            @find_offset = m.offset(0)[0]
            @find_offset1 = m.offset(0)[1]
            ix += (@_header_adjustment || 0)
            @search_found_ix = ix
            return ix 
          end
        end
      end
      return nil
    end
def _find_next regex=@last_regex, start = @search_found_ix, first_time = false
      #raise "No previous search" if regex.nil?
      warn "No previous search" and return if regex.nil?
      #$log.debug " _find_next #{@search_found_ix} : #{@current_index}"
      extra = 1 # first time search on current line, next time skip current line or else we get stuck.
      extra = 0 if first_time
      start ||= 0
      fend = @list.size-1
      if start != fend
        start += extra unless start == fend # used to be +=1 so we don't get stuck in same row
        @last_regex = regex
        @search_start_ix = start
        regex = Regexp.new(regex, Regexp::IGNORECASE) if @search_case
        start.upto(fend) do |ix| 
          row1 = @list[ix].to_s

          # 2011-09-29 crashing on a character F3 in log file
          # 2013-03-20 - 18:25 187compat
          if row1.respond_to? :encode
            row = row1.encode("ASCII-8BIT", :invalid => :replace, :undef => :replace, :replace => "?")
          else
            row = row1
          end

          m=row.match(regex)
          if !m.nil?
            @find_offset = m.offset(0)[0]
            @find_offset1 = m.offset(0)[1]
            ix += (@_header_adjustment || 0)
            @search_found_ix = ix
            return ix 
          end
        end
      end
      fend = start-1
      start = 0
      if @search_wrap
        start.upto(fend) do |ix| 
          row = @list[ix].to_s
          m=row.match(regex)
          if !m.nil?
            @find_offset = m.offset(0)[0]
            @find_offset1 = m.offset(0)[1]
            ix += (@_header_adjustment || 0)
            @search_found_ix = ix
            return ix 
          end
        end
      end
      return nil
    end
find forwards
 Using this to start a search or continue search