]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/tabs.1.html
ncurses 6.4 - patch 20240420
[ncurses.git] / doc / html / man / tabs.1.html
index 39986de506dcd5a4ac2966b4e7622bd6f6a2bcd9..5f4818826477829b7f619b0314d76c7dde3f21d0 100644 (file)
@@ -1,6 +1,7 @@
-<!-- 
+<!--
   ****************************************************************************
-  * Copyright (c) 2008-2013,2016 Free Software Foundation, Inc.              *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
+  * Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: tabs.1,v 1.15 2016/12/31 16:07:39 tom Exp @
+  * @Id: tabs.1,v 1.59 2024/04/20 19:08:15 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
-<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>tabs 1</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>tabs 1 2024-04-20 ncurses 6.4 User commands</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+
 </HEAD>
 <BODY>
-<H1 class="no-header">tabs 1</H1>
+<H1 class="no-header">tabs 1 2024-04-20 ncurses 6.4 User commands</H1>
 <PRE>
-<STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>                                                         <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
+<STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>                          User commands                         <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>tabs</STRONG> - set tabs on a terminal
+       <STRONG>tabs</STRONG> - set terminal tab stops
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>tabs</STRONG> [<EM>options</EM>]] <EM>[tabstop-list]</EM>
+       <STRONG>tabs</STRONG> [<EM>options</EM>] [<EM>tabstop-list</EM>]
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The  <STRONG>tabs</STRONG>  program clears and sets tab-stops on the termi-
-       nal.  This uses the terminfo  <EM>clear</EM><STRONG>_</STRONG><EM>all</EM><STRONG>_</STRONG><EM>tabs</EM>  and  <EM>set</EM><STRONG>_</STRONG><EM>tab</EM>
-       capabilities.   If  either  is  absent,  <STRONG>tabs</STRONG> is unable to
-       clear/set tab-stops.  The terminal should be configured to
-       use hard tabs, e.g.,
+       The  <STRONG>tabs</STRONG> program clears and sets tab-stops on the terminal.  This uses
+       the terminfo <STRONG>clear_all_tabs</STRONG> and <STRONG>set_tab</STRONG>  capabilities.   If  either  is
+       absent,  <STRONG>tabs</STRONG> is unable to clear/set tab-stops.  The terminal should be
+       configured to use hard tabs, e.g.,
+
+           stty tab0
+
+       Like <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>tabs</STRONG> writes to the standard output.   You  can  redirect
+       the  standard  output  to  a  file  (which  prevents <STRONG>tabs</STRONG> from actually
+       changing the tabstops), and later <STRONG>cat</STRONG> the file to the  screen,  setting
+       tabstops at that point.
 
-         stty tab0
+       These   are   hardware   tabs,  which  cannot  be  queried  rapidly  by
+       applications running in the terminal, if  at  all.   Curses  and  other
+       full-screen  applications  may  use  hardware  tabs in optimizing their
+       output to the terminal.  If  the  hardware  tabstops  differ  from  the
+       information  in  the  terminal  database,  the result is unpredictable.
+       Before running curses programs, you should either  reset  tab-stops  to
+       the standard interval
 
-       Like  <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>,  <STRONG>tabs</STRONG>  writes to the standard output.  You
-       can redirect the standard output to a file (which prevents
-       <STRONG>tabs</STRONG>  from  actually changing the tabstops), and later <STRONG>cat</STRONG>
-       the file to the screen, setting tabstops at that point.
+           tabs -8
+
+       or  use the <STRONG>reset</STRONG> program, since the normal initialization sequences do
+       not ensure that tab-stops are reset.
 
 
 </PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
 
 </PRE><H3><a name="h3-General-Options">General Options</a></H3><PRE>
        <STRONG>-T</STRONG><EM>name</EM>
