mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-23 21:06:52 +03:00
509 lines
16 KiB
Groff
509 lines
16 KiB
Groff
.TH MCEDIT 1 "September 2007" "MC Version 4.6.2-pre1" "GNU Midnight Commander"
|
|
.SH NAME
|
|
mcedit \- Internal file editor of GNU Midnight Commander.
|
|
.SH USAGE
|
|
.B mcedit
|
|
[\-bcCdfhstVx?] [+lineno] file
|
|
.PP
|
|
.B mcedit
|
|
[\-bcCdfhstVx?] file:lineno[:]
|
|
.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 "+lineno"
|
|
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 ANSI color mode on terminals that don't seem to have color
|
|
support.
|
|
.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"
|
|
Force using termcap database instead of terminfo. This option is only
|
|
applicable if GNU Midnight Commander was compiled with S-Lang library
|
|
with terminfo support.
|
|
.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).
|
|
.SH FEATURES
|
|
The internal file editor is a full-featured full screen editor. It can
|
|
edit files up to 64 megabytes. It is possible to edit binary files.
|
|
The features it presently supports are: block copy, move, delete, cut,
|
|
paste; key for key undo; pull-down menus; file insertion; macro
|
|
commands; regular expression search and replace (and our own
|
|
scanf-printf search and replace); shift-arrow text highlighting (if
|
|
supported by the terminal); insert-overwrite toggle; word wrap;
|
|
autoindent; tunable tab size; syntax highlighting for various file
|
|
types; and an option to pipe text blocks through shell commands like
|
|
indent and ispell.
|
|
.SH KEYS
|
|
The editor is easy to use and can be used without learning. The
|
|
pull-down menu is invoked by pressing F9. You can learn other keys from
|
|
the menu and from the button bar labels.
|
|
.PP
|
|
In addition to that, Shift combined with arrows does text highlighting
|
|
(if supported by the terminal):
|
|
.B Ctrl-Ins
|
|
copies to the file
|
|
.BR ~/.mc/cedit/cooledit.clip ,
|
|
.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. Mouse highlighting also works on some
|
|
terminals. To use the standard mouse support provided by your terminal,
|
|
hold the Shift key. Please note that the mouse support in the terminal
|
|
doesn't share the clipboard with
|
|
.BR mcedit .
|
|
.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 keys 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. The macro commands are stored in 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
|
|
If some keys don't work, you can use
|
|
.B Learn Keys
|
|
in the
|
|
.B Options
|
|
menu.
|
|
.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 .
|
|
If this file is missing, system-wide
|
|
.B @prefix@/share/mc/syntax/Syntax
|
|
is used.
|
|
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.
|
|
.PP
|
|
The file is divided into sections, each beginning with a line with the
|
|
.B file
|
|
command. The sections are normally put into separate files using the
|
|
.B include
|
|
command.
|
|
.PP
|
|
The
|
|
.B file
|
|
command has three arguments. The first argument is a regular expression
|
|
that is applied to the file name to determine if the following section
|
|
applies to the file. The second argument is the description of the file
|
|
type. It is used in
|
|
.BR cooledit ;
|
|
future versions of
|
|
.B mcedit
|
|
may use it as well. The third optional argument is a regular expression
|
|
to match the first line of text of the file. The rules in the following
|
|
section apply if either the file name or the first line of text matches.
|
|
.PP
|
|
A section ends with the start of another 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 text within a C style comment (i.e. between
|
|
.B /*
|
|
and
|
|
.BR */ )
|
|
has its own color. This is a context, although it has 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
|
|
define comment brown
|
|
context default
|
|
keyword whole if yellow
|
|
keyword whole else yellow
|
|
keyword whole for yellow
|
|
keyword whole while yellow
|
|
keyword whole do yellow
|
|
keyword whole switch yellow
|
|
keyword whole case yellow
|
|
keyword whole static yellow
|
|
keyword whole extern yellow
|
|
keyword { brightcyan
|
|
keyword } brightcyan
|
|
keyword '*' green
|
|
|
|
# C comments
|
|
context /\\* \\*/ comment
|
|
|
|
# C preprocessor directives
|
|
context linestart # \\n red
|
|
keyword \\\\\\n brightred
|
|
|
|
# C string constants
|
|
context " " green
|
|
keyword %d brightgreen
|
|
keyword %s brightgreen
|
|
keyword %c brightgreen
|
|
keyword \\\\" brightgreen
|
|
.fi
|
|
.PP
|
|
Each context starts with a line of the form:
|
|
.PP
|
|
.B context
|
|
.RB [ exclusive ]
|
|
.RB [ whole | wholeright | wholeleft ]
|
|
.RB [ linestart ]
|
|
.I delim
|
|
.RB [ linestart ]
|
|
.I delim
|
|
.RI [ foreground ]
|
|
.RI [ background ]
|
|
.PP
|
|
The first context is an exception. It must start with the command
|
|
.PP
|
|
.B context default
|
|
.RI [ foreground ]
|
|
.RI [ background ]
|
|
.PP
|
|
otherwise
|
|
.B mcedit
|
|
will report an error. The
|
|
.B linestart
|
|
option specifies that
|
|
.I delim
|
|
must start at the beginning of a line. The
|
|
.B whole
|
|
option tells that
|
|
.I delim
|
|
must be a whole word. To specify that a word must begin on the word
|
|
boundary only on the left side, you can use the
|
|
.B wholeleft
|
|
option, and similarly a word that must end on the word boundary is specified by
|
|
.BR wholeright .
|
|
.PP
|
|
The set of characters that constitute a whole word can be changed at any
|
|
point in the file with the
|
|
.B wholechars
|
|
command. The left and right set of characters can be set separately
|
|
with
|
|
.PP
|
|
.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:
|
|
.PP
|
|
.B keyword
|
|
.RB [ whole | wholeright | wholeleft ]
|
|
.RB [ linestart ]
|
|
.I string foreground
|
|
.RI [ background ]
|
|
.PP
|
|
Context or keyword strings are interpreted, so that you can include tabs
|
|
and spaces with the sequences \\t and \\s. Newlines and backslashes 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
|
|
an asterisk. The * itself is a wildcard that matches any length of
|
|
characters. For example,
|
|
.PP
|
|
.nf
|
|
keyword '*' green
|
|
.fi
|
|
.PP
|
|
colors all C single character constants green. You also could use
|
|
.PP
|
|
.nf
|
|
keyword "*" green
|
|
.fi
|
|
.PP
|
|
to color string constants, but the matched string would not be allowed
|
|
to span across multiple 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
|
|
.PP
|
|
.nf
|
|
keyword \\\\\\n brightgreen
|
|
.fi
|
|
.PP
|
|
This line defines a keyword containing the backslash and newline
|
|
characters. Since the keywords are matched before the context
|
|
delimiters, this keyword prevents the context from ending at the end of
|
|
the lines that end in a backslash, 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. If the syntax file is shared
|
|
with
|
|
.BR cooledit ,
|
|
it is possible to specify different colors for
|
|
.B mcedit
|
|
and
|
|
.B cooledit
|
|
by separating them with a slash, e.g.
|
|
.PP
|
|
.nf
|
|
keyword #include red/Orange
|
|
.fi
|
|
.PP
|
|
.B mcedit
|
|
uses the color before the slash. See cooledit(1) for supported
|
|
.B cooledit
|
|
colors.
|
|
.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 cannot 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 cannot deal
|
|
with. Also remember that the aim of syntax highlighting is to make
|
|
programming less prone to error, not to make code look pretty.
|
|
.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
|
|
.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.
|
|
.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.
|
|
.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 @prefix@/share/mc/syntax/*
|
|
.IP
|
|
The default system-wide syntax files for mcedit, used only if
|
|
the corresponding user's own ~/.mc/cedit/ file is missing.
|
|
.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 setup file.
|
|
.PP
|
|
.I $HOME/.mc/cedit/
|
|
.IP
|
|
User's own directory where block commands are processed and saved and
|
|
user's own syntax files are located.
|
|
.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.gnu.org/gnu/mc/.
|
|
.SH SEE ALSO
|
|
cooledit(1), mc(1), gpm(1), terminfo(1), scanf(3).
|
|
.SH AUTHORS
|
|
Paul Sheer (psheer@obsidian.co.za) is the original author of
|
|
the Midnight Commander's internal editor.
|
|
.SH BUGS
|
|
Bugs should be reported to mc-devel@gnome.org
|