NAME

mined - a text editor

SYNTAX

mined [ -options ] [ +linenumber ] [ +/search ] [ filenames ... ]

DESCRIPTION

Mined is a text editor with

This manual contains the main topics

Online help is also available.


Command line options

Examples

mined x
- edits the file x
mined x y z
- edits files x, y, and z
cmd | mined
- edits the output of "cmd", file name for saving can be given later
mined x > y
- takes the contents of file x and edits it for writing into y
mined | mail nn
- edits a text to be mailed
cmd1 | mined | cmd2
- modifies text in between a pipe from program cmd1 (output) to cmd2 (as input)

Startup options

+number
Mined positions to the given line number.
+/expr
Mined initially searches for the given search expression.
-v
Mined starts in view only mode. The text cannot be modified.
--
Restricted mode (tool mode): no other files can be edited or otherwise affected.
+x
Makes a new file executable (Unix).

Line end handling (transparent and transforming)

-r
Ignore CR characters (so strip them at line ends). I.e., read MSDOS text on Unix machines.
-R
Convert single CR (Mac newline) into LF (Unix newline), i.e., read MacIntosh text on MSDOS or Unix machines, transforming the line-ends.
+R
Accept CR (Mac) newlines; don't transform them, use specific indication for their display.
-uu
Handle special Unicode line-ends (line separator and paragraph separator).

Character set and terminal mode handling

-u (character set)
Interprets edited text as UTF-8, disables UTF and CJK auto detection.
Identical with -EU, ignored if the terminal is configured or detected to be in CJK mode.
-l (character set)
Interprets edited text as Latin-1, disables UTF and CJK auto detection. (Used to be +u which is still valid for compatibility.)
Identical with -EL, ignored if the terminal is configured or detected to be in CJK mode.
-U (terminal mode)
Toggles UTF-8 screen handling assumption, i.e. selects UTF-8 screen handling unless UTF-8 keyboard input is already selected (by another -U option or environment setting). In the latter case, -U deselects UTF-8 terminal operation. This option should normally not be used as the mode should be configured in the environment (see Locale configuration).
+U (terminal mode)
Selects UTF-8 screen handling. Note that none of the options -U or +U needs to be used if the environment is correctly configured to indicate UTF-8 as it should (see Unicode handling / Environment).
Also, mined performs auto-detection of UTF-8 terminal encoding and UTF-8 terminal features (different width data versions, handling of double-width, combining and joining characters), so even if the environment is not correctly configured, mined should work now without this explicit terminal mode parameter.
+UU (terminal mode)
Selects bidirectional terminal support. This mode implies UTF-8 and also assumes that Arabic ligature joining (of LAM/ALEF combinations) is applied; it will be handled by mined accordingly.
-uu (character handling)
Handle special Unicode line-ends (line separator and paragraph separator).
-b (character handling)
Toggle "poor man's bidi" mode: input support for right-to-left scripts, based on Unicode script ranges. (Disabled by default.)
-c (character handling)
Selects separated display mode for combined characters (separating base character and combining characters). This mode can also be toggled from the eXtra menu or by clicking on the Combining flag (next to the character encoding flag) in the flags area.
-cc (terminal mode)
Assumes that the UTF-8 terminal does not support combining characters (so that they are always displayed separately.) By default, if UTF-8 output is selected, mined assumes that combining characters also work.
+c (terminal mode)
Selects combining mode if UTF-8 terminal operation is also selected. This is selected by default, but can be deselected by an environment variable and then be reselected by this option.
-C (character set and terminal mode)
Enables use of CJK 16 bit encoding (Chinese/Japanese/Korean) for Han character set. If UTF-8 terminal mode is selected at the same time (by auto-detection, environment or option), this will enable handling of CJK character encoding in a UTF-8 terminal. Otherwise, mined will assume that it operates in a CJK terminal (e.g. hanterm or cxterm). For details, see CJK support.
Mined performs auto-detection of certain CJK terminal features (handling of non-EUC code points, GB18030, 3-byte and 4-byte encodings).
-EX (character set)
Where X is one of B/G/C/J/S/K/H: Selects one of the supported CJK character encodings for CJK mode and disables auto-detection of CJK encodings. Unless -C is also selected, Latin/UTF-8 auto detection is still active and may override the encoding selected here. "X" is a one-letter tag of the encoding; for supported encodings, see the Mode indication display listing. For details, see CJK support. If CJK terminal mode is already configured by an appropriate environment variable setting, -EX does not set the character set assumption.
-EX (character set)
Where X is one of g/c/j: Selects one of the CJK character encodings like G/C/J and if running in a CJK terminal this tells mined to assume that the terminal cannot display GB18030 4-byte encodings, CNS 4-byte encodings, EUC-JP 3-byte encodings, respectively.
-EX (character set)
Where X is one of L/U/V: Selects one of the character encodings Latin-1/UTF-8/VISCII. This is ignored if the terminal is configured or detected to be in CJK mode.
-KX (input method handling)
Configure the space key to perform a function in keyboard mapping multiple choice selection menus ("CJK input method pick lists"), where X is one of: 'n' to navigate to the next choice (like cursor right), 'r' to navigate to the next row (like cursor down), 's' to select the current choice (like Return).
-G (terminal mode)
Toggles display of a subset of the control characters as block graphics (disabled by default).
+G (terminal mode)
Enforces use of block graphics for display of menu borders. May be used if the "alternative character set" capability is not configured in your system but your terminal does have the capability. (Similar but not identical to -Qv.)

Editing behaviour

-w
Recognise fewer places as word boundaries for word skip and delete commands.
-a
Append mode: Append to text buffer or external file for copy/delete commands instead of replacing it.
+j
Set justification level 1 (or increment level previously set by environment variable to 1 or 2): Level 1 initially enables automatic word wrap at line end when typing over right margin. Can be changed by clicking on the j/J flag.
+jj
Set justification level 2: Level 2 initially enables automatic word wrap at line end when typing within paragraph; buggy. Can be changed by clicking on the j/J flag.
-j
Set justification level 1 or 2 (other than previously set). Can be changed by clicking on the j/J flag.
-T
When moving vertically over a TAB character from a line position which would have been inside the TAB column range, the default behaviour is to position on the left end of the TAB. This option changes that to position right of the TAB.

Further mode selection, interface and display behaviour