-            Tell <STRONG>tabs</STRONG> which terminal type to use.  If this option
-            is  not  given,  <STRONG>tabs</STRONG>  will use the <STRONG>$TERM</STRONG> environment
-            variable.  If that  is  not  set,  it  will  use  the
-            <EM>ansi+tabs</EM> entry.
+            Tell <STRONG>tabs</STRONG> which terminal type to  use.   If  this  option  is  not
+            given,  <STRONG>tabs</STRONG>  will use the <STRONG>$TERM</STRONG> environment variable.  If that is
+            not set, it will use the <EM>ansi+tabs</EM> entry.
 
-       <STRONG>-d</STRONG>   The  debugging option shows a ruler line, followed by
-            two data  lines.   The  first  data  line  shows  the
-            expected tab-stops marked with asterisks.  The second
-            data line shows the  actual  tab-stops,  marked  with
-            asterisks.
+       <STRONG>-d</STRONG>   The debugging option shows a ruler  line,  followed  by  two  data
+            lines.   The  first  data line shows the expected tab-stops marked
+            with asterisks.  The second data line shows the actual  tab-stops,
+            marked with asterisks.
 
-       <STRONG>-n</STRONG>   This  option  tells <STRONG>tabs</STRONG> to check the options and run
-            any debugging option, but not to modify the  terminal
-            settings.
+       <STRONG>-n</STRONG>   This  option tells <STRONG>tabs</STRONG> to check the options and run any debugging
+            option, but not to modify the terminal settings.
 
-       <STRONG>-V</STRONG>   reports the version of ncurses which was used in this
-            program, and exits.
+       <STRONG>-V</STRONG>   reports the version of <EM>ncurses</EM> which was used in this program, and
+            exits.
 
-       The <STRONG>tabs</STRONG> program processes a single  list  of  tab  stops.
-       The  last  option  to be processed which defines a list is
-       the one that determines the list to be processed.
+       The <STRONG>tabs</STRONG> program processes a single list of tab stops.  The last option
+       to be processed which defines a list is the  one  that  determines  the
+       list to be processed.
 
 
 </PRE><H3><a name="h3-Implicit-Lists">Implicit Lists</a></H3><PRE>
-       Use a single number as an option, e.g., "<STRONG>-5</STRONG>" to  set  tabs
-       at  the  given  interval  (in  this case 1, 6, 11, 16, 21,
-       etc.).  Tabs are repeated up to the right  margin  of  the
-       screen.
+       Use  a  single number as an option, e.g., "<STRONG>-5</STRONG>" to set tabs at the given
+       interval (in this case 1, 6, 11, 16, 21, etc.).  Tabs are  repeated  up
+       to the right margin of the screen.
 
        Use "<STRONG>-0</STRONG>" to clear all tabs.
 
 
 
 </PRE><H3><a name="h3-Explicit-Lists">Explicit Lists</a></H3><PRE>
-       An  explicit  list  can be defined after the options (this
-       does not use a "-").  The values in the list  must  be  in
-       increasing numeric order, and greater than zero.  They are
-       separated by a comma or a blank, for example,
+       An  explicit list can be defined after the options (this does not use a
+       "-").  The values in the list must be in increasing numeric order,  and
+       greater  than  zero.   They  are  separated  by a comma or a blank, for
+       example,
 
-         tabs 1,6,11,16,21
-         tabs 1 6 11 16 21
+           tabs 1,6,11,16,21
+           tabs 1 6 11 16 21
 
-       Use a "+" to treat a number as an  increment  relative  to
-       the previous value, e.g.,
+       Use a "+" to treat a number as an increment relative  to  the  previous
+       value, e.g.,
 
-         tabs 1,+5,+5,+5,+5
+           tabs 1,+5,+5,+5,+5
 
        which is equivalent to the 1,6,11,16,21 example.
 
 
