2014-02-28 19:18:07 +00:00
|
|
|
.\"***************************************************************************
|
2020-02-19 16:58:06 +00:00
|
|
|
.\" Copyright 2018-2019,2020 Thomas E. Dickey *
|
|
|
|
.\" Copyright 2008-2016,2017 Free Software Foundation, Inc. *
|
2014-02-28 19:18:07 +00:00
|
|
|
.\" *
|
|
|
|
.\" Permission is hereby granted, free of charge, to any person obtaining a *
|
|
|
|
.\" copy of this software and associated documentation files (the *
|
|
|
|
.\" "Software"), to deal in the Software without restriction, including *
|
|
|
|
.\" without limitation the rights to use, copy, modify, merge, publish, *
|
|
|
|
.\" distribute, distribute with modifications, sublicense, and/or sell *
|
|
|
|
.\" copies of the Software, and to permit persons to whom the Software is *
|
|
|
|
.\" furnished to do so, subject to the following conditions: *
|
|
|
|
.\" *
|
|
|
|
.\" The above copyright notice and this permission notice shall be included *
|
|
|
|
.\" in all copies or substantial portions of the Software. *
|
|
|
|
.\" *
|
|
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
|
|
|
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
|
|
|
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
|
|
|
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
|
|
|
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
|
|
|
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
|
|
|
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
|
|
|
.\" *
|
|
|
|
.\" Except as contained in this notice, the name(s) of the above copyright *
|
|
|
|
.\" holders shall not be used in advertising or otherwise to promote the *
|
|
|
|
.\" sale, use or other dealings in this Software without prior written *
|
|
|
|
.\" authorization. *
|
|
|
|
.\"***************************************************************************
|
|
|
|
.\"
|
2021-02-25 17:22:00 +00:00
|
|
|
.\" $Id: tabs.1,v 1.28 2020/12/19 21:50:22 tom Exp $
|
2014-02-28 19:18:07 +00:00
|
|
|
.TH @TABS@ 1 ""
|
|
|
|
.ds n 5
|
2020-02-07 08:36:41 +00:00
|
|
|
.ie \n(.g .ds `` \(lq
|
|
|
|
.el .ds `` ``
|
|
|
|
.ie \n(.g .ds '' \(rq
|
|
|
|
.el .ds '' ''
|
|
|
|
.de bP
|
|
|
|
.ie n .IP \(bu 4
|
|
|
|
.el .IP \(bu 2
|
|
|
|
..
|
|
|
|
.de NS
|
|
|
|
.ie n .sp
|
|
|
|
.el .sp .5
|
|
|
|
.ie n .in +4
|
|
|
|
.el .in +2
|
|
|
|
.nf
|
|
|
|
.ft C \" Courier
|
|
|
|
..
|
|
|
|
.de NE
|
|
|
|
.fi
|
|
|
|
.ft R
|
|
|
|
.ie n .in -4
|
|
|
|
.el .in -2
|
|
|
|
..
|
2014-02-28 19:18:07 +00:00
|
|
|
.SH NAME
|
2014-03-01 00:40:26 +00:00
|
|
|
\fB@TABS@\fR \- set tabs on a terminal
|
2014-02-28 19:18:07 +00:00
|
|
|
.SH SYNOPSIS
|
2014-03-01 00:40:26 +00:00
|
|
|
\fB@TABS@\fR [\fIoptions\fR]] \fI[tabstop-list]\fR
|
2014-02-28 19:18:07 +00:00
|
|
|
.SH DESCRIPTION
|
|
|
|
.PP
|
2014-03-01 00:40:26 +00:00
|
|
|
The \fB@TABS@\fP program clears and sets tab-stops on the terminal.
|
2014-02-28 19:18:07 +00:00
|
|
|
This uses the terminfo \fIclear_all_tabs\fP and \fIset_tab\fP capabilities.
|
2014-03-01 00:40:26 +00:00
|
|
|
If either is absent, \fB@TABS@\fP is unable to clear/set tab-stops.
|
2014-02-28 19:18:07 +00:00
|
|
|
The terminal should be configured to use hard tabs, e.g.,
|
2020-02-07 08:36:41 +00:00
|
|
|
.NS
|
2014-02-28 19:18:07 +00:00
|
|
|
stty tab0
|
2020-02-07 08:36:41 +00:00
|
|
|
.NE
|
|
|
|
.PP
|
|
|
|
Like \fB@CLEAR@\fR(1), \fB@TABS@\fR writes to the standard output.
|
|
|
|
You can redirect the standard output to a file (which prevents
|
|
|
|
\fB@TABS@\fR from actually changing the tabstops),
|
|
|
|
and later \fBcat\fP the file to the screen, setting tabstops at that point.
|
|
|
|
.PP
|
|
|
|
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
|
|
|
|
.NS
|
|
|
|
tabs -8
|
|
|
|
.NE
|
|
|
|
.PP
|
|
|
|
or use the \fB@RESET@\fP program,
|
|
|
|
since the normal initialization sequences do not ensure that tab-stops
|
|
|
|
are reset.
|
2014-02-28 19:18:07 +00:00
|
|
|
.SH OPTIONS
|
|
|
|
.SS General Options
|
|
|
|
.TP 5
|
|
|
|
.BI \-T "name"
|
2014-03-01 00:40:26 +00:00
|
|
|
Tell \fB@TABS@\fP which terminal type to use.
|
|
|
|
If this option is not given, \fB@TABS@\fP will use the \fB$TERM\fP
|
2014-02-28 19:18:07 +00:00
|
|
|
environment variable.
|
|
|
|
If that is not set, it will use the \fIansi+tabs\fP entry.
|
|
|
|
.TP 5
|
|
|
|
.B \-d
|
|
|
|
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.
|
|
|
|
.TP 5
|
|
|
|
.B \-n
|
2014-03-01 00:40:26 +00:00
|
|
|
This option tells \fB@TABS@\fP to check the options and run any debugging
|
2014-02-28 19:18:07 +00:00
|
|
|
option, but not to modify the terminal settings.
|
2014-03-01 00:40:26 +00:00
|
|
|
.TP
|
|
|
|
\fB\-V\fR
|
|
|
|
reports the version of ncurses which was used in this program, and exits.
|
2014-02-28 19:18:07 +00:00
|
|
|
.PP
|
2014-03-01 00:40:26 +00:00
|
|
|
The \fB@TABS@\fP program processes a single list of tab stops.
|
2014-02-28 19:18:07 +00:00
|
|
|
The last option to be processed which defines a list is the one that
|
|
|
|
determines the list to be processed.
|
|
|
|
.SS Implicit Lists
|
2020-02-07 08:36:41 +00:00
|
|
|
Use a single number as an option,
|
|
|
|
e.g., \*(``\fB\-5\fP\*('' 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.
|
2014-02-28 19:18:07 +00:00
|
|
|
.PP
|
2020-02-07 08:36:41 +00:00
|
|
|
Use \*(``\fB\-0\fP\*('' to clear all tabs.
|
2014-02-28 19:18:07 +00:00
|
|
|
.PP
|
2020-02-07 08:36:41 +00:00
|
|
|
Use \*(``\fB\-8\fP\*('' to set tabs to the standard interval.
|
2014-02-28 19:18:07 +00:00
|
|
|
.SS Explicit Lists
|
2020-02-07 08:36:41 +00:00
|
|
|
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,
|
|
|
|
.NS
|
2014-02-28 19:18:07 +00:00
|
|
|
tabs 1,6,11,16,21
|
|
|
|
.br
|
|
|
|
tabs 1 6 11 16 21
|
2020-02-07 08:36:41 +00:00
|
|
|
.NE
|
|
|
|
.PP
|
|
|
|
Use a \*(``+\*('' to treat a number
|
|
|
|
as an increment relative to the previous value,
|
2014-02-28 19:18:07 +00:00
|
|
|
e.g.,
|
2020-02-07 08:36:41 +00:00
|
|
|
.NS
|
2014-02-28 19:18:07 +00:00
|
|
|
tabs 1,+5,+5,+5,+5
|
2020-02-07 08:36:41 +00:00
|
|
|
.NE
|
|
|
|
.PP
|
2014-02-28 19:18:07 +00:00
|
|
|
which is equivalent to the 1,6,11,16,21 example.
|
|
|
|
.SS Predefined Tab-Stops
|
|
|
|
X/Open defines several predefined lists of tab stops.
|
|
|
|
.TP 5
|
|
|
|
.B \-a
|
|
|
|
Assembler, IBM S/370, first format
|
|
|
|
.TP 5
|
|
|
|
.B \-a2
|
|
|
|
Assembler, IBM S/370, second format
|
|
|
|
.TP 5
|
|
|
|
.B \-c
|
|
|
|
COBOL, normal format
|
|
|
|
.TP 5
|
|
|
|
.B \-c2
|
|
|
|
COBOL compact format
|
|
|
|
.TP 5
|
|
|
|
.B \-c3
|
|
|
|
COBOL compact format extended
|
|
|
|
.TP 5
|
|
|
|
.B \-f
|
|
|
|
FORTRAN
|
|
|
|
.TP 5
|
|
|
|
.B \-p
|
|
|
|
PL/I
|
|
|
|
.TP 5
|
|
|
|
.B \-s
|
|
|
|
SNOBOL
|
|
|
|
.TP 5
|
|
|
|
.B \-u
|
|
|
|
UNIVAC 1100 Assembler
|
|
|
|
.SH PORTABILITY
|
|
|
|
.PP
|
2020-02-07 08:36:41 +00:00
|
|
|
\fIIEEE Std 1003.1/The Open Group Base Specifications Issue 7\fP (POSIX.1-2008)
|
|
|
|
describes a \fBtabs\fP utility.
|
|
|
|
However
|
|
|
|
.bP
|
|
|
|
This standard describes a \fB+m\fP option, to set a terminal's left-margin.
|
|
|
|
Very few of the entries in the terminal database provide the
|
|
|
|
\fBsmgl\fP (\fBset_left_margin\fP) or
|
|
|
|
\fBsmglp\fP (\fBset_left_margin_parm\fP)
|
|
|
|
capability needed to support the feature.
|
|
|
|
.bP
|
|
|
|
There is no counterpart in X/Open Curses Issue 7 for this utility,
|
|
|
|
unlike \fB@TPUT@(1)\fP.
|
2014-02-28 19:18:07 +00:00
|
|
|
.PP
|
|
|
|
The \fB\-d\fP (debug) and \fB\-n\fP (no-op) options are extensions not provided
|
|
|
|
by other implementations.
|
|
|
|
.PP
|
2020-02-07 08:36:41 +00:00
|
|
|
A \fBtabs\fP utility appeared in PWB/Unix 1.0 (1977).
|
|
|
|
There was a reduced version of the \fBtabs\fP 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.
|
|
|
|
.PP
|
|
|
|
The PWB/Unix \fBtabs\fP 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.
|
|
|
|
.PP
|
|
|
|
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 \fBtset\fP (1982)
|
|
|
|
and incorporated into \fBtput\fP uses the terminal database,
|
|
|
|
.PP
|
|
|
|
POSIX documents no limits on the number of tab stops.
|
2014-02-28 19:18:07 +00:00
|
|
|
Documentation for other implementations states that there is a limit on the
|
2020-02-07 08:36:41 +00:00
|
|
|
number of tab stops
|
|
|
|
(e.g., 20 in PWB/Unix's \fBtabs\fP utility).
|
|
|
|
While some terminals may not accept an arbitrary number
|
2014-02-28 19:18:07 +00:00
|
|
|
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.
|
2020-02-07 08:36:41 +00:00
|
|
|
.PP
|
|
|
|
The \fIRationale\fP section of the POSIX documentation goes into some
|
|
|
|
detail about the ways the committee considered redesigning the
|
|
|
|
\fBtabs\fP and \fBtput\fP utilities,
|
|
|
|
without proposing an improved solution.
|
|
|
|
It comments that
|
|
|
|
.RS 5
|
|
|
|
.PP
|
|
|
|
no known historical version of tabs supports the capability of setting
|
|
|
|
arbitrary tab stops.
|
|
|
|
.RE
|
|
|
|
.PP
|
|
|
|
However, the \fIExplicit Lists\fP described in this manual page
|
|
|
|
were implemented in PWB/Unix.
|
|
|
|
Those provide the capability of setting abitrary tab stops.
|
2014-02-28 19:18:07 +00:00
|
|
|
.SH SEE ALSO
|
|
|
|
\fB@INFOCMP@\fR(1M),
|
2021-02-25 17:22:00 +00:00
|
|
|
\fB@TSET@\fR(1),
|
2014-02-28 19:18:07 +00:00
|
|
|
\fBcurses\fR(3X),
|
|
|
|
\fBterminfo\fR(\*n).
|
|
|
|
.PP
|
|
|
|
This describes \fBncurses\fR
|
|
|
|
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
|