'Interactive "more" of a table or column.
Parameters
max_lines : int or None
Maximum number of rows to output
max_width : int or None
Maximum character width of output
show_name : bool
Include a header row for column names. Default is True.
show_unit : bool
Include a header row for unit.  Default is to show a row
for units only if one or more columns has a defined value
for the unit.
show_dtype : bool
Include a header row for column dtypes. Default is False.'

def _more_tabcol(self, tabcol, max_lines=None, max_width=None, show_name=True, show_unit=None, show_dtype=False):

    allowed_keys = u'f    br<>qhpn'
    n_header = 0
    if show_name:
        n_header += 1
    if show_unit:
        n_header += 1
    if show_dtype:
        n_header += 1
    if (show_name or show_unit or show_dtype):
        n_header += 1
    kwargs = dict(max_lines=(-1), show_name=show_name, show_unit=show_unit, show_dtype=show_dtype)
    if hasattr(tabcol, u'columns'):
        kwargs[u'max_width'] = max_width
    (max_lines1, max_width) = self._get_pprint_size(max_lines, max_width)
    if (max_lines is None):
        max_lines1 += 2
    delta_lines = (max_lines1 - n_header)
    inkey = Getch()
    i0 = 0
    showlines = True
    while True:
        i1 = (i0 + delta_lines)
        if showlines:
            try:
                os.system((u'cls' if (os.name == u'nt') else u'clear'))
            except Exception:
                pass
            lines = tabcol[i0:i1].pformat(**kwargs)
            colors = ((u'red' if (i < n_header) else u'default') for i in range(len(lines)))
            for (color, line) in zip(colors, lines):
                color_print(line, color)
        showlines = True
        print()
        print(u'--    f,    <space>,    b,    r,    p,    n,    <,    >,    q    h    (help)    --', end=u'    ')
        while True:
            try:
                key = inkey().lower()
            except Exception:
                print(u'\n')
                log.error(u'Console    does    not    support    getting    a    character    as    required    by    more().        Use    pprint()    instead.')
                return
            if (key in allowed_keys):
                break
        print(key)
        if (key.lower() == u'q'):
            break
        elif ((key == u'    ') or (key == u'f')):
            i0 += delta_lines
        elif (key == u'b'):
            i0 = (i0 - delta_lines)
        elif (key == u'r'):
            pass
        elif (key == u'<'):
            i0 = 0
        elif (key == u'>'):
            i0 = len(tabcol)
        elif (key == u'p'):
            i0 -= 1
        elif (key == u'n'):
            i0 += 1
        elif (key == u'h'):
            showlines = False
            print(u'\n                Browsing    keys:\n                            f,    <space>    :    forward    one    page\n                            b    :    back    one    page\n                            r    :    refresh    same    page\n                            n    :    next    row\n                            p    :    previous    row\n                            <    :    go    to    beginning\n                            >    :    go    to    end\n                            q    :    quit    browsing\n                            h    :    print    this    help', end=u'    ')
        if (i0 < 0):
            i0 = 0
        if (i0 >= (len(tabcol) - delta_lines)):
            i0 = (len(tabcol) - delta_lines)
        print(u'\n')