-</PRE><H3><a name="h3-Predefined-Tab-Stops">Predefined Tab-Stops</a></H3><PRE>
-       X/Open defines several predefined lists of tab stops.
+</PRE><H3><a name="h3-Predefined-Tab-Stops">Predefined Tab Stops</a></H3><PRE>
+       POSIX defines several predefined lists of tab stops.
 
        <STRONG>-a</STRONG>   Assembler, IBM S/370, first format
+            1,10,16,36,72
 
        <STRONG>-a2</STRONG>  Assembler, IBM S/370, second format
+            1,10,16,40,72
 
        <STRONG>-c</STRONG>   COBOL, normal format
+            1,8,12,16,20,55
 
        <STRONG>-c2</STRONG>  COBOL compact format
+            1,6,10,14,49
 
        <STRONG>-c3</STRONG>  COBOL compact format extended
+            1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67
 
        <STRONG>-f</STRONG>   FORTRAN
+            1,7,11,15,19,23
 
        <STRONG>-p</STRONG>   PL/I
+            1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61
 
        <STRONG>-s</STRONG>   SNOBOL
+            1,10,55
 
        <STRONG>-u</STRONG>   UNIVAC 1100 Assembler
+            1,12,20,44
+
+
+</PRE><H3><a name="h3-Margins">Margins</a></H3><PRE>
+       A  few  terminals  expose  a  means  of  changing  their left and right
+       margins.  <STRONG>tabs</STRONG> supports this feature with an option.
+
+       <STRONG>+m</STRONG> <EM>margin</EM>
+            The  effect  depends  on  whether  the  terminal  has  the  margin
+            capabilities:
+
+            <STRONG>o</STRONG>   If  the  terminal provides the capability for setting the left
+                margin, <STRONG>tabs</STRONG> uses this, and adjusts  the  available  tab  stop
+                widths.
+
+            <STRONG>o</STRONG>   If the terminal does not provide the margin capabilities, <STRONG>tabs</STRONG>
+                imitates their effect, putting tab stops at appropriate places
+                on each line.  The terminal's left margin is not modified.
+
+            If the <EM>margin</EM> parameter is omitted, the default is 10.  Use <STRONG>+m0</STRONG> to
+            reset the left margin, that is, to make it the left  edge  of  the
+            terminal's display.  Before setting a left margin, <STRONG>tabs</STRONG> resets the
+            margin to reduce problems that might arise from moving the  cursor
+            to the left of the current left margin.
+
+       When  setting  or  resetting  the  left margin, <STRONG>tabs</STRONG> may also reset the
+       right margin.
+
+
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+       <EM>/usr/share/tabset</EM>
+              tab stop initialization database
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       IEEE  Std 1003.1/The Open Group  Base Specifications Issue
-       7 (POSIX.1-2008) describes a <STRONG>tabs</STRONG> utility.  However
+       IEEE  Std  1003.1/The  Open   Group   Base   Specifications   Issue   7
+       (POSIX.1-2008) describes a <STRONG>tabs</STRONG> utility.  However,
 
-       <STRONG>o</STRONG>   This standard describes a <STRONG>+m</STRONG> option, to set  a  termi-
-           nal's  left-margin.   Very  few  of the entries in the
-           terminal database provide this capability.
+       <STRONG>o</STRONG>   this  standard  describes  a  <STRONG>+m</STRONG>  option  to  set a terminal's left
+           margin.  Very few of the entries in the terminal  database  provide
+           the   <STRONG>set_left_margin</STRONG>   (<STRONG>smgl</STRONG>)   or   <STRONG>set_left_margin_parm</STRONG>  (<STRONG>smglp</STRONG>)
+           capabilities needed to support the feature.
 
-       <STRONG>o</STRONG>   There is no counterpart in X/Open Curses Issue  7  for
-           this utility, unlike <STRONG>tput(1)</STRONG>.
+       <STRONG>o</STRONG>   There is no counterpart in X/Open Curses Issue 7 for this  utility,
+           unlike <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>.
 