-4
Set TAB size to 4 rather than 8. The effective TAB size can also be toggled while editing with the ESC T command.
-8
Set TAB size to 8. (May be used on command line to override TAB size being set to 4 be MINED environment variable.) The effective TAB size can also be toggled while editing with the ESC T command.
-LN
(N is a number) Define mouse wheel movement to scroll by N lines. Control-mouse-wheel always scrolls by 1 line. Shift-mouse-wheel scrolls by 1 page.
-e
Select emacs mode. This assigns functions to control keys, Meta-keys (ESC commands) and C-X commands as defined by the emacs editor. Also the emacs paste buffer ring and cut/paste behaviour is enabled.
+V
Enable emacs-style paste buffer functions for "delete word" and "delete to end of line" commands (^T, ^K), and place the cursor behind the pasted regions after buffer insertion. (May become the default in a future version, disabled by -V.)
-W
Select WordStar mode. This configures WordStar command key layout and enables many functions of the ^K, ^O, and ^Q menus.
-B
Backspace deletes right, Delete deletes left. But see also "Automatic backspace mode adaptation" below.
-k
Assign the more usual functions "goto line beginning", "goto line end" and "delete character" to the Home, End and Delete keys of the right keypad. The (assumedly more useful) mined default is to assign the frequently used paste buffer functions (mark, copy, cut) to these keys. In any case, shifted keys (shift-Home etc) will invoke the according paste buffer functions and control-Home etc. the more widespread functions to these keys, provided your terminal supports it (see Keypad configuration for further hints).
-QX
Select menu border style, where X is one of s: simple border, r: rounded corners, f: fat border, d: double border, a: ASCII border (can be combined with another option -Qs or -Qr), v: VT100 alternate character set graphics border, @: reverse blank border. Mined sets an appropriate default based on its assumptions of the terminal capabilities.
-*
Disable mouse support.
-m (default)
ESC ESC proceeds to the next file (after asking to save if appropriate) and exits after the last file.
+m
ESC ESC exits mined (after asking to save if appropriate).
-M
Disables mouse control and pull-down and pop-up menus.
-oN
Select scrollbar display mode. N=0 disables the scrollbar (may speed up editing on slow remote lines), N=1 enables cell-grained scrollbar display, N=2 (default) enables finer-grained scrollbar display on a UTF-8 terminal. For backwards compatibility, -o without a subsequent digit toggles scrollbar.
-p
Enables different display of line ends and paragraph ends, distinguishing them with different symbols.
-t< tab >
Sets the character to be used for visible TAB character indication.
-X
Disables display of the filename in the window title bar.
-s
Stay with cursor in top line after page down or bottom line after page up instead of center line.
-S
Use scrolling for page up/down.
-dN
Apply delay between lines of page output to achieve visually effective display build-up which may help to quickly focus on the new cursor position (the screen output is displayed starting from the cursor position, proceeding to the screen edges).
If N lies between '0' and '9', the respective number of milliseconds is applied between display of two lines. If N='0', still an output flush is performed. If N='-', no delay at all is applied though still the order of display output is from cursor position to edges.
Default: '-'; configuration is currently disabled in the Unix version as 'usleep' doesn't seem to be very portable.
-P
Enables provisions for proportional display fonts. (Not really tested as there doesn't seem to exist a terminal emulator that handles proportional fonts and cursor positioning correctly.)

These options are also looked for in the environment variable MINED.


Editing text with mined

Mined is always in insert mode. Commands are single control characters, double key commands starting with ESCAPE, and a collection of function keys (for various types of keyboards and terminals). As a specialty, note the prefixing 'HOP KEY' which amplifies the effect of certain commands "just as you would expect"; this provides for more command flexibility without having to remember too many keys. It is described in a separate section below.

Key layout

Control key layout for basic movement functions is topographic on the left-hand side of the keyboard (an idea originating from early editors, when keyboards didn't have cursor keypads). (Although using a cursor block is more comfortable, a simple set of control-key assignments is useful as a fallback on terminals or remote connections with reduced functionality.)

The right-hand cursor block of typical keyboards is assigned the most important movement and paste buffer functions as follows:

                        +------+------+------+
                        | (7)  | (8)  | (9)  |
                        | Mark |  ^   | PgUp |
                        +------+------+------+
                        | (4)  | (5)  | (6)  |
                        | <-   | HOP  |  ->  |
                        +------+------+------+
                        | (1)  | (2)  | (3)  |
                        | Copy |  v   | PgDn |
                        +------+------+------+
                        | (0)         | (,)  |
                        | Paste       | Cut  |
                        +------+------+------+

Note that the mined keypad function assignment as shown here deviates from the more usual assignment of Home/End to "move to beginning/end of line" and Del to "delete character". This is deliberately designed to provide more useful functions to easily available keys, while e.g. line movement can also easily be achieved with HOP cursor-left or HOP cursor-right, respectively, and character deletion can still be done with the Del key on the smaller keypad. This is considered much more useful than the "standard assignment" although now and then a user is irritated by it.
There is an option -k to switch to the "standard assignment". Also the respective keys pressed together with the control key invoke the "standard functions". In -k mode, the paste buffer functions can be invoked by pressing these keys together with the shift key. This behaviour depends on proper keyboard configuration, see Keypad configuration for details.

The HOP function

This function, triggered by any of the HOP keys, amplifies (or modifies) functions as listed below. To achieve the combined function, first press any key that is assigned the HOP function, then any key assigned the second function:
HOP - char left move cursor to beginning of current line
HOP - char right move cursor to end of current line
HOP - line up move cursor to top of screen
HOP - line down move cursor to bottom of screen
HOP - scroll up scroll half a screen up
HOP - scroll down scroll half a screen down
HOP - page up move to beginning of file
HOP - page down move to end of file
HOP - word left move cursor to previous ";" or "."
HOP - word right move cursor to next ";" or "."
HOP - delete tail of line/lineend delete whole line
HOP - delete whole line delete tail of line
HOP - delete previous character delete beginning of line
HOP - set mark go to mark
HOP - search search for current identifier
HOP - search next repeat previous (last but one) search
HOP - copy/cut copy or cut, but append to buffer
HOP - save buffer save buffer, but append to file
HOP - paste buffer paste "inter-window buffer", which is the last saved buffer by any invocation of mined on the same machine by the same user.
HOP - edit next file edit last file
HOP - edit previous file edit first file
HOP - exit current file exit mined
HOP - suspend suspend without writing file
HOP - show status line toggle permanent status line
HOP - enter HTML tag (alternate opening/closing) embed copy area in HTML tags
While a pull-down or pop-up menu is opened, any HOP key or the blank key or the middle mouse button toggles the HOP amplifier for a function subsequently invoked in the menu; the menu redisplays with function names changed where applicable.

Character-oriented navigation and editing

From the traditional restriction of Unix tools to the line as a unit of operation, other editors have derived a line-oriented movement and insertion paradigm which is a nuisance for anyone who wants an editor with decently intuitive operation.
Mined handles the end-of-line character like any ordinary character during movement and editing operations. Also search and replace strings can contain line-ends.

Mouse control and menus

All versions of mined (Unix, DOS/Windows) support mouse operation.
Mouse control operates on pull-down and pop-up menus, flags, the text area, the bottom line, and the scroll bar, in order to provide the most useful functions and menu-driven command selection at hand.

Summary of mouse functions:
    In text area:
    • left click
      moves the text cursor to the mouse position
    • left click-drag-release
      selects a text area and copies it to the paste buffer
    • middle click
      display the text status line
    • right click
      pops up the quick menu
    On scroll-bar column:
    • left click
      moves one page down
    • middle click
      moves to text position corresponding to cursor
    • right click
      move one page up
    On bottom line (status line):
    • left click
      moves one page down
    • middle click
      displays the text status line
    • right click
      move one page up
    On menu header (in menu area of upper line):
    • any click
      pulls down menu
    On flag indication (in flag area of upper line):
    • any click
      toggles flag

Configuration hint: To enable mouse operation in a Windows DOS box, deactivate "QuickEdit mode" in the properties menu.

Menus

Mined provides three kinds of menus, all can be opened with either mouse clicks or commands. The menus offer the most important editing functions (apart from simple movement).
The HOP flag can be toggled while a menu is open with any of the HOP key, ^G, Blank, or the middle mouse button. When a pull-down menu is opened with the middle mouse button, the HOP variation is initially triggered, offering the HOP versions of the menu's items.
The three menu groups are used as follows:
  • The pull-down menus can be opened with the mouse or from the keyboard (Alt-f or ESC f for the file menu etc., using the capital letter from the menu title as a small letter).
  • The flags menus are opened by clicking the right mouse button on one of the flags in the flags area (right part of top screen line). They offer a choice of the available settings and thus allow to select among them in a more intuitive way than by just toggling the flag. (The Keyboard Mapping menu or the Smart Quotes menu can also be opened with ESC K or Alt-K, or ESC Q or Alt-Q, respectively.)
  • The pop-up menu is placed above the text area and can be opened with a right-click or Alt-Space (ESC Space).
When a menu is open, the cursor-left or cursor-right keys cycle through the pull-down and flags menus.

There are three methods to navigate menus:
  • With the keyboard: open menu as described above, navigate with cursor keys, activate with RETURN key.
  • With mouse clicks: open menu with click (and release) mouse button, switch to other menu with another click, click on item to activate it.
  • With mouse dragging: open menu with mouse button (left or right), browse menus and items with button held down, activate selected item with releasing mouse button.

Configuration hint: On Unix, in order to make Alt work as a modifier, set the xterm resource metaSendsEscape to true as suggested in the example file Xdefaults.mined. (With older versions of xterm, setting eightBitInput to false may be required instead which doesn't actually disable 8 bit input.)

Multiple paste buffers

Since mined 2000.8, emacs-style multiple paste buffers are provided that are organised as a buffer ring. Every buffer cut or copy operation (that places the text between the marked and the current position to the buffer) creates a new buffer and stacks it to the list of buffers. The commands delete-end-of-line (^K), delete-word (^T) and delete-end-of-sentence (currently emacs mode only) append to the top buffer in emacs mode or if mined was started with the +V option.
To paste a non-top-most buffer, paste the most recent buffer first as usual, then use the buffer-ring command (alt-Insert-key or control-F4, or M-y in emacs mode) to exchange the pasted text with the previous buffer. This can be repeated, going down the stack of buffers, and at its bottom, starting over from the top again.

Text position markers

A default marker for quick use and additional 10 numbered text markers are available. Marker 0 has a special function: 1. it is set when opening a file at the memorized position, 2. whenever a new current marker is set, the previous one is pushed to marker 0.
Furthermore, an implicit position stack remembers the text positions whenever a command moves the position by a far distance; commands can go back and forward along this stack.

Tags file support

The ESC t command moves to the definition of an identifier (on which the cursor should be placed) using the tags file (generated by the ctags command). HOP ESC t prompts for an identifier. (Also available from search or popup menu.) If a new file is opened for this purpose, the current file is saved automatically.
Like with some commands, ESC t places the current position on the position marker stack before going to the location of the identifier definition. The command ESC Return (Alt-Ret) can move back to that position, even if edited files were changed with the command.

Data security

Edited text

Every care has been taken to prevent loss of the edited text in case of save errors or accidental quit commands etc. If mined really needs to terminate in the case of an unrecoverable error (which has not occurred to me in a recent released version) or due to an external signal, it will try to write the edited text into a panic file in the /usr/tmp or /tmp directory. So only if the temporary area happens to be full, you would be out of luck.

Files

Also, if any command is issued to write to a file not previously read in (after change of file name or directory, through copy command) mined prompts for confirmation.

Pipe output

In the "write to standard output" mode (i.e. when invoked within a pipe), only one "file save" operation can be performed writing to standard output. If more than one such operations are issued (e.g. using the ESC w / F2 , F3, or suspend command) only the first one will write the text buffer to standard output; any subsequent one is treated as usual (with empty file name).

Line end modes and binary-transparent editing

Mined is binary transparent. It can handle all types of line-ends (Unix, DOS, optionally Mac and Unicode separators) simultaneously in the same editing session. They are indicated by different visible line-end indications. Files without trailing line-end can be edited and created (using the delete character right function on the last line end). Null characters are handled as virtual line-ends. Lines too long for internal handling are split transparently (with a "none" virtual line-end).
Unicode mode: Illegal UTF-8 sequences are maintained transparently. Files with mixed UTF-8 / 8-Bit sections can be edited comfortably.
Input: To enter a NUL character, either enter it literally (if your keyboard supports it) or enter ^V # 0.

Memory of file position and justification parameters

If the current directory (where mined is started from) contains a file named @mined.mar , file position memory is enabled. The current cursor position is stored with every file save command (even if no write is performed when the text has not been edited).
When editing that file again, mined will automatically move to that position (and set text marker 0 to it). (The association of the position is not with the file itself but with its relative name from the current directory.) If the marker file does not yet exist, its creation can be enforced by prefixing any file writing command with the HOP function.

In addition to the current position, also the paragraph justification margins (wrap-around margins) are remembered until the next invocation, but only if justification mode is switched on.

Page length

The command ESC P sets the number of lines that mined assumes to be on a page. So the status line can contain the page number to make finding the current position in a print-out easy. Also the Goto Line/% command (^G etc.) accepts a final 'p' or 'P' in which cases it positions to the top of the given page. This information will be associated and stored with the file name if file position storing is active (i.e. if the file @mined.mar exists in the current directory).

File names

When entering file names, the leading ~/ notation to refer to one's home directory is accepted.


Overview: input support features

Character input

Mined provides several methods to support input of special characters that may not be easily available on the keyboard.

Structured input

Special features


Special editing features

Line justification / word wrap

Manual paragraph line/word wrap is invoked with the justify command (ESC j or ESC J); it justifies the current paragraph (wraps its lines/words) according to the effective margins and paragraph termination mode.
Clever justification: With ESC j, mined automatically determines left margins depending on the current paragraph and line contents. Heuristic detection of numbered items will trigger automatic indentation.
Normal justification: With ESC J, mined justifies strictly according to the margin values currently configured.
See commands listing below "ESC j" for margin setting commands.

Paragraph termination modes: Two different definitions of paragraph end are available.
  • The primary mode is to add a space at the end of each line when the paragraph continues and to end the line without space where the paragraph ends. This seems an intuitive way and as a big advantage over other approaches, it is transparent with respect to visual formatting, i.e. no text property is required that would affect visual layout of the text.
    Note: Additional visual support of paragraph end detection is available with the mined option -p that distinguishes paragraph/line end display.
  • The other word-wrap mode is to add an empty (blank-only) line after each paragraph. Obviously this imposes more additional requirements on text formatting discipline and reduces freedom of text layout.
The mode in effect is indicated in the mode indication display; see description there.

Auto indentation

By default, mined acts in auto-indent mode: When you enter a newline, the following line will be filled with the same prefix of white space characters (blank or tab) as the current one. This option can be toggled from the eXtra menu. A new line without auto indentation can be entered with the ^O command.

Auto indentation is automatically suppressed if text is entered very fast (by heuristic detection of input speed) in order to allow unmodified copy and paste using terminal mouse functions.

A pair of parentheses with matched indentation can be entered by prefixing a parenthesis character with HOP. For example, HOP "{" would enter a pair of "{" "}", both auto-indented on their respective new line. Other pairs are "(" ")", "[" "]", "<" ">".
HOP "/" enters an indented Javadoc comment frame.

Back Tab

A Backspace from a position that is only preceded by white space on the line and on the line above will revert the input position to the previous matching indentation level.

Search and replace multiple lines

Mined has overcome the typical Unix tool limitation of line orientation in search operations. Search and replacement patterns can contain embedded newlines. Enter a linefeed character in the search string with ^V^J or \n. (In some cases there are still display problems; then update the screen with the ESC "." command.)

Restricted mode (tool mode)

Restricted mode is activated with
		mined -- [ filenames ... ]
In restricted mode, only the file opened when mined was started can be edited, no commands changing file name reference, involving other files (copy/paste), or escaping to a shell command will be allowed. (When mined is invoked without filename argument, a file name will be prompted for despite restricted mode, however.)


Special user interface features

Mode indication display

The right side of the top menu bar also contains a few single-letter indication fields for certain modes and command modifiers. These mode flags can be toggled with mouse clicks. Also the flags open a flag menu when clicked with the right mouse button.

Scrollbar

By default, mined displays a scrollbar at the right side. It may be used for position indication within the text and for relative or absolute positioning with the three mouse buttons.
In a UTF-8 terminal, mined uses Unicode character cell vertical eighths characters U+2581..U+2587 for a fine-grained scrollbar display. If your Unicode font doesn't include those block characters, you may switch to the cell-grained scrollbar with the -o1 option.

Position stack

On commands that jump away from the current position (HOP Mark, File Begin/End, Search, Search Identifier definition, Goto Line/%, Goto Next/Previous File), the current position is remembered in a position stack. The command ESC Return goes backward, HOP ESC Return forward in this "stack", even if this means switching the file being edited.

Diacritic input support

Some function keys are defined as accent prefix keys that combine with the next character typed in to an accented (diacritic) character.

Diacritic prefix function keys

F5, R4/- (sun)
diaeresis: combines next input character with diaeresis, e.g. aȊ
shift-F5, R5/÷ (sun)
tilde: combines next input character with tilde, e.g. aȋ
ctrl-F5, R6/× (sun)
ring: combines next input character with ring, e.g. aȌ
F6, R3 (sun)
acute: combines next input character with acute accent (accent d'aigu), e.g. aȇ
shift-F6, R1 (sun)
grave: combines next input character with grave accent, e.g. aȈ
ctrl-F6, R2 (sun)
circumflex: combines next input character with circumflex accent, e.g. aȉ
These accent compositions also work on the prompt line.

Diacritic input mnemonics

In addition, the enter-control-code prefix (^V, or ^Q in emacs mode, or ^P in WordStar mode) can be used to compose characters. The six accents mentioned above (the most important Western European accents) can be entered with according prefix characters after the ^V, followed by a letter (indicated with an x in the listing); further generic accent composers are inherited from the RFC 1345 mnemonics table; the accent mnemonics are entered after a letter (indicated with an x in the listing). Mnemonic compositions produce the following accents:

"x
diaeresis (umlaut)
'x
acute (accent d'aigu)
`x
grave
^x
circumflex
°x
ring above
~x
tilde
x!
grave
x'
acute (accent d'aigu)
x>
circumflex
x?
tilde
x-
macron
x(
breve
x.
dot above
x:
diaeresis (umlaut)
x,
cedilla
x_
underline
x/
stroke
x"
double acute
x;
ogonek
x<
caron
x0
ring above
x2
hook
x9
horn
x->
circumflex below
and more
See also the description of the ^V function below for more input options. (If you have an appropriate keyboard, you can of course also type in any character directly or using the Compose/Combine key.)
The diacritic substitution commands (ESC _ and national variants) replace the two characters at the cursor position with a suitable diacritic character if possible.

Keyboard mapping

In UTF-8 text and terminal mode or in CJK text mode, optional keyboard mapping is available. In this mode, input characters or sequences are transformed to characters or sequences of a certain Unicode script range (or corresponding CJK charactersq).
Mapping tables for Greek, Cyrillic, Hebrew, Arabic, and major CJK input methods are preconfigured; they have been ordered in the keyboard menu according to the order of their respective basic ranges in the Unicode character set. Further mappings can be generated using the mkkbmap script (from tables in various formats as used by other editors) and then compiled into mined. See configuration hints below for details.

Function: Keyboard mapping works as follows: You enter a key sequence that is mapped to a character sequence in the selected keyboard mapping table. The transformed character sequence is used as input.
As some typical keyboard mappings contain ambigous key sequences where one may be a prefix of another, a short delay is applied in these cases to allow recognition of any such sequence to be mapped. After a timeout, the shorter sequence already matching will be used; the timeout can be cut by typing a blank, the blank itself will then be discarded.

Pick list: Some other keyboard mappings, especially for CJK input methods, contain multiple choice mappings. In these cases, a selection menu is displayed that offers a "pick list" to select a character from. A character can be picked with a mouse click, or by navigation to the desired choice with the cursor keys (down/up, right/left) or the '<'/'>' keys , or by just selecting the menu row first (cursor-up/down), then typing a digit 1-9 or 0 to select the numbered character. The space key can be configured to either navigate to the next choice, the next row, or to select the current choice; see option -K.
Keyboard mapping data are based on Unicode. So in CJK text mode, the selection menu may contain symbols that are not mapped to the active CJK text encoding. In a UTF-8 terminal, these will still be displayed but cannot be inserted. In a CJK terminal, these are not displayed; an empty entry is shown instead.

An active and a standby keyboard mapping are maintained. They can be toggled quickly for text input, also on the prompt line.
The current mapping is indicated by its two-letter script tag in the flags area, showing "--" if no mapping is active.

The active mapping can be selected in the following ways:

ESC k (or Alt-k)
toggles between active and standby keyboard mapping
(also on prompt line)
HOP ESC k (or HOP Alt-k)
resets keyboard mapping to none (unmapped input)
ESC K (or Alt-K, or right click on mapping indication in flags area)
opens the Keyboard Mapping selection menu
(Alt-K also on prompt line)
HOP ESC K (or HOP Alt-K, or left click on mapping indication in flags area)
cycles through available keyboard mappings
environment configuration
see environment variable MINEDKEYMAP below
Note: Keyboard mapping is implicitly suppressed temporarily where it is not useful: during mnemonic character input, HTML marker input, command letter entry, help selection, yes/no prompting.

HTML support: syntax highlighting and tag entry/matching

HTML tag entry: With the ESC H commands, opening and closing HTML tags can be entered or (with HOP) a marked area can be enclosed into HTML tags.
Syntax highlighting: HTML tags are displayed in light blue colour to set them back from the actual text contents. Other highlighting modes apply to HTML comments and JSP code. This option is activated if the file name suffix is one of .html, .htm, .xml, .jsp, .sgml; it can be toggled from the eXtra menu.
HTML tag matching: With the ESC ( or ESC ) command, mined searches for the opening / closing HTML tag corresponding to the current one.
Note: While you edit within a line and change its HTML ending status (by entering or deleting '<' or '>'), the display status of subsequent lines is not changed. (You may refresh the display with ESC ".")
Configuration hint: The colour used for displaying HTML tags can be configured with the environment variable MINEDHTML using an ANSI sequence, e.g. MINEDHTML=34 (the default).

Script highlighting

It may be desirable to distinguish characters in different script by displaying their glyphs in different colours. (This especially allows to distinguish easier between similar glyphs as they occur in Latin/Greek/Cyrillic scripts.)
Script highlighting is currently pre-configured for Greek and Cyrillic. It uses the terminal's 256-colour mode if available (xterm should be compiled with this option).
The scripts to highlight and the colour values to use can be configured at compile-time. See configuration hints below.

Visible indication of line control and display properties

Various options are available to indicate line control characters (TAB and line-feed) as well as shifted line display (of lines longer than the screen width). (So you can see how many dummy blanks there are before the line ends or how many superfluous blanks precede a TAB character.)
Environment variables can be used to modify these indications. Some indications may be configured specifically for UTF-8 display mode, given as UTF-8 character in the variable containing "UTF" in its name (see listing).
Default indications and according configuration variables:
«
LF (Unix-type line-end)
change with MINEDRET or MINEDUTFRET, may contain up to 3 characters to configure different appearance
µ
CRLF (MSDOS-type two-character line-end)
@
CR (Mac-type line-end)
transparently handled and displayed with +R command line option
º
NUL character (pseudo line-end)
¬
"none" line-end (virtual line-end as used to split input lines too long for internal handling; will be joined into a single line when saving the file)
· (cyan)
non-breaking space (character code hex A0)
« (cyan)
Unicode line separator (if enabled by -uu)
(cyan)
Unicode paragraph separator (if enabled by -uu)
end of paragraph (if enabled by -p)
change with MINEDPARA or MINEDUTFPARA
»
line extending the end of the screen line
(move cursor right to shift line display)
change with MINEDSHIFT
·
position spanned by TAB character
change with MINEDTAB or MINEDUTFTAB, may contain up to 3 characters to configure different appearance within the TAB span
Configuration: Display colour of the indications which are by default red can be changed with the environment variable MINEDDIM, display colour for Unicode line-end indications with MINEDUNIMARK. Their values should be the numeric part of an ANSI terminal control sequence, e.g. 31 for red, "33;44" for yellow text on blue background. For more details and recommended settings see the example script file "minedenv.sh". Default values are compiled in and can be overridden by setting the variables to empty values.

Long line splitting

Mined has an internal line length limit (> ca. 1024 characters). When opening a file, longer lines are split. This is handled transparently as virtual "none" line-ends are used and indicated. When saving the file, lines will be joined again.

Automatic backspace mode adaptation

The Backarrow and Delete keyboard keys are handled very differently by operating environments. In addition to the -B option to exchange their normal function, mined will detect the Unix terminal line setting for the "erase" function (stty erase ..) and attach the "Delete character left" function to the key configured there. For command details, see below.

Menu display

Menu borders are displayed using block graphics characters if they are detected to be available. (Configuration hint: This depends on the "alternative character set" being defined in your system's termcap/terminfo database for the terminal you use. If it's not configured on your system but you know the terminal has the capability, use of block graphics for menu border can be enforced with the +G command line option.)


Special file handling features

Version control integration

From the File menu, checkout and checkin commands are available that invoke "co" or "ci" scripts, respectively (which must reside in the user's command search path). This offers a gateway to ClearCase or other version control systems; mined applies automatic save or screen update as appropriate.


Unicode support

Introduction, handled character encodings

Mined interprets UTF-8 which is a multi-byte character encoding of the ISO-10646 character set, part of which is also known as Unicode. When reading a file, it detects UTF-8 versus Latin-1 input automatically (unless overridden with -u or -l). It also detects UTF-16 which is a 16 bit Unicode encoding with surrogate pairs to represent a 21 bit subset of ISO-10646. UTF-16 input is, however, transformed into UTF-8 for editing.

UTF-8 internal representation, transparent handling of other text

Mined handles UTF-8 representation internally and also edits and keeps illegal UTF-8 sequences. This way, if you accidentally open a Latin-1 file in UTF-8 mode, you may still edit the contents and will not loose any character information.

UTF-8 mode indication

The upper-right flags area has a character encoding indication which shows "U8" if UTF-8 text interpretation is selected. For Latin-1 text interpretation "L1" is shown, for others see Mode indication display. You may click on the indication to toggle between Latin-1 and UTF-8 or the last selected encoding.

Encoding-related commands

The command ESC u displays character encoding information in the bottom status line (in UTF-8 mode it includes both the UTF-8 byte sequence and the ISO-10646 (Unicode) value of the current character, as well as Unicode script, width, and combining information). With HOP ESC u, permanent display can be toggled. Other commands insert the code of the current character or insert a character taking its encoding from the text. For details, see the command summary.

Input support

With ^V, mined's special input support is invoked (in both text editing and text entry on the status line). In addition to the usual input options for control characters and Latin-1 diacritic characters, hexadecimal character codes can be entered with leading ^V#, octal/decimal with ^V##/^V#=, and character mnemonics can be used after ^V, embedded in blanks. (For examples, see description of the ^V function below.)

Conversion support

Interactive conversion between Latin-1 and UTF-8 encoding is support with two functions. In either UTF-8 or Latin-1 text mode, search for characters encoded in the other encoding with the command HOP ESC ( or Alt-F11 . Then, convert the character with ESC _ or ESC ö etc. Conversion and a new search for the next character can be combined with Alt-Shift-F11.

Smart quotes

Straight (double or single) quote characters «"» or «'» can be replaced automatically with an opening or closing typographic quotation mark, depending on the text context. To select the mode (quotation marks style) and choose the quotation marks to be applied, click the quote marks displayed in the flags area in the top screen line to cycle through the international options in both directions, or right-click there or enter ESC Q or Alt-Q to open the Smart Quotes selection menu.
When a file is loaded, mined tries to determine the applicable quotation marks style in two ways: If mined edited the file before and noted the last cursor position (in the file @mined.mar, which can be created using the HOP F2 command, or the File menu "save position" command), this information also includes the last selected smart quotes mode for the file. If that information is not available, mined auto-detects existing quotation marks in the file and adjusts its smart quotes mode accordingly.
The smart quotes left/right selection algorithm considers the text context to automatically support smart quotes also in CJK text.
In smart quotes mode, straight quotes can be inserted with compose pairs (^V ^ ' or ^V ^ "). An apostrophe can be inserted with HOP ' (^G ').
Smart quotes style can also be preselected with the environment variable MINEDQUOTES which should then contain the opening/closing quote pair or just the opening quote mark (UTF-8 encoded, double or single quotes); this overrides both auto-detection and the preference saved with the cursor position.
Smart dashes: If smart quotes are active, also an input sequence of "--" is replaced with an en dash (if preceded by a blank) or an em dash.

Bidirectional terminal support

To run mined on a bidirectional terminal (such as mlterm), activate the according terminal handling mode with the option +UU.
In this mode, when displaying a menu, underlying text lines that contain right-to-left characters are cleared first in order to prevent display confusion between the terminal's bidi algorithm and the menu position.
In bidi terminal mode, mined also assumes that the terminal applies Arabic ligature joining of LAM/ALEF combinations. Mined accounts for the screen position accordingly; in turn, mined can also auto-detect if the terminal applies LAM/ALEF ligature joining and would assume bidi mode then. In separated display mode, the joining part of the ligature is indicated similarly to the handling of combining characters.

Input support for right-to-left scripts ("poor man's bidi" mode)

With the option -b, right-to-left input support for according Unicode script ranges can be enabled. This "poor man's bidi" mode is intended for quick entry of right-to-left text without having a right-to-left terminal; it works as follows:
After entering a right-to-left Unicode character, the cursor position is moved left of it, so subsequent characters will be appended left and the text shifted right. Characters are stored in visual order while input support is implicit, based on the characters being typed. Entering left-to-right characters will obviously automatically switch direction; to continue with right-to-left, the cursor must be moved manually (e.g. to the line beginning).
Newline, Space, TAB, and combining characters attempt to behave well according to what was entered before; however, intermediate cursor movement is not considered.

Unicode line-ends

With the command line option -uu (or a double u in the environment variable MINED), mined detects and handles Unicode line separators and paragraph separators. They are displayed as shown above. Inserting a new line on a line with Unicode lineend will insert a line separator unless the HOP flag is active. Inserting a new line with the HOP flag active will insert a paragraph separator. The keys shift-Return (shift-Enter) or control-Return (control-Enter) insert a paragraph separator or line separator respectively.
Configuration: In order to enable shift and control with the Return or Enter keys, xterm must be configured as shown in the example configuration file Xdefaults.mined in the mined distribution.

UTF-8 display

In UTF-8 terminal mode, apparently Unicode characters will be displayed. Fonts usually have a substitute glyph to indicate characters not contained in the font (unimplemented). Wide characters (double-width glyphs in dual-width fonts) are displayed and considered for screen operation. Combining characters are displayed either combined or separated (see below).

Illegal UTF-8 sequences are displayed with highlighted background, using the following indications. Furthermore, control characters encoded as a UTF-8 sequence and control characters in the "C1" range (values 0x80..0x9F) will be displayed similar to normal control characters but with coloured highlighting.

8
for an unexpected UTF-8 continuation byte (range 80-BF)
4
for a 0xFE (254) byte
5
for a 0xFF (255) byte
«
for a too short UTF-8 sequence if followed by a single-byte character (00..7F)
»
for a too short UTF-8 sequence if followed by a multi-byte character (C0..FF)
Configuration: Display colour of illegal UTF-8 indications can be changed with the environment variable MINEDUNI, the value should be the numeric part of an ANSI terminal control sequence; optionally, the value can be preceded by a character to be used for Unicode character indication in non-UTF-8 (Latin-1) terminal mode. (The default configuration value is "¤ 46").

In Latin-1 terminal mode, Unicode characters outside the Latin-1 range will be displayed as a block symbol "¤" expect combining characters which are displayed as "'" and the Euro sign which is displayed as "E" and fullwidth ASCII characters which are displayed in visible form. (All with highlighted, cyan-coloured background; configurable, see just above.) Wide characters (double-width glyphs) are indicated by adding a space.

Combining characters:

If UTF-8 screen mode is enabled, mined also assumes by default that the terminal can handle combining characters. (To disable this, set the environment variable utf8_no_combining_screen, or set the option -cc.)
If mined operates on a terminal that handles combining characters, it offers two editing modes: combined or separated. They can be toggled by clicking on the "c" or "C" letter next to the Latin/UTF-8 indicator in the flags display (right part of the top screen line), or by the menu entry "eXtra - combined display".

Joining characters:

If mined assumes that the terminal applies LAM/ALEF ligature joining (either configured with the +UU right-to-left display option or auto-detected), the joined character width will be handled correctly in cooperation with the terminal.
Mined supports ligature joining in both combining character display modes:

Search expression limitations

Unicode search ranges can not be very large as all included characters are listed in an internal buffer which is limited to ca. 1 KB.

Environment

Case toggle

The case toggle function (ESC C, HOP ESC C, F11, HOP F11) handles the full Unicode range, including some special cases (e.g. Greek final s and optionally Turkish "i"). Also Japanese characters are toggled between Hiragana and Katakana.

UTF-8 preservation and byte-transparent editing

Splitting within UTF-8 sequences is avoided; splitting of combined characters is not avoided, however, they will join seemlessly as lines are joined again. (Combining characters at the beginning of a line are not displayed in combined display mode.)


CJK encoding support (Chinese/Japanese/Korean Han character sets)

Character encoding

Mined supports major CJK encodings. Handling of CJK encodings is enabled with the option -C or by auto-detection (by heuristic counting of valid code words).
The specific CJK encoding in which to interpret the text can be selected with the -E option or by a locale indication in one of the environment variables LANG, LC_ALL or LC_CTYPE. For available encodings and usage of the -E option, see Mode indication display. For usage of the locale environment variables, see Locale configuration.
The encodings to be auto-detected can be configured with the MINEDDETECT environment variable. Set it to the list of encoding indications (capital letters as listed for the -E parameter) to disable auto-detection of other encodings. UTF-8 auto-detection cannot be disabled this way.
The encoding flag menu can also be used to change the encoding interpretation while editing text: click with the right mouse button on the encoding indication on the right side of the top line, or select "encoding" from the eXtra menu.

Terminal environment

Mined supports CJK encodings in two terminal environments; it performs auto-detection of terminal features (see Terminal encoding support below).
CJK terminals:
For terminals that support native CJK encodings (e.g. hanterm or cxterm), the terminal encoding assumed by mined can be specified with the -E option (together with the -C option) or by a locale indication in one of the environment variables LC_ALL, LC_CTYPE or LANG. For available encodings and usage of the -E option, see Mode indication display. For usage of the locale environment variables, see Locale configuration.
However, in CJK terminals, mined handling of CJK encoding is basically transparent: The font used by the terminal must match the encoding of the edited files; the user is responsible for setting up the terminal with the suitable fonts; display of invalid characters (that are not included in the font being used) may produce weird screen behaviour (e.g. in cxterm). Since release 2000.8, mined tries however to detect if certain CJK codes can be displayed and if it assumes they cannot (e.g. double-byte codes with bytes in the 0x80-0x9F range, or 3-byte and 4-byte code sequences) it will display replacement indications instead. The encoding specified as described above is only used for selection of appropriate CJK characters for display of line markers (line end and TAB indications) and for keyboard mapped input (CJK input methods, the data of which are configured in Unicode for all modes).
UTF-8 terminal:
Since release 2000.7, CJK encoding is also supported in a UTF-8 terminal; mined uses character set mapping tables for display and input interpretation. The apparently major encodings for CJK (Chinese/Japanese/Korean) text are supported. See Mode indication display for a listing. For Japanese, the JIS encodings that map to two Unicode characters are supported.
8 bit terminal:
CJK characters are displayed with substitute indications, so minimal file editing capability is provided; fullwidth ASCII characters are visible.

CJK input method support

Input methods for CJK characters are support with the Keyboard mapping mechanism. A selected number of input methods considered useful for each CJK script are pre-configured, others can be added easily at compile-time with the mkkbmap script.

Special display

The following special CJK character indications apply:
¤  (cyan background)
CJK character cannot be displayed on 8-bit terminal
(cyan background)
CJK character cannot be displayed on CJK terminal due to terminal capability limitations (esp. 3 and 4 byte codes, or codes with 0x80...0x9F byte range)
# (cyan background)
invalid CJK code (not assigned in selected encoding)
# (cyan)
illegal (esp. incomplete) CJK code
To avoid mis-interpretation of 8-bit characters that are typically used for display of line-ends, TAB characters etc, the environment variables MINEDRET, MINEDTAB, MINEDSHIFT are ignored in CJK terminal mode.


Terminal encoding support

Terminal feature detection

Since release 2000.8, mined performs auto-detection of terminal features for UTF-8 terminals (UTF-8 encoding, different width data versions, handling of double-width, combining and joining characters) and CJK terminals (handling of non-EUC code points, GB18030, 3-byte and 4-byte encodings). CJK terminals cannot always be distinguished from 8-bit terminals however, so that CJK terminal encoding should still be configured with either an option (-C) or by proper setting of the locale environment (LC_ALL, LC_CTYPE or LANG variable). For usage of the locale environment variables, see Locale configuration.


Summary of mined commands and key assignments

Cursor and screen motion

^E or cursor-up
Move cursor 1 line up.
with HOP: Go to top of page.
^X or cursor-down
Move cursor 1 line down.
with HOP: Go to bottom of page.
^S or cursor-left
Move cursor 1 character left.
with HOP or control-Home or (with -k) Home: Go to beginning of line.
^D or cursor-right
Move cursor 1 character right.
with HOP or control-End or (with -k) End: Go to end of line.
^A or shift-cursor-left
Move backward to beginning of previous word.
with HOP: Go to beginning of sentence.
^F or shift-cursor-right
Move forward to beginning of next word.
with HOP: Go to end of sentence.
control-cursor-up
Move backward to previous beginning of paragraph.
control-cursor-down
Move forward to next beginning of paragraph.
^R or PgUp or PrevScreen (vt100)
Scroll backward 1 page (Top line becomes bottom line).
with HOP: Go to beginning of text.
^C or PgDn or NextScreen (vt100)
Scroll forward 1 page (Bottom line becomes top line).
with HOP: Go to end of text.
Home/Pos1 (on small keypad)
Move to beginning of line. Only if keypad is configured to emit different control sequences for the two keypads, see configuration hints below.
(with -k): Mark position.
End (on small keypad)
Move to end of line. Only if keypad is configured to emit different control sequences for the two keypads, see configuration hints below.
(with -k): Copy text between marked and current position.

Navigation support for combined Unicode characters
Enabling partial editing of base character and combining characters (accents) in combined display mode.
control-cursor-right or ^V cursor-right
Micro movement: Move partial character right into Unicode combined character.
control-cursor-left or ^V cursor-left
Micro movement: Move partial character left over Unicode combining character.
^W or ctrl-PgUp (PC) or PF3 (vt100)
Scroll screen backward 1 line.
with HOP: Scroll backward half a screen.
^Z or ctrl-PgDn (PC) or PF4 (vt100)
Scroll screen forward 1 line.
with HOP: Scroll forward half a screen.
^G nn
Move to a line (prompts for line number).
ESC g nn
(Terminate with any character.)
^G nn % or ESC g nn %
Move to position in text determined by percentage.
^G nn p or ESC g nn p
Move to page in text (set page length with ESC P).
^G < command > or ESC g < command >
If not immediately followed by a digit, the positioning command works as an alternative HOP key.
^G N '
(N=0..9) Go to marker N. ("'", "g", "." may be used.)
ESC ' N
(N=0..9) Go to marker N.
HOP Pos1 or ^G ^] or ESC ] or HOP ESC ^
Move to the position previously marked by Pos1/ESC ^/^] .
ESC Return or Alt-Return
Return backward to the previous position marked in the position stack.
HOP ESC Return or HOP Alt-Return
Return forward to the next position marked in the position stack.
^Q or ^G or "5" (on keypad) or Scroll Lock or Pause or F10 (PC) or ESC (especially PC)
HOP key (unless ^G followed by a digit). In order to enable the "5" key or (for convenience on notebooks) to enable the Scroll Lock or Pause key with the HOP function, your X resource configuration may have to be adapted, see Keypad configuration below.
left mouse button
move cursor to position

Entering text

< printable char >
Insert the character at cursor position.
< RETURN > or < Enter > or < LF char >
Insert a newline at cursor position, clone line-end type. Apply auto-indentation if enabled.
< shift-RETURN > or < shift-Enter >
If Unicode line-end handling is enabled (-uu), make a new line by inserting a Unicode paragraph separator at cursor position. (See also Unicode line-ends for key configuration.)
< control-RETURN > or < control-Enter >
If Unicode line-end handling is enabled (-uu), make a new line by inserting a Unicode line separator at cursor position. (See also Unicode line-ends for key configuration.)
< TAB char >
Insert a tab character at cursor position.
HOP {, HOP (, HOP [, HOP <
Enter indented pair of matching parentheses.
HOP /
Enter an indented Javadoc comment frame.
HOP '
Enter an apostrophe.
^O
Make new line at current position. If the current line has a "NUL" or "NONE" special line-end type, it will be reproduced for the new line. (Entering a new-line key always produces a real line-end.) If the current line is terminated by a Unicode paragraph separator, a line separator is inserted.
Auto-indentation is not applied.
HOP ^O
Split a line in two binary-transparently, i.e. enter a "NONE" virtual line-end.

Diacritic input support by accent prefix keys

function key prefixes for accent compositions
These functions also work on the prompt line (e.g. to enter search expressions).
F5 < character >
Compose character with diaeresis (umlaut accent), e.g. aȊ
shift-F5 < character >
Compose character with tilde, e.g. aȋ
ctrl-F5 < character >
Compose character with ring, e.g. aȌ
F6 < character >
Compose character with acute accent (accent d'aigu), e.g. aȇ
shift-F6 < character >
Compose character with grave accent, e.g. aȈ
ctrl-F6 < character >
Compose character with circumflex accent, e.g. aȉ

Special input support

control-V special input support
These functions also work on the prompt line (e.g. to enter search expressions).
^V < control-char >
Enter control character.
^V [ or ^V | or ^V ]
Enter one of control characters ^[, ^|, ^].
^V _ _
Enter ^_ (control-V and twice '_' enters control-'_').
^V ^ ^
Enter ^^ (control-V and twice '^' enters control-'^').
^V < accent > < character >
Compose accented character.
^V # xxxx < space or RETURN >
Enter character defined by a hexadecimal number being input (depending on applicable encoding, byte value, Unicode value, or valid CJK code is required).
Also works on the prompt line.
^V # # xxxxxx < space or RETURN >
Like ^V # but using an octal number.
^V # = xxxxx < space or RETURN >
Like ^V # but using a decimal number.

Mnemonic input support for Unicode characters
Mnemonics recognized include the following:
  • RFC 1345 mnemos (except mappings to Unicode private use areas); in ambiguous cases, the RFC 1345 mnemos must be prepended with a digit "1".
  • HTML mnemos; in ambiguous cases, the HTML mnemos must be prepended with a "&".
  • TeX mnemos (macros) and substitutes, leaving out any "\".
  • Some additional mnemos as listed on the mined character mnemos page.
Unless there is an ambiguous mapping, all two-letter mnemonics can also be entered in reverse order.
^V < space > < name > < space or RETURN >
Lookup character mnemonic and enter character.
^V < character > < character >
Compose two characters.

Examples:
^V^A
Enter control-A.
^V^[ or ^V[
Enter the escape character.
^V'e
Enter é (e with accent d'aigu).
^Vae
Enter æ (the ae ligature).
^V-,
Enter ¬ (the negation symbol).

Examples for UTF-8 text mode only:
^V not (terminated by a space)
Enter ¬ (the negation symbol).
^V#20ac or ^V euro (each terminated by a space)
Enter the euro character.
^V a* (terminated by a space) or ^Va*
Enter the Greek small letter alpha.
^V ae' (terminated by a space)
Enter the Latin ligature ae with acute accent.

Keyboard mode selection

ESC k
toggles between active and standby keyboard mapping
(ESC k/Alt-k also works on prompt line)
HOP ESC k
resets keyboard mapping to none (unmapped input)
ESC K or right click on mapping indication in flags area
opens the Keyboard Mapping selection menu
(ESC K/Alt-K also works on prompt line)
HOP ESC K or left click on mapping indication in flags area
cycles through available keyboard mappings
ESC Q
opens the Smart Quotes selection menu

Modifying text

Character deletion with DEL and Backspace (^H) characters
In order to accommodate various usages of these keys, the function depends on environment settings and the mined option -B.
Note that the "Delete character left" function actually applies the Back-Tab function if there is only white space before the current position in the current line and the line above.

If the terminal is set up such that Backspace (^H) deletes a character left on the command line (stty erase ^H):
^H
Delete character left.
DEL (default)
Delete character right.
DEL (with -B)
Delete character left.
control-Del
Delete character right.

If the terminal is set up such that DEL deletes a character left on the command line (stty erase ^?):
DEL
Delete character left.
^H (default)
Delete character left.
^H (with -B)
Move left.
control-Del
Delete character right.
HOP < delete previous character command >
Delete the line beginning.
^B
Delete character right (next character).
^T
Delete next word.
^^
Delete previous word.
^K
Delete tail of line; if at end of line, delete lineend (joining lines).
with HOP: Delete whole line.
ESC X
Insert hexadecimal representation of current character bytes. (In UTF-8 mode, this is the UTF-8 byte sequence of the character in hexadecimal notation.)
with HOP: Insert character with hexadecimal value scanned from text at current position.
ESC U
Insert hexadecimal representation of current character (Unicode value in UTF-8 mode).
with HOP or control-shift-F11: Insert character with hexadecimal Unicode value scanned from text at current position.
ESC A
Insert octal representation of current character.
with HOP: Insert character with octal value scanned from text at current position.
ESC D
Insert decimal representation of current character.
with HOP: Insert character with decimal value scanned from text at current position.
ESC C or F11
Exchange case (low/capital) of character under cursor. Applies to Unicode characters. Special behaviour for some characters (e.g. Greek final s) and for Turkish "i" if the environment variable MINEDTURKISH is set. Also Japanese characters are toggled between Hiragana and Katakana.
with HOP or shift-F11: Apply to word from cursor.
ESC _ or control-F11
Diacritic substitution replaces the two characters at the cursor position with a suitable diacritic (accented) or otherwise composed character if possible. Transformations are the same as with the ^V two-letter character input mnemonics, possibly with additional preferences (see variations below) according to the current locale environment.
As an additional function, the command also transforms between Latin-1 and UTF-8 encoded characters if an accordingly encoded character is found at the current position; the current character encoding mode is used to determine the target character set.
Example: ae->æ, oe->œ (oe ligature U+0153, in Unicode mode)
Example: æ (Latin-1 encoded)->æ (UTF-8 encoded) or vice versa
With Escape commands with diacritic letters that occur on respective national keyboards, the according preference transformations take precedence:
ESC ä or ESC ö or ESC ü or ESC ß
Similar to ESC _, but with German transformation preferences.
example: ae->ä, oe->ö
ESC é or ESC è or ESC à or ESC ù or ESC ç
Similar to ESC _, but with French transformation preferences.
example: oe->œ (oe ligature U+0153, in Unicode mode)
ESC æ or ESC å or ESC ø
Similar to ESC _, but with Danish transformation preferences.
example: ae->æ, oe->ø
HOP ESC ( or alt-F11
Search for a character encoded in the "wrong encoding", i.e. a UTF-8 character in Latin-1 mode, or a Latin-1 character in UTF-8 mode.
ESC _ or ESC ö etc.
If invoked on a non-ASCII character, Latin-1 / UTF-8 character conversion is applied; if the character is encoded in the encoding other than the current text encoding it is converted into the current text encoding.
Alt-shift-F11
Convert Latin-1 / UTF-8, then search for the next "wrong encoded" character.
ESC j
("Clever Justify") Format paragraph by word-wrapping according to the currently set right margin value; left margins are derived from the contents of the paragraph and line. Heuristic detection of numbered items automatically triggers appropriate indentation.
End-of-paragraph is a line without trailing blank.
with HOP: Same, but end-of-paragraph is a blank line.
ESC J
("Normal Justify") Format paragraph by word-wrapping according to the currently set left and right margin values.
End-of-paragraph is a line without trailing blank.
with HOP: Same, but end-of-paragraph is a blank line.
ESC <
Set left margin for justification.
ESC ;
Set left margin of first line of paragraph only.
ESC :
Set left margin of next lines of paragraph only.
ESC >
Set right margin for justification.
ESC H (every first time)
Enter HTML tag (and remember for subsequent ESC H). (Note that alt-shift-H will do the same thing if your terminal is configured appropriately - see the example configuration file Xdefaults.mined in the distribution.)
The tag can be entered with attributes and values; these will not be repeated in the closing tag (see next entry on ESC H).
ESC H (every second time)
Enter closing HTML tag. Any tag attributes and values entered with the tag (see previous entry on ESC H) will be left out.
HOP ESC H
Put text between mark and current position in HTML tags. The "A" tag gets special treatment.

Text block and buffer operations

^] or control-@ (control-space) or ESC ^ or Stop (sun) or Home/Pos1 (on right keypad) or Select (vt100) or shift-Home
Set mark (to remember the current location).
with HOP: Goto mark.
^G N m
(N=0..9) Set marker N. ("m", "," may be used.)
ESC m N
(N=0..9) Set marker N.
^G N '
(N=0..9) Go to marker N. ("'", "g", "." may be used.)
ESC ' N
(N=0..9) Go to marker N.
^Y or End (on right keypad) or Copy (sun) or Do (vt100) or shift-End or control-Ins
Copy text between mark and current position to buffer.
with HOP: Append to buffer.
^U or Del (on right keypad) or Cut (sun) or ctrl-End (PC) or Remove (vt100) or shift-Del
Cut text between mark and current position; save in buffer.
with HOP: Append to buffer.
^P or Ins or Paste (sun) or InsertHere (vt100)
Paste contents of buffer to current position. With ^P, the cursor is always placed before the pasted region. In emacs mode or with the option +V the cursor is placed behind the pasted region.
with HOP: (e.g. HOP Ins or ^G^P) Paste from inter-window buffer. Thus you can quickly copy text from one invocation of mined to another.
Alt-Insert or control-F4
Replace text just pasted with preceding paste buffer. This command uses a ring of paste buffers as established with the emacs editor ("yank ring").
ESC b or shift-F4
Copy contents of paste buffer into a file.
with HOP: Append to file.
ESC i or F4
Insert file at current position.
(from File menu)
Print contents of buffer (to default printer).
ESC c
Invoke operating system command (prompted for) with buffer as input.

Search

ESC / or Find or F7 or F8
Search forward (prompt for regular expression).
with HOP: Search for current identifier.
ESC \
Search backward (prompt for regular expression).
HOP F8 or shift-F9
Search for current identifier.
HOP shift-F8 or ESC t
Search for definition of current identifier (using tags file). See ESC t below for further description.
HOP control-shift-F8
Search for identifier definition (prompts for identifier).
HOP control-F8
Search for current character.
^N or F9
Search for next occurence (using previous search expression and direction).
with HOP: Repeat last but one search; two alternating search expressions can be used with this command.
ESC , or shift-F8
(Global) Substitute (prompt for search and replacement strings).
ESC r or control-F8
(Global) Replace with confirmation prompting (first prompt for strings).
ESC R or control-shift-F8
(Line Replace) Substitute on current line (prompt for strings).
ESC ( or ESC ) or ESC { or ESC }
Search for corresponding bracket matching the bracket at current position in one of the pairs (), [], {}, <>, «». (Nested matching bracket pairs are skipped.)
Also works for matching HTML tags.
ESC t or HOP shift-F8
Search for and move to the location of the definition of identifier at the current cursor position. This command uses the tags file that can be generated with the ctags command (Unix). It opens another file if necessary and automatically saves the current file then.
Like with some commands, ESC t places the current position on the position marker stack before going to the location of the identifier definition. The command ESC Return (Alt-Ret) can move back to that position, even if edited files were changed with the command.
HOP ESC t
Similar, but prompts for identifier.
HOP ESC ( or alt-F11
Search for a character encoded in the "wrong encoding", i.e. a UTF-8 character in Latin-1 mode, or a Latin-1 character in UTF-8 mode.

Special functions in a search string:

.
matches any character.
^
(at begin of pattern) restricts match to the begin of a line.
$
(at end of pattern) restricts match to the end of a line.
[< character set >]
matches any one of a set of characters; the set may be given by listing elements, denoting a range < c1 >-< c2 >, or negating the whole set [^< character set >].
\< character >
matches the character literally.
< pattern >*
(a star appended to any one of the defined patterns) matches a (zero or more times) repetition of this pattern. In a final position within the search expression, however, it matches one or more times this pattern.
^V^J or \n
(a linefeed character or its representation) searches for newline embedded in the search pattern

Special functions in a replacement string:

&
is replaced by the matched pattern to be replaced.
^V^J or \n
(a linefeed character) embeds a newline in the replacement string

File operations

ESC w or F2
Save (write back) current text to file (only if modified).
with HOP: saves current file position in marker file @mined.mar, so that subsequent editing sessions will start at the current position and remember formatting parameters.
ESC W or shift-F2
Save (write back) current text to file (unconditionally).
control-F2
Save As; save current text to file with different name
F12
enable memory for file positions in current directory; saves current file position in marker file @mined.mar, so that subsequent editing sessions will start at the current position and remember formatting parameters.
F3
Edit another file (prompt for save if current text changed).
ESC v
View another file (prompt for save if current text changed).
ESC E
Switch current text buffer into edit mode.
ESC V
Switch current text buffer into view only mode.
ESC q
Quit the editor (prompt for save if current text changed).
ESC ESC
Exit editing current text (save first if changed), continue with next file if multiple files are being edited, otherwise exit mined.
ESC +
Edit the next file in the list of files being edited.
with HOP: Edit the last file in the list.
ESC -
Edit the previous file in the list of files being edited.
with HOP: Edit the first file in the list.
ESC #
Ask for index into the list of files and edit that file.
ESC # #
Reload file currently being edited.

Menu

ESC Space or Alt-Space or shift-F10
Open Popup menu.
ESC f or Alt-f or F10
Open File menu.
ESC < letter > or Alt-< letter >
Open menu.

Miscellaneous

ESC = < count >
Repeat a command < count > times (prompts for count).
Example: ESC=7< cursor down > moves the cursor 7 lines down.
Note: If the function to be repeated is a character to be inserted and the input is keyboard mapped to a multi-character sequence, only the first character of the sequence is inserted repeatedly.
ESC < count >
Repeat a command < count > times (prompts for rest of count); this short form is only accepted, however, if the repeat count consists of at least two digits (this is to avoid confusion with function key escape sequences of certain terminals).
Example: ESC77- enters a line of 77 hyphens, ESC07x enters "xxxxxxx".
^\
Abort current command, e.g. while on prompt line.
ESC ?
Show the current status of the file (name, whether modified, current line, number of lines, characters, and bytes).
with HOP: Toggle permanent display of text status line.
ESC u
Display the character code of the current character in the bottom status line. (In UTF-8 mode, both the UTF-8 byte sequence and the Unicode value are displayed; in CJK mode, Han character values are displayed when applicable.) In UTF-8 mode, additional Unicode information is included, indicating the script, width, combining, and surrogate properties of the character.
with HOP: Toggle permanent character code display.
ESC T
Toggle TAB width. Alternates the width interpretation of TAB characters between 4 and 8.
ESC P
Set page length (number of lines that mined assumes to be on a page). (Useful for status display.)
ESC a
Toggle append mode (append to text buffer/file instead of overwriting).
ESC d
Show working directory / change to another one (also change drive in MSDOS version).
ESC n
Change file name associated with edited text (does not affect the text currently being edited, just detaches it from the file previously read in).
ESC .
Redraw the screen.
ESC z
Suspend editor process; first write back file if modified (no write if HOPped or given empty file name on prompting).
ESC !
Fork off a shell and wait for it to finish.
ESC h or F1 or Help
Online help function. Selection of help topics is offered.
The environment variable MINEDHELPFILE should be set to the file name of the online help file "mined.hlp", but mined also looks for the file in a couple of typical installation locations.
with HOP: View online help with mined itself instead of invoking the "less" viewer. (This is the default even without HOP in the DOS versions.) The text being edited will automatically be saved (if it was modified) and any prompting required will be involved. The suspended editing session will automatically be restored after help viewing is finished.
ESC
While a command is active and prompting, ESC aborts the current command.
ESC ' '
(Escape Blank) Do nothing, so blank aborts the ESC command.
F1 / shift-F1 / ctrl-F1 / alt-F1 (PC)
Display quick help line explaining assignment of function keys.

MSDOS only

Screen size change functions
MSDOS screen size changes depend on a mode table contained in the source file keydefs.c.
In the presence of a TSR driver which can change fonts and screen modes while running a program (e.g. the excellent VGAMAX), the actual change effective may occasionally be unexpected. Mined does however recognize those changes and adjusts its conception of screen size appropriately, although only after the next character being input.

ESC %
Change video mode to the mode with the next smaller total resolution (lines * columns).
ESC &
Change video mode to the mode with the next higher total resolution.
ESC l
Change video lines mode to the mode with the next smaller number of lines but same number of columns. (The number of lines is first tried to be decreased within the current video mode. If it is already the lowest, the next video mode is chosen.)
ESC L
Change video lines mode to the mode with the next higher number of lines but same number of columns.
Alt-F9 / ctrl-F9
Switch between highest and lowest line number modes / circle through all line number modes within the current basic screen mode.
HOP ESC %/&/l/L
Several other video mode settings are prompted for (experimental).


emacs mode (-e)

This mode is in beta state. In emacs mode, emacs command key assignments to control keys, ESC (Meta commands) and ^X (C-X commands) are configured. In addition, the following emacs-compatible changes apply:
  • The mined ESC commands can be reached via Meta-x. (Function keys remain unaffected.)
  • The Delete key (on the small keypad) is configured to delete the previous character.
  • The control key insertion prefix is ^Q.
  • The quit character (e.g. for the prompt line) is ^G.
  • The emacs multiple buffer ring is fully enabled.
  • Paragraph justification mode is set to consider an empty line as paragraph separation by default.
  • mined ESC commands can be reached via M-x (alt-X).
  • ^^ (C-^, control-^) is configured as an additional HOP key.
  • keyboard mapping (input method) can be toggled with ^\

Command overview:

^A, ^B, ^E, ^F, ^N, ^P, ^V, M-v, M-b, M-f, M-a, M-e, M-< , M->, ^X[, ^X]
cursor and screen movement
^D
delete character
^O
insert new line
^Q
insert literal character

^@
mark position
^W / M-w
cut / copy to buffer
^K
delete to end of line / delete line end, and append to buffer
M-d / M-k
delete word / delete end of sentence, and append to buffer
^Y
paste buffer
M-y
paste previous buffer, replacing text just pasted

M-u
transform word upper-case
M-l
transform word lower-case
M-c
transform word capitalised (initial upper-case)

^S, ^R
search forward / reverse
M-%
replace with confirmation
M-.
search for identifier definition (using tags file)

^X^S, ^Xs
save file
^X^W
save file as (using different name)
^X^F
edit other file (prompts for name)
^X^B
edit previous file (among those listed on command line)
^X^C
exit editor, saving edited text
^Xk
quit editor, discard edited text (but confirms)
^Xi
insert file

^X=
display file statistics
^L
refresh display
^U, ^X^[
repeat (not as generic numeric command parameter)
^H
help
^Z, M-z, ^X^Z
suspend editor

^\ (mined add-on)
toggle keyboard mapping (input method)
^^ (mined add-on)
HOP (generic function amplifier / modifier)
M-x (mined add-on)
invoke mined ESC command


WordStar mode (-W) key assignments

The usual Escape commands and function key assignments of mined also apply in WordStar mode.
In prefixed two-key commands, the control state and case of the second key does not matter, e.g. ^K^B, ^KB and ^Kb are identical.
^S, ^D, ^E, ^X, ^A, ^F, ^R, ^C, ^W, ^Z, ^H
cursor and screen movement
^G
delete character
^T
delete word
^Y
delete line
^Q^Y
delete to end of line
^N
insert new line
^P
insert control character
^Q^W, ^Q^Z
scroll multiple screen lines

^Q^F
find
^Q^A
find and replace (with HOP: with confirm)
^L
repeat last search

^Q
HOP key
^Q, ^K, ^O
two-key command prefixes
^Q^Q
repeat following command

^B
paragraph justification (word wrap)
^OL
set left margins
^OG
set left margin for first line of paragraph
^OR
set right margin

^KB
set marker
^QB
goto marker
^Kn
(n=0..9) set marker n
^Qn
(n=0..9) goto marker n

^KK
copy between here and marker (not exactly WS function)
^KC
copy (paste) saved text here (not exactly WS function)
^KY
delete between here and marker (not exactly WS function)
^KV
copy (paste) saved text here (not exactly WS function)
^KW
write paste buffer to file
^KR
read (insert) file here

^KS
write (save) edited text to file
^KD
write (save) edited text to file, edit next file
^KX
exit (and save)
^KQ
quit (don't save)
^KL
change current directory


Environment dependencies and configuration hints

A number of configuration options have already been addressed throughout the manual page. A few more configuration features are mentioned here. For more details, examples, and other display settings see the example script minedenv.sh from the mined distribution.

Terminal environment

The Unix terminal type is determined from the environment variable TERM. In an xterm, window headline and icon text are set to the current filename and "(*)" is added if the text has been modified.

Input control (esp. escape sequences for function keys) is often badly configured in operating system environments; for this reason mined always accepts a wide variety of typical control codes. However, to accomodate some ambiguous cases, the kind of terminal being used can be set with the following variable. Set MINEDTERM=hp for HP terminal windows, set MINEDTERM=siemens for Siemens terminals (9780x); MINEDTERM=vt100 is automatically assumed if the TERM variable starts with "vt100".

Locale configuration

For configuration of the character encoding to be used, environment variables may be defined. Mined accepts both explicit encoding suffixes (starting with ".") or, if none are specified, also some region suffixes (starting with "_"). The following table lists detected encodings in dependence of recognized suffixes:
Unicode: UTF-8 suffixes: .UTF-8 / .utf8
Traditional Chinese (Hongkong): Big5 with HKSCS suffixes: .BIG5* / .Big5* / _HK / _TW (_TW ambiguous, .euctw may follow)
Simplified Chinese: GB18030 (includes GBK and GB2312) suffixes: .GB* / .gb* / .EUC-CN / .euccn / _CN
Traditional Chinese (Taiwan): CNS (EUC-TW) suffixes: .EUC-TW / .euctw
Japanese: JIS / EUC-JP suffixes: .EUC-JP / .eucjp / .euc (.euc ambiguous, kr/tw/cn may follow)
Japanese: Shift-JIS suffixes: .Shift_JIS
Korean Unified Hangul: UHC (includes EUC-KR) suffixes: .UHC / .EUC-KR / .euckr
Korean: Johab suffixes: .JOHAB

One of the problems with locale conventions is that there is no explicit distinction between text encoding and terminal encoding although this is obviously a very different thing and mixed combinations of both may occur and are actually supported by mined. For this reason, mined follows a pragmatic approach:
For text encoding, mined checks the variables LANG, LC_ALL, LC_CTYPE in this order.
For terminal encoding, mined checks the variables LC_ALL, LC_CTYPE, LANG in this order.
Thus it is possible to specify for example that mined runs in a UTF-8 terminal and should assume GB text encoding by default:
LC_CTYPE=whatever.UTF8
LANG=zh_CN.gbk

An encoding specification with the -E parameter takes precedence over environment configuration.

If mined applies auto-detection of CJK encoding, it can be configured which encodings may be detected. For this purpose, set the MINEDDETECT environment variable to the list of encoding indications (capital letters as listed for the -E parameter) to disable auto-detection of other encodings. UTF-8 auto-detection cannot be disabled this way.

Work-around support to enable 8-bit character set on weird terminals

For dumb 7 bit terminals which have an alternative character set that can be displayed simultaneously with the default set, there is optional output translation which embeds diacritic characters into the respective code switching sequences. To enable output character transformation, set the environment variable MINEDOUT to contain the upper half (with respect to an 8 bit character set) of the translation table into the terminal's alternate character set. (Character set switching will be done as specified in the termcap (as/ae) or terminfo (smacs/rmacs) entry.) An example setting of MINEDOUT is included in the environment sample file minedenv.sh for Siemens 9780x terminals.

Concerning some especially stupid terminal drivers

There used to be terminal drivers which make use of the soft handshake mechanism by exchange of ^S and ^Q characters but yet pass them through to application programs which is quite stupid. If it is necessary to ignore such hazardous ^S and ^Q keys, the environment variable NoCtrlSQ or NoControlSQ must be set. Mined will then not disable the tty channel soft handshake setting either.

Keyboard mapping pre-selection

With the environment variable MINEDKEYMAP the active or standby mapping can be preselected. The value is a two-letter script tag to set the active mapping, or it is prepended with "-" to set the standby mapping.
Example:
export MINEDKEYMAP=-gr will set Greek keyboard mapping standby.
Known script tags are: ar (Arabic), gr or el (Greek), he (Hebrew), cy or ru (Cyrillic).

Smart quotes style configuration

Smart quotes style can also be preselected with the environment variable MINEDQUOTES which should then contain the opening/closing quote pair or just the opening quote mark (double or single quotes).
Example:
export MINEDQUOTES="»" sets these »inwards« and according single smart quotes.
export MINEDQUOTES="»»" sets these »Swedish» and according single smart quotes.
The value of the MINEDQUOTES variable must be encoded in UTF-8.

Keypad configuration

In order to enable the Alt key modifier for quicker entry of "ESC" commands, or the keypad "5" key as a HOP key, or the Scroll Lock or Pause key as a HOP key (for convenience on notebooks), you may have to add some X configuration. Also you may want to distinguish "Home" and "End" keys on the two keypads of PC keyboards in order to enhance keypad value (double assignment of functions to keypads is a waste of resources). And you may want to enable control and shift modifiers for keypad and function keys. See the example file Xdefaults.mined in the distribution for suggestions.

Line contents indications

Long lines

Lines which are too long for the screen are usually indicated by a '»' double right angle (guillemot) character. This marker can be changed by setting the environment variable MINEDSHIFT. If MINEDSHIFT contains a second character, that one will be used to indicate lines shifted out left off the screen.

Line ends

The line-end is usually marked by a "«" double left angle character. This can be changed with the environment variable MINEDRET, its contents (one character) is placed as an indicator at the end of every text line on screen (so you can see how many blanks there are). If MINEDRET contains another character it is used to fill the rest of the screen line, and a third character would terminate the indication line at the screen border. "··«" is a nice setting for people who used to work at Siemens terminals.

Paragraph ends

With the option "p", mined displays different indicators for line ends and paragraph ends. As with word-wrap, a paragraph is defined to continue while a line ends with a space character. The default display character is "¶". It can be changed with the environment variable MINEDPARA.

TAB characters

TAB characters are usually indicated by a sequence of '·' characters. This can be changed by the environment variable MINEDTAB. More than one indication is possible.

UTF-8 indicators

The contents for the special indicator variables is taken to be Latin-1 encoded, even if mined runs in UTF-8 modes. To use UTF-8 characters for these indications, additional variables MINEDUTFRET, MINEDUTFTAB, MINEDUTFPARA may be used. For details, see the example script minedenv.sh.

Display mode of indicators

It is recommended to display these indicator characters in a dim display mode to prevent distraction from the text contents. The default is a red colour which is a moderate dark red in xterm. The display mode can be used by placing the code part of an ANSI display control sequence in the environment variable MINEDDIM. E.g., MINEDDIM=31 would select the default mode, red foreground; MINEDDIM="32;40" would display indicators in green on black.

Unicode characters

For a description of special display indications in UTF-8 text editing mode see "UTF-8 display" above. The highlighting mode of UTF-8 display in a Latin-1 terminal, or of illegal UTF-8 sequences in general, can be configured with the variable MINEDUNI.

Help display configuration

Mined can be told where to find its online help file by the environment variables MINEDHELPFILE (for display, the program "less" is used). Mined also looks for the file in a couple of typical installation locations so online help may be available without this variable configured.

Print command configuration

The environment variable MINEDPRINT may contain a print command to be used instead of the default (which is operating system dependant). See minedenv.sh for details.

Buffer file names

For the paste buffer, the inter-window paste buffer, and the panic file, environment information as usual on the respective operating system is used to build the names. See the section on FILES below.


Compile-time configuration

Script highlighting

The subdirectory src of the mined distribution contains a file colours.cfg; it contains entries with the script name (as listed in the Unicode data file Scripts.txt), white space, and a colour index into the xterm 256-colour mode.
Edit this file before building mined to adapt coloured script display to your preferences.

Keyboard mapping

The subdirectory src of the mined distribution contains a file keymaps.cfg and a script mkkbmap; go into the src directory and use the script to generate additional keyboard mappings: The parameter to the mkkbmap script can be one of Each successful generation of a mapping table adds an entry to the configuration file keymaps.cfg; the entry is however initially disabled as it usually needs manual adjustment: edit the configuration file; enable the new entry by removing the leading '#' character, check the first element which will be the name of the mapping to appear in the keyboard mapping menu, check the last element of the entry which is a two-letter shortcut and must be unique for all mappings, then move the entry to the position where you want it to appear in the menu. You can also group mappings by adding "-" lines in this configuration file.


MSDOS-only notes

Highlight mode: The ANSI codes for selecting normal and exposed display can be chosen with the environment variable MINEDCOL. The two selections are separated by a space. Each selection is a semicolon-separated list of the code values. The default behaviour corresponds to the setting Example: Green on red text, red on green status:

For command line options, "/" can be used instead of "-".

The "ESC -" command cannot go back within a group of files named by the same wildcard expression. It goes to the previous file name (or wildcard expression) instead.

Enabling the keypad HOP key: If you have a very old and crappy BIOS, you may have to enable use of the cursor block "5" key (for use as a HOP key) with a TSR driver (ENHKBD.COM) or an enhanced keyboard driver. (Older PC keyboard drivers were often so ignorant to forbid you to use that key.)

DOS binaries: A DOS version (precompiled with djgcc) is available for download from the mined web site for users who want a quick MSDOS binary. It is a "dual-mode" executable which runs on plain DOS and also supports long file names in a Windows 98/2000/... DOS box (not NT4.0).
Users of the cygwin or EMX environments can easily compile a version themselves. For hints on compiling MSDOS versions, see also the file "compilation" in the "doc" subdirectory of the mined distribution.

The cygwin environment provides an emulation of a Unix 8-Bit character set so diacritic characters entered in this version are different from those entered in the EMX or djgcc or Turbo-C versions. Especially in DOS versions other than cygwin, diacritic input and display in UTF-8 text mode does not work as would be expected.

Cygwin seems to have a bug with button identification, so the right mouse button doesn't work as expected in the text area.
In order to enable mouse use in a DOS box, deactivate "QuickEdit mode" in the properties menu.

When compiled with Turbo-C, the file size being edited is limited to 200KB to 500KB (depending on average line length and number of lines).

The Turbo-C version is currently configured to handle screen output using the "conio" module. It used to use an ANSI driver which can be reactivated on request if anyone desires. The disadvantage of conio is that it doesn't handle arbitrary screen modes and sizes whereas good ANSI drivers support them all (or is there any workaround?) The following remarks apply to ANSI mode only:

(ANSI output only) The default colour setting depends on an extended ANSI driver (like NNANSI) as does the scroll down function anyway. Unfortunately, there is no way to find out the current colour setting nor is there an inverse video mode in many ANSI drivers (only a fixed black on white mode) so that it is impossible to implement just inverse display for highlighting. Therefore, if mined thinks to see an ANSI driver of the simpler kind, it will change its colour setting defaults. In any case, these can be overridden with the MINEDCOL variable.

(ANSI output only) Recommended ANSI driver:

Mined tries to analyse the ANSI drivers capabilities by checking some control sequences. This works, however, only if the ANSI driver is at least able to send cursor position reports. For primitive ANSI drivers that cannot even do that, mined's operation can be ensured with an emergency procedure: A faked pseudo-report should be stuffed into mined as its first input (with some key-stuffing program) and mined will use no further cursor position requests. It will also assume a simple ANSI driver then. The faked report should consist of the screen size in lines and columns, embedded at the positions of the ANSI cursor report sequence but with different surrounding characters. For an invocation of mined on a 25 lines and 80 columns screen a batch file for this would look like:
    keypress xx25x80xx
    mined %1 %2 %3 %4 %5 %6 %7 %8 %9


DIAGNOSTICS

In all cases where it is considered sensible, the appropriate message of a system error occurred is displayed (instead of printing numerical hieroglyphs or indistinguished commonplace messages as many other UNIX tools do).


BUGS

Search expressions ä* with non-ASCII characters in Unicode may behave weird (they "find" some more characters).

In an extremely narrow terminal window (less than 8 characters), if lines are shifted out of the display, moving the cursor around may cause positioning errors and display garbage.

(Unix:) Mined cannot edit a pipe file and hangs if you try to do so. (But it can insert from, or write to, a pipe and is interruptable by ^\ then.) Mined can neither edit nor insert or write to device files.

(MSDOS:) Pipe input does not work. I don't know why.

(MSDOS:) These special character handling problems mainly apply to the Turbo-C version only: Typing of control-P while display output is active (i.e., during screen paging) can hang the system. Typing of control-C or control-Break while display output is active can at least leave some garbage on the screen. Control-S may stop screen output until control-Q is typed. Typing of control-P, control-C, or control-Break while a search operation is active can be desastrous. (Can anyone tell me how to disable BIOS/MSDOS interpretation of these characters from Turbo-C?)


ENVIRONMENT

Environment variables for configuration of mined are listed in "minedenv.sh" together with explanations and suggested values. I recommend to include that file from the login profile (e.g. "source .../minedenv.sh" in "$HOME/.profile").
Further variables used by mined in the usual meaning are:
HOME
USER
SHELL
SYS$SCRATCH (VMS)
TEMP (MSDOS)
TMP
TMPDIR
TERM
Terminal type to be assumed.
windir
Used to determine if it runs under MS Windows and set some defaults (screen output delay) accordingly.

FILES

Unix

$MINEDHELPFILE
online help file, first attempt (to find it)
/usr/local/share/help/mined.hlp
online help file, next attempt
/usr/local/info/mined.hlp
online help file, next attempt
/usr/share/doc/packages/mined/mined.hlp
online help file, next attempt
/opt/gnu/share/help/mined.hlp
online help file, next attempt
/opt/gnu/info/mined.hlp
online help file, next attempt
$MINEDTMP
directory for auxiliary files, first attempt
Using this variable, you can establish copy and paste among machines that share network directories but are normally configured to use separate (usually local) temporary directories.
$TMPDIR
directory for auxiliary files, next attempt
$TMP
directory for auxiliary files, next attempt
$TEMP
directory for auxiliary files, next attempt
/usr/tmp
directory for auxiliary files, next attempt
/tmp
directory for auxiliary files, next attempt
$MINEDUSER
user name assumed instead of $USER for building auxiliary file names; using this, common copy-and-paste buffers can be used on a network file system from different machines where the user possibly has different user names
minedbuf.< USER >.< PID >.< NN >
temporary file for paste buffer
minedbuf.< USER >
file for inter-window paste buffer
minedpanic.< USER >.< PID >
panic file to rescue text in case of crash or external signal caught

VMS

SYS$MINEDTMP:$MINEDBUF$user.pid.nn
paste buffer, first attempt
SYS$SCRATCH:$MINEDBUF$user.pid.nn
paste buffer, next attempt
SYS$SCRATCH:$MINEDPANIC$user.pid
panic file, first attempt
SYS$MINEDTMP:$MINEDBUF$user
inter-window paste buffer, first attempt
SYS$SCRATCH:$MINEDBUF$user
inter-window paste buffer, next attempt
SYS$SCRATCH:$MINEDPANIC$user.pid
panic file, next attempt
If SYS$SCRATCH is not available, SYS$LOGIN is used instead.

MSDOS

%MINEDTMP%\minedbuf.nn
paste buffer
%MINEDTMP%\minedbuf
inter-window paste buffer
%MINEDTMP%\mined-pa.nic
panic file
If %MINEDTMP% is not available, %TEMP% or %TMP% or \ are used.


AUTHOR AND ACKNOWLEDGEMENTS

Long ago, the initial version of mined was written for the Minix educational operating system by Michiel Huisjes. It was adapted to Unix by Achim Müller who added termcap support. Mined was later debugged, partly rewritten and enhanced and is now maintained by Thomas Wolff.
Please send comments, suggestions, bug reports to mined@towo.net.
  • Thanks to Nadim Shaikli < shaikli@yahoo.com > for discussion of right-to-left issues and interworking with mlterm.
  • Thanks to Mike Fabian < mfabian@suse.de > for making the RPM archive.
  • Thanks to Ziying Sherwin < sherwin@lhc.nlm.nih.gov > and R. P. Channing Rodgers < rodgers@hume.nlm.nih.gov > for suggestions and information about CJK input method support and multiple choice handling (pick lists).
  • Thanks to Tobias Ernst < tobias_ernst@eml.cc > for providing a Mac OS X makefile and suggestion and information to implement Emacs command mode.
  • Thanks to 吴咏炜 (Wu Yongwei) < yongwei@eastday.com > for suggestions and information about Pinyin input methods, for discussion about keyboard mappings for CJK punctuation, and for further maintaining the Pinyin keyboard mapping.