SciTECO

SciTECO is an interactive, visual clone of the venerable TECO editor, written using the Scintilla toolkit. A visual editor is one that allows changes to a text document to be seen immediately; another example of a visual text editor is Vim. Although TECO is a direct ancestor to Emacs (which, in its original form, was a set of editor macros for TECO), SciTECO arguably shares more in common with Vim.
Description
The basic approach to text editing in SciTECO differs radically from most editors, although it also shares surprising similarities, mostly to Vim.
Most modern console text editors use keyboard commands to modify text in a visual manner; the text being edited is displayed on the screen at the same time as the commands are being issued. The exceptions to this rule are so-called line editors intended to run in batch files or shell scripts, such as ed, edlin, ex, and sed. To all appearances, SciTECO conforms to this paradigm as well; in fact, this is its chief difference from standard TECO.
SciTECO and standard TECO both differ from Emacs in that they are modal editors: in Emacs and the majority of editors in general, entering text at the keyboard will input it at the cursor location, while in SciTECO, there are distinct command and insert modes (two other modal editors are standard TECO and Vim). The keystrokes to enter and exit insert mode are common to all three editors: typing the i key enters insert mode, while Esc exits it. Standard TECO is not a visual editor, but Vim is; the user experience, therefore, is arguably more similar to Vim than to any other editor.
Under the hood, however, SciTECO and Vim differ dramatically. SciTECO is not only an editor but also an interpreted programming language for text manipulation. The user never edits the file directly in SciTECO; instead, he edits a program (called a macro) using a small selection of keyboard commands (called immediate editing commands). It is the macro that edits text for the user; unlike in standard TECO, it is executed immediately, as far as possible. Each character in a SciTECO macro is an imperative command, dispatched to its corresponding routine. That routine may read further characters from the program stream (giving the effect of string arguments), change the position of the "program counter" (giving the effect of control structures), or push values onto a value stack (giving the effect of nested parentheses). Since there is no syntax and no parsing, however, there is nothing to prevent operations like jumping into the middle of a comment.
In its technical underpinnings, therefore, editing text with SciTECO is more like editing using a REPL with Python or Forth. Because they are general purpose programming languages, Python or Forth commands are grossly unsuited to the job and might be longer than the text to be edited. Because SciTECO is first and foremost an editor, its command language uses very short commands of one or (at most) two characters; it is so full-featured that every character on the keyboard, with the exception of space, is a command.
Owing to these attributes, SciTECO necessarily has a built-in undo feature; by backspacing over the command string, the commands of the macro are undone, one by one.
Features
All the features of a modern text editor are supported in SciTECO; this is perhaps unsurprising, as TECO historically introduced the very concept of a text-editor and the features it should comprise. Not only are there commands to insert and delete text as on a typewriter, there are commands to move the cursor (called the insertion point) back and forward by character, word, line, and page, to delete text by character, word, line, and page, and to delete from insertion point to the beginning or end of a specific string. SciTECO also includes search-and-replace capabilities far more advanced than do most Windows editors.
Compatibility
SciTECO is compatible with Microsoft Windows and Linux, and can be downloaded in binary form for those platforms. It is also compatible with OS X but no binary package is available as yet.
 
< Prev   Next >