-       The  <STRONG>-d</STRONG>  (debug) and <STRONG>-n</STRONG> (no-op) options are extensions not
+       The  <STRONG>-d</STRONG>  (debug)  and  <STRONG>-n</STRONG>  (no-op)  options  are <EM>ncurses</EM> extensions not
        provided by other implementations.
 
-       Documentation for other implementations states that  there
-       is  a limit on the number of tab stops.  While some termi-
-       nals may not accept an arbitrary number of tab stops, this
-       implementation  will  attempt  to  set tab stops up to the
-       right margin of the screen, if the given list  happens  to
-       be that long.
 
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       A <STRONG>tabs</STRONG> utility appeared in PWB/Unix  1.0  (1977).   A  reduced  version
+       shipped  in  Seventh  Edition  Unix (early 1979) and in 3BSD (later the
+       same year); it supported a "-n" option to set the first tab stop at the
+       left margin.  That option is not specified by POSIX.
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+       The  PWB/Unix  <STRONG>tabs</STRONG>  utility  returned  in  System III (1980), and used
+       built-in tables to support a  half-dozen  hardcopy  terminal  (printer)
+       types.   It  also had logic to support setting the left margin, as well
+       as a feature for copying the tab settings from a file.
+
+       Versions of the program in later releases of AT&amp;T Unix, such  as  SVr4,
+       added  support  for  the  terminal database, but retained the tables to
+       support the printers.  By this time, System V <STRONG>tput</STRONG> had incorporated the
+       tab  stop  initialization feature of BSD's <STRONG>tset</STRONG> from 1982, but employed
+       the <EM>terminfo</EM> database to do so.
+
+       The <STRONG>+m</STRONG> option was documented in the POSIX Base Specifications  Issue  5
+       (Unix98,  1997), then omitted in Issue 6 (Unix03, 2004) without express
+       motivation, though an introductory comment "and optionally adjusts  the
+       margin"   remains,   overlooked  in  the  removal.   The  <STRONG>tabs</STRONG>  utility
+       documented in Issues 6 and later has no mechanism for setting  margins.
+       The  <STRONG>+m</STRONG>  option  in <EM>ncurses</EM> <STRONG>tabs</STRONG> differs from the SVr4 feature by using
+       terminal capabilities rather than built-in tables.
+
+       POSIX  documents  no  limit  on  the  number  of  tab   stops.    Other
+       implementations impose one; the limit is 20 in PWB/Unix's <STRONG>tabs</STRONG> utility.
+       While some terminals may not accept an arbitrary number of  tab  stops,
+       <EM>ncurses</EM>  <STRONG>tabs</STRONG>  attempts  to set tab stops up to the right margin if the
+       list thereof is sufficiently long.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20170128).
+       The "Rationale" section of the Issue 6 <STRONG>tabs</STRONG> reference page details  how
+       the  committee  considered  redesigning  the  <STRONG>tabs</STRONG>  and <STRONG>tput</STRONG> utilities,
+       without settling on an improved solution.  It claims that
+
+           "no known historical version of <EM>tabs</EM>  supports  the  capability  of
+           setting arbitrary tab stops."
+
+       The   feature  described  in  subsection  "Explicit  Lists"  above  was
+       implemented in PWB/Unix, and permitted  the  setting  of  abitrary  tab
+       stops nevertheless.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
-                                                                <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
+ncurses 6.4                       2024-04-20                           <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h3-General-Options">General Options</a></li>
 <li><a href="#h3-Implicit-Lists">Implicit Lists</a></li>
 <li><a href="#h3-Explicit-Lists">Explicit Lists</a></li>
-<li><a href="#h3-Predefined-Tab-Stops">Predefined Tab-Stops</a></li>
+<li><a href="#h3-Predefined-Tab-Stops">Predefined Tab Stops</a></li>
+<li><a href="#h3-Margins">Margins</a></li>
 </ul>
 </li>
+<li><a href="#h2-FILES">FILES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>