<!--
****************************************************************************
- * Copyright 2018-2019,2020 Thomas E. Dickey *
+ * 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 *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: tabs.1,v 1.28 2020/12/19 21:50:22 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 https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>@TABS@ 1</TITLE>
+<TITLE>tabs 1 2024-04-20 ncurses 6.4 User commands</TITLE>
<link rel="author" href="mailto:bug-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
</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>
-<B><A HREF="tabs.1.html">tabs(1)</A></B> General Commands Manual <B><A HREF="tabs.1.html">tabs(1)</A></B>
+<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>
- <B>tabs</B> - set tabs on a terminal
+ <STRONG>tabs</STRONG> - set terminal tab stops
</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
- <B>tabs</B> [<I>options</I>]] <I>[tabstop-list]</I>
+ <STRONG>tabs</STRONG> [<EM>options</EM>] [<EM>tabstop-list</EM>]
</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
- The <B>tabs</B> program clears and sets tab-stops on the terminal. This uses
- the terminfo <I>clear</I><B>_</B><I>all</I><B>_</B><I>tabs</I> and <I>set</I><B>_</B><I>tab</I> capabilities. If either is
- absent, <B>tabs</B> is unable to clear/set tab-stops. The terminal should be
+ 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 <B><A HREF="clear.1.html">clear(1)</A></B>, <B>tabs</B> writes to the standard output. You can redirect
- the standard output to a file (which prevents <B>tabs</B> from actually
- changing the tabstops), and later <B>cat</B> the file to the screen, setting
+ 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.
These are hardware tabs, which cannot be queried rapidly by
tabs -8
- or use the <B>reset</B> program, since the normal initialization sequences do
+ 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>
- <B>-T</B><I>name</I>
- Tell <B>tabs</B> which terminal type to use. If this option is not
- given, <B>tabs</B> will use the <B>$TERM</B> environment variable. If that is
- not set, it will use the <I>ansi+tabs</I> entry.
+ <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.
- <B>-d</B> The debugging option shows a ruler line, followed by two data
+ <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.
- <B>-n</B> This option tells <B>tabs</B> to check the options and run any debugging
+ <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.
- <B>-V</B> reports the version of ncurses which was used in this program, and
+ <STRONG>-V</STRONG> reports the version of <EM>ncurses</EM> which was used in this program, and
exits.
- The <B>tabs</B> program processes a single list of tab stops. The last option
+ 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., "<B>-5</B>" to set tabs at the given
+ 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 "<B>-0</B>" to clear all tabs.
+ Use "<STRONG>-0</STRONG>" to clear all tabs.
- Use "<B>-8</B>" to set tabs to the standard interval.
+ Use "<STRONG>-8</STRONG>" to set tabs to the standard interval.
</PRE><H3><a name="h3-Explicit-Lists">Explicit Lists</a></H3><PRE>
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
- <B>-a</B> Assembler, IBM S/370, first format
+ <STRONG>-p</STRONG> PL/I
+ 1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61
- <B>-a2</B> Assembler, IBM S/370, second format
+ <STRONG>-s</STRONG> SNOBOL
+ 1,10,55
- <B>-c</B> COBOL, normal format
+ <STRONG>-u</STRONG> UNIVAC 1100 Assembler
+ 1,12,20,44
- <B>-c2</B> COBOL compact format
- <B>-c3</B> COBOL compact format extended
+</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.
- <B>-f</B> FORTRAN
+ <STRONG>+m</STRONG> <EM>margin</EM>
+ The effect depends on whether the terminal has the margin
+ capabilities:
- <B>-p</B> PL/I
+ <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.
- <B>-s</B> SNOBOL
+ <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.
- <B>-u</B> UNIVAC 1100 Assembler
+ 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>
- <I>IEEE</I> <I>Std</I> <I>1003.1/The</I> <I>Open</I> <I>Group</I> <I>Base</I> <I>Specifications</I> <I>Issue</I> <I>7</I>
- (POSIX.1-2008) describes a <B>tabs</B> utility. However
+ IEEE Std 1003.1/The Open Group Base Specifications Issue 7
+ (POSIX.1-2008) describes a <STRONG>tabs</STRONG> utility. However,
- <B>o</B> This standard describes a <B>+m</B> option, to set a terminal's left-
- margin. Very few of the entries in the terminal database provide
- the <B>smgl</B> (<B>set_left_margin</B>) or <B>smglp</B> (<B>set_left_margin_parm</B>)
- capability needed to support the feature.
+ <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.
- <B>o</B> There is no counterpart in X/Open Curses Issue 7 for this utility,
- unlike <B>tput(1)</B>.
+ <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 <B>-d</B> (debug) and <B>-n</B> (no-op) options are extensions not provided by
- other implementations.
+ The <STRONG>-d</STRONG> (debug) and <STRONG>-n</STRONG> (no-op) options are <EM>ncurses</EM> extensions not
+ provided by other implementations.
- A <B>tabs</B> utility appeared in PWB/Unix 1.0 (1977). There was a reduced
- version of the <B>tabs</B> utility in Unix 7th edition and in 3BSD (1979).
- The latter supported a single "-n" option (to cause the first tab stop
- to be set on the left margin). That option is not documented by POSIX.
- The PWB/Unix <B>tabs</B> utility, which was included in System III (1980),
- used built-in tables rather than the terminal database, to support a
- half-dozen terminal types. It also had built-in logic to support the
- left-margin, as well as a feature for copying the tab settings from a
- file.
+</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.
- Later versions of Unix, e.g., SVr4, added support for the terminal
- database, but kept the tables, as a fallback. In an earlier
- development effort, the tab-stop initialization provided by <B>tset</B> (1982)
- and incorporated into <B>tput</B> uses the terminal database,
+ 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.
- POSIX documents no limits on the number of tab stops. Documentation
- for other implementations states that there is a limit on the number of
- tab stops (e.g., 20 in PWB/Unix's <B>tabs</B> utility). While some terminals
- 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.
+ Versions of the program in later releases of AT&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 <I>Rationale</I> section of the POSIX documentation goes into some detail
- about the ways the committee considered redesigning the <B>tabs</B> and <B>tput</B>
- utilities, without proposing an improved solution. It comments that
+ 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.
- no known historical version of tabs supports the capability of
- setting arbitrary tab stops.
+ 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.
- However, the <I>Explicit</I> <I>Lists</I> described in this manual page were
- implemented in PWB/Unix. Those provide the capability of setting
- abitrary tab stops.
+ 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>
- <B><A HREF="infocmp.1M.html">infocmp(1M)</A></B>, <B><A HREF="tset.1.html">tset(1)</A></B>, <B><A HREF="curses.3X.html">curses(3X)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
- This describes <B>ncurses</B> version 6.2 (patch 20210612).
+</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>
- <B><A HREF="tabs.1.html">tabs(1)</A></B>
+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>