mcedit - Full featured terminal text editor for Unix-like
systems.
USAGE
mcedit [[+number] file [-bcCdfhstVx?]]
DESCRIPTION
Mcedit is a link to mc, the Midnight Commander, forcing it
to immediately start its internal editor. The editor is a
terminal version of the cooledit standalone X Window edi
tor.
OPTIONS
+number
Go to the line specified by number (do not insert
a space between the "+" sign and the number).
-b Forces black and white display.
-c Force color mode on terminals where mcedit defaults
to black and white.
-C <keyword>=<FGcolor>,<BGcolor>:<keyword>= ...
Used to specify a different color set, where key
word is one of normal, selected, marked, markse
lect, errors, reverse menu, menusel, menuhot,
menuhotsel and gauge. The colors are optional and
are one of black, gray, red, brightred, green,
brightgreen, brown, yellow, blue, brightblue,
magenta, brightmagenta, cyan, brightcyan, lightgray
and white. See the Colors section in mc.1 for more
information.
-d Disables mouse support.
-f Displays the compiled-in search paths for Midnight
Commander files.
-t Used only if the code was compiled with Slang and
terminfo: it makes the Midnight Commander use the
value of the TERMCAP variable for the terminal
information instead of the information on the sys
tem wide terminal database
-V Displays the version of the program.
-x Forces xterm mode. Used when running on xterm-
capable terminals (two screen modes, and able to
send mouse escape sequences).
Features
The internal file editor provides most of the features of
limit of sixteen megabytes and edits binary files flaw
lessly. The features it presently supports are: Block
copy, move, delete, cut, paste; key for key undo ; pull-
down menus; file insertion; macro definition; regular
expression search and replace (and our own scanf-printf
search and replace); shift-arrow MSW-MAC text highlighting
(for the linux console only); insert-overwrite toggle;
word-wrap; a variety of tabbing options; syntax highlight
ing for various file types; and an option to pipe text
blocks through shell commands like indent and ispell.
Keys
The editor is very easy to use and requires no tutoring.
To see what keys do what, just consult the appropriate
pull-down menu. Other keys are: Shift movement keys do
text highlighting (Linux console only). Ctrl-Ins copies
to the file ~/.cedit/cooledit.clip, and Shift-Ins pastes
from ~/.cedit/cooledit.clip. Shift-Del cuts to
~/.cedit/cooledit.clip, and Ctrl-Del deletes highlighted
text - all linux console only. The completion key (see
mc.1) also does a hard return without an automatic indent.
Mouse highlighting also works, and you can override the
mouse as usual by holding down the shift key while drag
ging the mouse to let normal terminal mouse highlighting
work.
To define a macro, press Ctrl-R and then type out the key
strokes you want to be executed. Press Ctrl-R again when
finished. You can then assign the macro to any key you
like by pressing that key. The macro is executed when you
press Ctrl-A and then the assigned key. The macro is also
executed if you press Meta, Ctrl, or Esc and the assigned
key, provided that the key is not used for any other func
tion. Once defined, the macro commands go into the file
~/.cedit/cooledit.macros. Do NOT edit this file unless
you are not going to use macros again in the same editing
session, because Mcedit caches macro key defines in mem
ory. Mcedit now overwrites a macro if a macro with the
same key already exists, so you won't have to edit this
file. You will also have to restart other running editors
for macros to take effect.
F19 will format C code when it is highlighted. For this to
work, make an executable file called .cedit/edit.indent.rc
in your home directory containing the following:
#!/bin/sh
# Use $HOME instead of ~ if this doesn't work.
# You may also have to use a different redirection
# syntax for some machines.
/usr/bin/indent -kr -pcs ~/.cedit/cooledit.block >& /dev/null
C-p will run ispell on a block of text in a similar way.
The file is .cedit/edit.spell.rc
#!/bin/sh
# Use $HOME instead of ~ if this doesn't work.
# You may also have to use a different redirection
# syntax for some machines.
/usr/local/bin/ispell ~/.cedit/cooledit.block >& /dev/null
cat /dev/null > ~/.cedit/cooledit.error
Redefining Keys
Keys may be redefined from the Midnight Commander options
menu.
SYNTAX HIGHLIGHTING
As of version 3.6.0, cooledit has syntax highlighting.
This means that keywords and contexts (like C comments,
string constants, etc) are highlighted in different
colours. The following section explains the format of the
file ~/.cedit/syntax.
The file ~/.cedit/syntax is rescanned on opening of a any
new editor file. The file contains rules for highlighting,
each of which is given on a separate line, and define
which keywords will be highlighted to what colour. The
file is also divided into sections, each beginning with a
line with the file command, followed by a regular expres
sion. The regular expression dictates the file name that
that set of rules applies to. Following this is a descrip
tion to be printed on the left of the editor window
explaining the file type to the user. A third optional
argument is a regular expression to match the first line
of text of the file. If either the file name matches, or
the first line of text, then those rules will be loaded.
A section ends with the start of a new section. Each sec
tion is divided into contexts, and each context contains
rules. A context is a scope within the text that a partic
ular set of rules belongs to. For instance, the region
within a C style comment (i.e. between /* and */) has its
own colour. This is a context, although it will have no
further rules inside it because there is probably nothing
that we want highlighted within a C comment.
A trivial C programming section might look like this:
file .\*\\.c C\sProgram\sFile (#include|/\\\*)
wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_
context default
keyword whole if 24
keyword whole else 24
keyword whole for 24
keyword whole while 24
keyword whole do 24
keyword whole switch 24
keyword whole case 24
keyword whole static 24
keyword whole extern 24
keyword { 14
keyword } 14
keyword '*' 6
# C comments
context /\* \*/ 22
# C preprocessor directives
context linestart # \n 18
keyword \\\n 24
# C string constants
context " " 6
keyword %d 24
keyword %s 24
keyword %c 24
keyword \\" 24
Each context starts with a line of the form:
context [exclusive] [whole|wholeright|wholeleft] [lines
tart] delim [linestart] delim [foreground] [background]
One exception is the first context. It must start with the
command
context default [foreground] [background]
or else cooledit will return an error.
The linestart option dictates that delim must start at the
beginning of a line.
The whole option tells that delim must be a whole word.
What constitutes a whole word are a set of characters that
can be changed at any point in the file with the
wholechars command. The wholechars command at the top just
sets the set exactly to its default and could therefore
have been omitted. To specify that a word must be whole on
the left only, you can use the wholeleft option, and simi
larly on the right. The left and right set of characters
can be set separately with,
wholechars [left|right] characters
The exclusive option causes the text between the delim
iters to be highlighted, but not the delimiters
Each rule is a line of the form:
keyword [whole|wholeright|wholeleft] [linestart] string
foreground [background]
Context or keyword strings are interpreted so that you can
include tabs and spaces with the sequences \t and \s. New
lines and the \ are specified with \n and \\ respectively.
Since whitespace is used as a separator, it may not be
used explicitedly. Also, \* must be used to specify a *.
The * itself is a wildcard that matches any length of
characters. For example,
keyword '*' 6
colours all C single character constants green. You could
also have used
keyword "*" 6
to colour string constants, except that the matched string
may not cross newlines. The wildcard may be used within
context delimiters as well, but you cannot have a wildcard
as the last or first character.
Important to note is the line
keyword \\\n 24
This line defines a keyword containing the \ and newline
characters. Because keywords have a higher precedence
than context delimiters, this keyword prevents the context
from ending at the end of a line if the line ends in a \
thus allowing C preprocessor directive to continue across
multiple lines.
The colours themselves are numbered 0 to 26 and are
explained below in FURTHER BEHAVIORAL OPTIONS. You can
also use any of the named colors specified in
/usr/lib/X11/rgb.txt, though only one word versions of
them. It is better to stick to the numerical colors to
limit use of the color palette.
Comments may be included on a line of there own and begin
with a #.
Because of the simplicity of the implementation, there are
a few intricacies that will not be coped with correctly
but these are a minor irritation. On the whole, a broad
spectrum of quite complicated situations are handled with
these simple rules. It is a good idea to take a look at
the syntax file to see some of the nifty tricks you can do
with a little imagination. If you can't get by with the
rules I have coded, and you think you have a rule that
would be useful, please email me with your request. How
ever, do not ask for regular expression support, because
this is flatly impossible.
A useful hint is to work with as much as possible with the
implementation can't cope with. Also remember that the aim
of syntax highlighting is to make programming less prone
to error, not to make code look pretty.
COLORS
The default colors may be changed by appending to the
MC_COLOR_TABLE environment variable. Foreground and back
ground colors pairs may be specified for example with:
MC_COLOR_TABLE="$MC_COLOR_TABLE:editnormal=lightgray,black:editbold=yellow,black:editmarked=black,cyan"
OPTIONS
Most options can now be set from the editors options dia
log box. See the Options menu. The following options are
defined in You can modify them to change the editor behav
ior, by editing the file. Unless specified, a 1 sets the
option to on, and a 0 sets it to off, as is usual.
use_internal_edit
This option is ignored when invoking mcedit.
editor_key_emulation
1 for Emacs keys, and 0 for normal Cooledit keys.
editor_tab_spacing
Interpret the tab character as being of this
length. Default is 8. You should avoid using other
than 8 since most other editors and text viewers
assume a tab spacing of 8. Use edi
tor_fake_half_tabs to simulate a smaller tab spac
ing.
editor_fill_tabs_with_spaces
Never insert a tab space. Rather insert spaces
(ascii 20h) to fill to the desired tab size.
editor_return_does_auto_indent
Pressing return will tab across to match the inden
tation of the first line above that has text on it.
editor_backspace_through_tabs
Make a single backspace delete all the space to the
left margin if there is no text between the cursor
and the left margin.
editor_fake_half_tabs
This will emulate a half tab for those who want to
program with a tab spacing of 4, but do not want
the tab size changed from 8 (so that the code will
be formatted the same when displayed by other pro
grams). When editing between text and the left
space were 4, while actually using spaces and nor
mal tabs for an optimal fill. When editing any
where else, a normal tab is inserted.
editor_option_save_mode
(0, 1 or 2.) The save mode (see the options menu
also) allows you to change the method of saving a
file. Quick save (0) saves the file by immediately,
truncating the disk file to zero length (i.e. eras
ing it) and the writing the editor contents to the
file. This method is fast, but dangerous, since a
system error during a file save will leave the file
only partially written, possibly rendering the data
irretrievable. When saving, the safe save (1)
option enables creation of a temporary file into
which the file contents are first written. In the
event of an problem, the original file is
untouched. When the temporary file is successfully
written, it is renamed to the name of the original
file, thus replacing it. The safest method is cre
ate backups (2). Where a backup file is created
before any changes are made. You can specify your
own backup file extension in the dialog. Note that
saving twice will replace your backup as well as
your original file.
Miscellaneous
(Scanf search and replace have previously not worked prop
erly. With this release, problems with search and replace
have been fixed.)
You can use scanf search and replace to search and replace
a C format string. First take a look at the sscanf and
sprintf man pages to see what a format string is and how
it works. An example is as follows: Suppose you want to
replace all occurrences of say, an open bracket, three
comma separated numbers, and a close bracket, with the
word apples, the third number, the word oranges and then
the second number, you would fill in the Replace dialog
box as follows:
Enter search string
(%d,%d,%d)
Enter replace string
apples %d oranges %d
Enter replacement argument order
3,2
The last line specifies that the third and then the second
number are to be used in place of the first and second.
It is advisable to use this feature with Prompt On Replace
number of arguments found matches the number given, which
is not always a real match. Scanf also treats whitespace
as being elastic. Note that the scanf format %[ is very
useful for scanning strings, and whitespace.
The editor also displays non-us characters (160+). When
editing binary files, you should set display bits to 7
bits in the Midnight Commander options menu to keep the
spacing clean.
FILES
/usr/mc.hlp
The help file for the program.
/usr/lib/mc/mc.ini
The default system-wide setup for the Midnight Com
mander, used only if the user lacks his own
~/.mc.ini file.
/usr/lib/mc/mc.lib
Global settings for the Midnight Commander. Set
tings in this file are global to any Midnight Com
mander, it is useful to define site-global terminal
settings.
$HOME/.mc.ini
User's own setup. If this file is present then the
setup is loaded from here instead of the system-
wide startup file.
$HOME/.cedit/
User's own temporary directory where block commands
are processed and saved.
LICENSE
This program is distributed under the terms of the GNU
General Public License as published by the Free Software
Foundation. See the built-in help of the Midnight Comman
der for details on the License and the lack of warranty.
AVAILABILITY
The latest version of this program can be found at
ftp.nuclecu.unam.mx in the directory /linux/local and from
Europe at sunsite.mff.cuni.cz in the directory /GNU/mc and
at ftp.teuto.de in the directory /lmb/mc. The X Window
/pub/Linux/apps/editors/X or at argeas.argos.hol.gr in
/pub/unix/cooledit.
SEE ALSO
cooledit(1), mc(1), gpm(1), terminfo(1), scanf(3).
AUTHORS
Paul Sheer (psheer@obsidian.co.za) is the developer of the
Midnight Commander's internal editor.
BUGS
See the file README.edit in the distribution for more
information.
Man(1) output converted with
man2html