Tab key
From Wikipedia, the free encyclopedia
Tab key (abbreviation of tabulator key) on a keyboard is used to advance the cursor to the next tab stop.
Contents |
[edit] Origin
When a typist wanted to type a table, there was a lot of time-consuming and repetitive use of the space bar and backspace key. To simplify this, a bar was placed in the mechanism with a moveable lever for every position across the page. Initially these were set by hand but later a tab set and tab clear keys were added. When the tab key was depressed the carriage advanced to the next tab stop. These were set to correspond to the particular column locations of the table, hence tab, being worked on. The tab mechanism also came into its own as a rapid and consistent way of uniformly indenting the first line of each paragraph.
[edit] ASCII and EBCDIC
Several tab characters are included as ASCII control characters, used for text alignment. The most known and common tab is a horizontal tab, which in ASCII has the decimal character code of 9. A vertical tab also exists and has ASCII decimal character code 11. The EBCDIC code for HT is 5. The VT is 11 or hex 0B, the same as ASCII. The horizontal tab is usually generated by the tab key on a standard keyboard.
Originally printers used mechanical tab stops to indicate where the tabs went. This was done horizontally with movable metal prongs in a row and vertically with a loop of mylar or other tape the length of a page with holes punched in it to indicate the tab stops. Initially these were manually set to match the preprinted forms the printer was going to print. The intention was to have the machine be programmed with other control characters to set and clear the stops but it is unclear if any popular printers implemented this. Instead it was rather quickly replaced with fixed tab stops, at every multiple of 8 characters horizontally and every 6 lines vertically, so they simply became a form of data compression, since a printing program could easily add the necessary spaces to move to any position wanted on a form. The vertical size was chosen to be 1 inch. It is unclear why the 8-character horizontal size was chosen, as 5 characters, half inch in a typical printer at that time, was much more popular at that time as a paragraph indentation. It may have been chosen to match early Fortran conventions for where the statement text started after the line number and continuation character. Or it may have been chosen as the smallest size that would fit numbers typically printed in a table.
ISO 8859 also includes the codes 136 Horizontal Tabulation Set, 137 Horizontal Tabulation with Justification and 138 Vertical Tabulation Set.
Tabs are almost always rendered as a form of whitespace larger than a single space, while some text editors mark tabs with special graphics to facilitate distinguishing tabs and whitespaces. In word processor applications, the tab key typically moves the cursor to the next tab stop. In most other graphical applications, the tab key will shift the focus to the next control or widget.
A UNIX program, expand
expands a tab to a number of spaces and unexpand
does the opposite.
Text divided into fields delimited by tabs can be pasted into a word processor and formatted into a table with a single command.
[edit] Tabs in HTML
HTML represents the horizontal tab as but as with all whitespace characters this does not allow actual insertion of tabs into the page except inside <pre></pre> tags.
Here is an example showing the use of with <pre></pre> tags. If you write in HTML:
<pre> These 2 lines are tabbed: 2005 	 This line uses a tab space. 	 This line also uses a tab space. This line does not use a tab space. </pre>
The result would be something like this:
These 2 lines are tabbed: 2005 This line uses a tab space. This line also uses a tab space. This line does not use a Tab space.
The vertical tab is � but is not allowed in SGML, including HTML and XML 1.0.
The issue is of concern in the use of CSS, which asserts that in an element where white space is to be preserved:
... 2. All tabs (U+0009) are rendered as a horizontal shift that lines up the start edge of the next glyph with the next tab stop. Tab stops occur at points that are mutiples of 8 times the width of a space (U+0020) rendered in the block's font from the block's starting content edge.
[edit] Tabs in programming
In computer programming, the use of tabs for code formatting and indentation is an ongoing debate. The vast majority of code is written as plain ASCII, lacking the extra formatting information more elaborate markups and proprietary file formats provide. Some programmers consider the use of 8 spaces per tab to be excessive, such as when viewing very deeply nested and therefore very deeply indented, lines of code. Programmers who favor wide tabs often point out that deeply indented code is a bad thing in itself.[1][2]
Programmer's editors usually default to having the tab key generate hard tabs, that is actual HT characters but some editors expand them to space (SP) characters instead, often referred to as soft tabs. Most programmer's editors can be configured to perform either.
There are many arguments for and against using hard tabs in code. The most incompatibility and conversion issues ensue when the tab key generates HT characters and the editor is configured for tab stops spaced anything but the de facto standard, which for Unix, Unix-derived systems and older systems is every 8 characters and for Windows programming, every 4 characters. Interesting possibilities include 2 and even 3. When deviating from the system's de facto standard, then inevitably some lines will be formatted with spaces, others with tabs or even both. As soon as the code ends up on someone else's screen it will look different and usually jumbled and untidy if their editor's tabstop width is set differently.
One early benefit of tabs, ie: compression is now considered less relevant as desktop storage has become cheaper and sophisticated compression algorithms can provide much greater benefits, albeit at the cost of greater complexity.
Linus Torvalds has remarked that "Tabs are 8 characters, and thus indentations are also 8 characters. There are heretic movements that try to make indentations 4 (or even 2!) characters deep, and that is akin to trying to define the value of PI to be 3."[3]
[edit] References
- ^ Arrow Anti Pattern
- ^ Coding Horror: Flattening Arrow Code
- ^ Documentation/CodingStyle of Linux
[edit] External links
- Tabs versus Spaces: An Eternal Holy War by Jamie Zawinski
- Why I prefer no tabs in source code by Adam Spiers
- Why I love having tabs in source code
- Elastic tabstops - the solution to the tabs-versus-spaces issue
Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | PrtSc | ScrLk | Pause | |||||||||
Ins | Home | PgUp | NumLk | / | * | - | ||||||||||||||||||
Del | End | PgDn | 7 | 8 | 9 | + | ||||||||||||||||||
4 | 5 | 6 | ||||||||||||||||||||||
↑ | 1 | 2 | 3 | Ent | ||||||||||||||||||||
← | ↓ | → | 0 | . |
|