mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-23 12:56:51 +03:00
f56c86893e
Remove irrelevant part about X colors.
481 lines
15 KiB
Groff
481 lines
15 KiB
Groff
.TH MCEDIT 1 "January 2003" "MC Version 4.6.0" "GNU Midnight Commander"
|
|
.SH NAME
|
|
mcedit \- Internal file viewer of GNU Midnight Commander.
|
|
.SH USAGE
|
|
.B mcedit
|
|
[\-bcCdfhstVx?] [+number] file
|
|
.SH DESCRIPTION
|
|
.LP
|
|
mcedit is a link to
|
|
.BR mc ,
|
|
the main GNU Midnight Commander executable. Executing GNU Midnight
|
|
Commander under this name requests staring the internal editor and
|
|
opening the
|
|
.I file
|
|
specified on the command line. The editor is based on the terminal
|
|
version of
|
|
.B cooledit
|
|
\- standalone editor for X Window System.
|
|
.SH OPTIONS
|
|
.TP
|
|
.I "+number"
|
|
Go to the line specified by number (do not put a space between the
|
|
.I "+"
|
|
sign and the number).
|
|
.TP
|
|
.I "\-b"
|
|
Force black and white display.
|
|
.TP
|
|
.I "\-c"
|
|
Force color mode on terminals where
|
|
.B mcedit
|
|
defaults to black and white.
|
|
.TP
|
|
.I "\-C <keyword>=<FGcolor>,<BGcolor>:<keyword>= ..."
|
|
Specify a different color set. See the
|
|
.B Colors
|
|
section in mc(1) for more information.
|
|
.TP
|
|
.I "\-d"
|
|
Disable mouse support.
|
|
.TP
|
|
.I "\-f"
|
|
Display the compiled-in search path for GNU Midnight Commander data
|
|
files.
|
|
.TP
|
|
.I "\-t"
|
|
Used only if the code was compiled with Slang and terminfo: it makes
|
|
the Midnight Commander use the value of the
|
|
.B TERMCAP
|
|
variable for the terminal information instead of the information on
|
|
the system wide terminal database.
|
|
.TP
|
|
.I "\-V"
|
|
Display the version of the program.
|
|
.TP
|
|
.I "\-x"
|
|
Force xterm mode. Used when running on xterm-capable terminals (two
|
|
screen modes, and able to send mouse escape sequences).
|
|
.PP
|
|
.SH FEATURES
|
|
The internal file editor provides most of the features of common full
|
|
screen editors. It has an extendable file size limit of sixteen
|
|
megabytes and edits binary files flawlessly. The features it presently
|
|
supports are: Block copy, move, delete, cut, paste;
|
|
.I 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 (if supported by the terminal);
|
|
insert-overwrite toggle; word-wrap; a variety of tabbing options; syntax
|
|
highlighting for various file types; and an option to pipe text blocks
|
|
through shell commands like indent and ispell.
|
|
.PP
|
|
.SH KEYS
|
|
The editor is easy to use and can be used without learning. To see what
|
|
keys do what, just consult the appropriate pull-down menu. Other keys
|
|
are: Shift movement keys do text highlighting,
|
|
.B Ctrl-Ins
|
|
copies to the file
|
|
.BR ~/.mc/cedit/cooledit.clip ,
|
|
and
|
|
.B Shift-Ins
|
|
pastes from
|
|
.BR ~/.mc/cedit/cooledit.clip .
|
|
.B Shift-Del
|
|
cuts to
|
|
.BR ~/.mc/cedit/cooledit.clip ,
|
|
and
|
|
.B Ctrl-Del
|
|
deletes highlighted text - all if supported by the terminal. Mouse
|
|
highlighting also works, and you can override the mouse as usual by
|
|
holding down the shift key while dragging the mouse to let normal
|
|
terminal mouse highlighting work.
|
|
.PP
|
|
The completion key (usually
|
|
.B "Alt-Tab"
|
|
or
|
|
.BR "Escape-Tab" )
|
|
completes the word under the cursor using the words used earlier in the
|
|
file.
|
|
.PP
|
|
To define a macro, press
|
|
.B Ctrl-R
|
|
and then type out the key
|
|
strokes you want to be executed. Press
|
|
.B 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
|
|
.B 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 function. Once defined, the macro commands go into
|
|
the file
|
|
.BR ~/.mc/cedit/cooledit.macros .
|
|
Do NOT edit this file if you are going to use macros again in the same
|
|
editing session, because
|
|
.B mcedit
|
|
caches macro key defines in memory.
|
|
.B 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.
|
|
.P
|
|
.B F19
|
|
will format C, C++, Java or HTML code when it is highlighted. An executable
|
|
file called
|
|
.B ~/.mc/cedit/edit.indent.rc
|
|
will be created for you from the default template. Feel free to edit it
|
|
if you need.
|
|
.PP
|
|
.B C-p
|
|
will run ispell on a block of text in a similar way. The script file
|
|
will be called
|
|
.BR ~/.mc/cedit/edit.spell.rc .
|
|
.PP
|
|
Keys can be redefined from the Midnight Commander options menu.
|
|
.PP
|
|
.SH SYNTAX HIGHLIGHTING
|
|
.B mcedit
|
|
supports syntax highlighting. This means that keywords and contexts
|
|
(like C comments, string constants, etc) are highlighted in different
|
|
colors. The following section explains the format of the file
|
|
.BR ~/.mc/cedit/Syntax .
|
|
The file
|
|
.B ~/.mc/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 color. The file is
|
|
also divided into sections, each beginning with a line with the
|
|
.B file
|
|
command, followed by a regular expression. The regular expression
|
|
dictates the file name that that set of rules applies to. Following
|
|
this is a description 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.
|
|
.PP
|
|
A section ends with the start of a new section. Each section is divided
|
|
into contexts, and each context contains rules. A context is a scope
|
|
within the text that a particular set of rules belongs to. For instance,
|
|
the region within a C style comment (i.e. between
|
|
.B /*
|
|
and
|
|
.BR */ )
|
|
has its own color. 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.
|
|
.PP
|
|
A trivial C programming section might look like this:
|
|
.PP
|
|
.nf
|
|
file .\\*\\\\.c C\\sProgram\\sFile (#include|/\\\\\\*)
|
|
|
|
wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_
|
|
|
|
# default colors
|
|
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
|
|
.fi
|
|
.PP
|
|
Each context starts with a line of the form:
|
|
.br
|
|
.B context
|
|
.RB [ exclusive ]
|
|
.RB [ whole | wholeright | wholeleft ]
|
|
.RB [ linestart ]
|
|
.I delim
|
|
.RB [ linestart ]
|
|
.I delim
|
|
.RI [ foreground ]
|
|
.RI [ background ]
|
|
.br
|
|
One exception is the first context. It must start with the command
|
|
.br
|
|
.B context
|
|
.B default
|
|
.RI [ foreground ]
|
|
.RI [ background ]
|
|
.br
|
|
or else
|
|
.B mcedit
|
|
will report an error. The
|
|
.B linestart
|
|
option dictates that
|
|
.I delim
|
|
must start at the beginning of a line. The
|
|
.B 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
|
|
.B wholechars
|
|
command. The
|
|
.B 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
|
|
.B wholeleft
|
|
option, and similarly on the right. The left and right set of characters
|
|
can be set separately with,
|
|
.br
|
|
.B wholechars
|
|
.RB [ left | right ]
|
|
.I characters
|
|
.PP
|
|
The
|
|
.B exclusive
|
|
option causes the text between the delimiters to be highlighted, but not
|
|
the delimiters themselves.
|
|
.PP
|
|
Each rule is a line of the form:
|
|
.br
|
|
.B keyword
|
|
.RB [ whole | wholeright | wholeleft ]
|
|
.RB [ linestart ]
|
|
.I string
|
|
.I foreground
|
|
.RI [ background ]
|
|
.br
|
|
Context or keyword strings are interpreted, so that you can include
|
|
tabs and spaces with the sequences \\t and \\s. Newlines and the \\ are
|
|
specified with \\n and \\\\ respectively. Since whitespace is used as a
|
|
separator, it may not be used as is. Also, \\* must be used to specify
|
|
a *. The * itself is a wildcard that matches any length of characters.
|
|
For example,
|
|
.nf
|
|
keyword '*' 6
|
|
.fi
|
|
colors all C single character constants green. You could also have
|
|
used
|
|
.nf
|
|
keyword "*" 6
|
|
.fi
|
|
to color 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.
|
|
.PP
|
|
Important to note is the line
|
|
.nf
|
|
keyword \\\\\\n 24
|
|
.fi
|
|
.PP
|
|
This line defines a keyword containing the \\ and newline characters.
|
|
Since the keywords have a higher precedence than the context delimiters,
|
|
this keyword prevents the context from ending at the end of the line if
|
|
the line ends in a \\ thus allowing C preprocessor directive to continue
|
|
across multiple lines.
|
|
.PP
|
|
The possible colors are: black, gray, red, brightred, green,
|
|
brightgreen, brown, yellow, blue, brightblue, magenta, brightmagenta,
|
|
cyan, brightcyan, lightgray and white.
|
|
.PP
|
|
Comments may be put on a separate line starting with the hash sign (#).
|
|
.PP
|
|
Because of the simplicity of the implementation, there are a few
|
|
intricacies that will not be dealt 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. However, do not ask for regular expression
|
|
support, because this is flatly impossible.
|
|
.PP
|
|
A useful hint is to work with as much as possible with the things you
|
|
can do rather than try to do things that this implementation can't deal
|
|
with. Also remember that the aim of syntax highlighting is to make
|
|
programming less prone to error, not to make code look pretty.
|
|
.PP
|
|
.SH COLORS
|
|
The default colors may be changed by appending to the
|
|
.B MC_COLOR_TABLE
|
|
environment variable. Foreground and background colors pairs may be
|
|
specified for example with:
|
|
.PP
|
|
.nf
|
|
MC_COLOR_TABLE="$MC_COLOR_TABLE:\\
|
|
editnormal=lightgray,black:\\
|
|
editbold=yellow,black:\\
|
|
editmarked=black,cyan"
|
|
.fi
|
|
.PP
|
|
.SH OPTIONS
|
|
Most options can now be set from the editors options dialog
|
|
box. See the
|
|
.B Options
|
|
menu. The following options are defined in
|
|
.B ~/.mc/ini
|
|
and have obvious counterparts in the dialog box. You can modify them to
|
|
change the editor behavior, by editing the file. Unless specified, a 1
|
|
sets the option to on, and a 0 sets it to off, as is usual.
|
|
.TP
|
|
.I use_internal_edit
|
|
This option is ignored when invoking
|
|
.BR mcedit .
|
|
.TP
|
|
.I editor_key_emulation
|
|
1 for
|
|
.B Emacs
|
|
keys, and 0 for normal
|
|
.B Cooledit
|
|
keys.
|
|
.TP
|
|
.I 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
|
|
.B editor_fake_half_tabs
|
|
to simulate a smaller tab spacing.
|
|
.TP
|
|
.I editor_fill_tabs_with_spaces
|
|
Never insert a tab space. Rather insert spaces (ascii 20h) to fill to the
|
|
desired tab size.
|
|
.TP
|
|
.I editor_return_does_auto_indent
|
|
Pressing return will tab across to match the indentation
|
|
of the first line above that has text on it.
|
|
.TP
|
|
.I 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.
|
|
.TP
|
|
.I 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 programs). When editing between text and the left
|
|
margin, moving and tabbing will be as though a tab space were
|
|
4, while actually using spaces and normal tabs for an optimal fill.
|
|
When editing anywhere else, a normal tab is inserted.
|
|
.TP
|
|
.I editor_option_save_mode
|
|
Possible values 0, 1 and 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.
|
|
erasing 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 create 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.
|
|
.PP
|
|
.SH MISCELLANEOUS
|
|
You can use scanf search and replace to search and replace a C format
|
|
string. First take a look at the
|
|
.B sscanf
|
|
and
|
|
.B sprintf
|
|
man pages to see what a format string is and how it works. Here's an
|
|
example: suppose that you want to replace all occurrences of an open
|
|
bracket, three comma separated numbers, and a close bracket, with the
|
|
word
|
|
.IR apples ,
|
|
the third number, the word
|
|
.I oranges
|
|
and then the second number. You would fill in the Replace dialog box as
|
|
follows:
|
|
.PP
|
|
.nf
|
|
.B Enter search string
|
|
(%d,%d,%d)
|
|
.B Enter replace string
|
|
apples %d oranges %d
|
|
.B Enter replacement argument order
|
|
3,2
|
|
.fi
|
|
.PP
|
|
The last line specifies that the third and then the second number are to
|
|
be used in place of the first and second.
|
|
.PP
|
|
It is advisable to use this feature with Prompt On Replace on, because
|
|
a match is thought to be found whenever the 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.
|
|
.PP
|
|
The editor also displays non-us characters (160+). When editing
|
|
binary files, you should set
|
|
.B display bits
|
|
to 7 bits in the Midnight Commander options menu to keep the
|
|
spacing clean.
|
|
.PP
|
|
.SH FILES
|
|
.I @prefix@/share/mc/mc.hlp
|
|
.IP
|
|
The help file for the program.
|
|
.PP
|
|
.I @prefix@/share/mc/mc.ini
|
|
.IP
|
|
The default system-wide setup for GNU Midnight Commander, used only if
|
|
the user's own ~/.mc/ini file is missing.
|
|
.PP
|
|
.I @prefix@/share/mc/mc.lib
|
|
.IP
|
|
Global settings for the Midnight Commander. Settings in this file
|
|
affect all users, whether they have ~/.mc/ini or not.
|
|
.PP
|
|
.I $HOME/.mc/ini
|
|
.IP
|
|
User's own setup. If this file is present, the setup is loaded from
|
|
here instead of the system-wide startup file.
|
|
.PP
|
|
.I $HOME/.mc/ini
|
|
.IP
|
|
User's own setup. If this file is present then the setup is loaded
|
|
from here instead of the system-wide startup file.
|
|
.PP
|
|
.I $HOME/.mc/cedit/
|
|
.IP
|
|
User's own temporary directory where block commands are processed
|
|
and saved.
|
|
.PP
|
|
.SH 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 Commander for details on the License and the lack
|
|
of warranty.
|
|
.SH AVAILABILITY
|
|
The latest version of this program can be found at
|
|
ftp://ftp.ibiblio.org/pub/Linux/utils/file/managers/mc/.
|
|
.SH SEE ALSO
|
|
cooledit(1), mc(1), gpm(1), terminfo(1), scanf(3).
|
|
.PP
|
|
.SH AUTHORS
|
|
Paul Sheer (psheer@obsidian.co.za) is the developer of
|
|
the Midnight Commander's internal editor.
|
|
.PP
|
|
.SH BUGS
|
|
Bugs should be reported to mc-devel@gnome.org
|