Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
MCEDIT(1)		    GNU	Midnight Commander		     MCEDIT(1)

       mcedit -	Internal file editor of	GNU Midnight Commander.

       mcedit [-bcCdfhstVx?] [+lineno] [file1] [file2] ...

       mcedit [-bcCdfhstVx?] file1:lineno[:] file2:lineno[:] ...

       mcedit is a link	to mc, the main	GNU Midnight Commander executable. Ex-
       ecuting GNU Midnight Commander under this name runs the internal	editor
       and  opens  files specified on the command line.	The editor is based on
       the terminal version of cooledit	- standalone editor for	X Window  Sys-

	      Go  to  the line specified by number (do not put a space between
	      the + sign and the number). Several line numbers are allowed but
	      only  the	 last  one will	be used, and it	will be	applied	to the
	      first file only.

       -b     Force black and white display.

       -c     Force ANSI color mode on terminals that don't seem to have color

       -C _keyword_=_fgcolor_,_bgcolor_,_attributes_:_keyword_=	...
	      Specify  a different color set.  See the Colors section in mc(1)
	      for more information.

       -d     Disable mouse support.

       -f     Display the compiled-in search path for GNU  Midnight  Commander
	      data files.

       -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.

       -V     Display the version of the program.

       -x     Force  xterm mode.  Used when running on xterm-capable terminals
	      (two screen modes, and able to send mouse	escape sequences).

       The internal file editor	is a full-featured windowed  editor.   It  can
       edit  several  files  at	the same time. Maximum size of each file is 64
       megabytes. It is	possible to edit binary	files. The features  it	 pres-
       ently  supports	are: block copy, move, delete, cut, paste; key for key
       undo; pull-down menus; file insertion; macro commands; regular  expres-
       sion search and replace;	shift-arrow text highlighting (if supported by
       the terminal); insert-overwrite toggle; autoindent; tunable  tab	 size;
       syntax  highlighting for	various	file types; and	an option to pipe text
       blocks through shell commands like indent and ispell.

       Each file is opened in its own window in	full-screen mode. Window  con-
       trol  in	 mcedit	is similar to the window control in other multi-window
       program:	 double	 click	on  window  title  maximizes  the  window   to
       full-screen  or restores	window size and	position; left-click on	window
       title and mouse drag moves the window in	 editor	 area;	left-click  on
       low-right frame corner and mouse	drag resizes the window. These actions
       can be made using "Window" menu.

       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.

       In addition to that, Shift combined with	arrows does text  highlighting
       (if   supported	 by   the  terminal):  Ctrl-Ins	 copies	 to  the  file
       ~/.cache/mc/mcedit/mcedit.clip,	     Shift-Ins	     pastes	  from
       ~/.cache/mc/mcedit/mcedit.clip,	       Shift-Del	cuts	    to
       ~/.cache/mc/mcedit/mcedit.clip, and 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 mcedit.

       The completion key (usually Meta-Tab or Escape Tab) completes the  word
       under the cursor	using the words	used in	the file.

       To  define a macro, press Ctrl-R	and then type out the keys you want to
       be executed.  Press Ctrl-R again	when finished.	The macro can  be  as-
       signed to any key by pressing that key.	The macro is executed when you
       press the assigned key.

       The macro commands are stored in	section	[editor] it  the  file	~/.lo-

       External	 scripts (filters) can be assigned into	the any	hotkey by edit
       mc.macros like following:


       This means that ctrl-W hotkey initiates the  ExecuteScript(25)  action,
       then   editor   handler	 translates  this  into	 execution  of	~/.lo-
       cal/share/mc/mcedit/macros.d/	shell script.

       External	scripts	are stored in  ~/.local/share/mc/mcedit/macros.d/  di-
       rectory	and  must  be  named as where XXXX is the	number
       from 0 to 9999.	See Edit Menu File for more detail about format	of the

       Following macro definition and directives can be	used:

	      If this directive	is set,	then script starts without interactive

       %c     The cursor column	position number.

       %i     The indent of blank space, equal the cursor column.

       %y     The syntax type of current file.

       %b     The block	file name.

       %f     The current file name.

       %n     Only the current file name without extension.

       %x     The extension of current file name.

       %d     The current directory name.

       %F     The current file in the unselected panel.

       %D     The directory name of the	unselected panel.

       %t     The currently tagged files.

       %T     The tagged files in the unselected panel.

       %u and %U
	      Similar to the %t	and %T macros, but in addition the  files  are
	      untagged.	 You  can use this macro only once per menu file entry
	      or extension file	entry, because next  time  there  will	be  no
	      tagged files.

       %s and %S
	      The selected files: The tagged files if there are	any. Otherwise
	      the current file.

       Feel free to edit this files, if	you need.  Here	is a  sample  external

       l       comment selection
	    TMPFILE=`mktemp ${MC_TMPDIR:-/tmp}/up.XXXXXX` || exit 1
	    echo #if 0 > $TMPFILE
	    cat	%b >> $TMPFILE
	    echo #endif	>> $TMPFILE
	    cat	$TMPFILE > %b
	    rm -f $TMPFILE

       If some keys don't work,	you can	use Learn Keys in the Options menu.

       mcedit  can be used for navigation through code with tags files created
       by etags	or ctags commands. If there is no TAGS	file  code  navigation
       will  not work.	For example, in	case of	exuberant-ctags	for C language
       command will be:

       ctags -e	--language-force=C -R ./

       Meta-Enter shows	list box to select item	under  cursor  (cursor	should
       stand at	the end	of the word).

       Meta-Minus where	minus is symbol	"-" goes to previous function in navi-
       gation list (like browser's Back	button).

       Meta-Equal where	equal is symbol	"=" goes to next function  in  naviga-
       tion list (like browser's Forward button).

       mcedit supports syntax highlighting.  This means	that keywords and con-
       texts (like C comments, string constants, etc) are highlighted in  dif-
       ferent  colors.	 The following section explains	the format of the file
       ~/.config/mc/mcedit/Syntax.   If	 this  file  is	 missing,  system-wide
       /usr/local/share/mc/syntax/Syntax    is	 used.	  The	file   ~/.con-
       fig/mc/mcedit/Syntax is rescanned on opening of every 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 with  what

       The  file is divided into sections, each	beginning with a line with the
       file command.  The sections are normally	put into separate files	 using
       the include command.

       The  file command has three arguments.  The first argument is a regular
       expression that is applied to the file name to determine	if the follow-
       ing  section  applies to	the file.  The second argument is the descrip-
       tion of the file	type.  It is used  in  cooledit;  future  versions  of
       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.

       A section ends with the start of	another	section.  Each section is  di-
       vided  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 /* and */)
       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.

       A trivial C programming section might look like this:

       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

       Each context starts with	a line of the form:

       context	[exclusive]  [whole|wholeright|wholeleft]  [linestart]	 delim
       [linestart] delim [foreground] [background] [attributes]

       The first context is an exception.  It must start with the command

       context default [foreground] [background] [attributes]

       otherwise  mcedit will report an	error.	The linestart option specifies
       that delim must start at	the beginning of a  line.   The	 whole	option
       tells that delim	must be	a whole	word.  To specify that a word must be-
       gin on the word boundary	only  on  the  left  side,  you	 can  use  the
       wholeleft option, and similarly a word that must	end on the word	bound-
       ary is specified	by wholeright.

       The set of characters that constitute a whole word can  be  changed  at
       any  point in the file with the wholechars command.  The	left and right
       set of characters can be	set separately with

       wholechars [left|right] characters

       The exclusive option causes the text between the	delimiters to be high-
       lighted,	but not	the delimiters themselves.

       Each rule is a line of the form:

       keyword	 [whole|wholeright|wholeleft]  [linestart]  string  foreground
       [background] [attributes]

       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 spec-
       ify an asterisk.	 The * itself is a wildcard that matches any length of
       characters.  For	example,

	 keyword	 '*'	  green

       colors all C single character constants green.  You also	could use

	 keyword	 "*"	  green

       to  color string	constants, but the matched string would	not be allowed
       to span across multiple newlines.  The wildcard may be used within con-
       text  delimiters	as well, but you cannot	have a wildcard	as the last or
       first character.

       Important to note is the	line

	 keyword  \\\n	brightgreen

       This line defines a keyword containing the backslash and	newline	 char-
       acters.	 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 con-
       tinue across multiple lines.

       The possible colors are:	black, gray, red,  brightred,  green,  bright-
       green,  brown,  yellow, blue, brightblue, magenta, brightmagenta, cyan,
       brightcyan, lightgray and white.	The special  keyword  "default"	 means
       the  terminal's default.	Another	special	keyword	"base" means mc's main
       colors, it is useful as a placeholder if	you want to specify attributes
       without	modifying the background color.	When 256 colors	are available,
       they can	be specified either as color16 to color255, or	as  rgb000  to
       rgb555 and gray0	to gray23.

       If  the	syntax file is shared with cooledit, it	is possible to specify
       different colors	for mcedit and cooledit	 by  separating	 them  with  a
       slash, e.g.

       keyword	#include  red/Orange

       mcedit  uses the	color before the slash.	 See cooledit(1) for supported
       cooledit	colors.

       Attributes can be any of	bold, italic, underline,  reverse  and	blink,
       appended	by a plus sign if more than one	are desired.

       Comments	may be put on a	separate line starting with the	hash sign (#).

       If you are describing case insensitive language you need	to use casein-
       sensitive directive. It should be specified at the beginning of	syntax

       Because of the simplicity of the	implementation,	there are a few	intri-
       cacies that will	not be dealt with correctly but	these are a minor  ir-
       ritation.   On  the whole, a broad spectrum of quite complicated	situa-
       tions 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  sup-
       port, because this is flatly impossible.

       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.

       The syntax highlighting can be toggled using Ctrl-s shortcut.

       The default colors may be changed by appending  to  the	MC_COLOR_TABLE
       environment  variable.	Foreground  and	background colors pairs	may be
       specified for example with:


       Most options can	be set from Options dialog box.	 See the Options menu.
       The  following options are defined in ~/.config/mc/ini and have obvious
       counterparts in the dialog box.	You can	modify them to change the edi-
       tor  behavior, by editing the file.  Unless specified, a	1 sets the op-
       tion to on, and a 0 sets	it to off, as usual.

	      This option is ignored when invoking mcedit.

	      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 spacing.

	      Never insert a tab character. Rather insert spaces (ascii	32) to
	      fill to the desired tab size.

	      Pressing return will tab across to match the indentation of  the
	      first line above that has	text on	it.

	      Make  a single backspace delete all the space to the left	margin
	      if there is no text between the cursor and the left margin.

	      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.

	      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 immediately, truncating the disk file to
	      zero  length (i.e.  erasing it) and then writing the editor con-
	      tents to the file.  This method is fast, but dangerous, since  a
	      system  error  during  a file save will leave the	file only par-
	      tially 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	 a  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): a	backup	file  is  created  before  any
	      changes  are  made.  You can specify your	own backup file	exten-
	      sion in the dialog.  Note	that saving twice  will	 replace  your
	      backup as	well as	your original file.

	      Line length to wrap at. Default is 72.

	      Symbol to	add to name of backup files. Default is	"~".

	      Show  state line of editor. Currently it shows current line num-
	      ber (in the future it might show	things	like  folding,	break-
	      points, etc.). M-n toggles this option.

	      Toggle  "show  visible trailing spaces".	If editor_visible_spa-
	      ces=1, they are shown as '.'

	      Toggle "show visible tabs".  If editor_visible_tabs=1, tabs  are
	      shown as '<---->'

	      Do not remove block selection after cursor movement.

	      Reset selection after copy to clipboard.

	      Allow moving cursor beyond the end of line.

	      Allow moving cursor after	inserted block.

	      enable syntax highlighting.

	      Show confirmation	dialog on save.

	      to be described

	      to be described

	      Save file	position on exit.

	      Symbol  representation of	codepage name for file (i.e. CP1251, ~
	      -	default).

	      Combine UNDO actions for several of the same type	of action (in-
	      serting/overwriting, deleting, navigating, typing)

	      Search  autocomplete  candidates in entire file (1) or just from
	      beginning	of file	to cursor position (0).

	      Search autocomplete candidates from all  loaded  files  (1,  de-
	      fault), not only from the	currently edited one (0).

	      Spelling language	(en, en-variant_0, ru, etc) installed with as-
	      pell package (a full list	can be obtained	using  'aspell'	 util-
	      ity).   Use spell_language = NONE	to disable aspell support. De-
	      fault value is 'en'. Option must be located in the  [Misc]  sec-

	      Set  of characters to stop paragraph formatting. If one of those
	      characters is found in the beginning of line, that line and  all
	      following	lines of paragraph will	be untouched. Default value is

	      Show full	path name in the status	line. If  disabled  (default),
	      only base	name of	the file is shown.

       The editor also displays	non-us characters (160+).  When	editing	binary
       files, you should set display bits to 7 bits  in	 Midnight  Commander's
       options menu to keep the	spacing	clean.


	      The help file for	the program.


	      The  default  system-wide	setup for GNU Midnight Commander, used
	      only if the user's own ~/.config/mc/ini file is missing.


	      Global settings for Midnight Commander. Settings	in  this  file
	      affect all users,	whether	they have ~/.config/mc/ini or not.


	      The  default  system-wide	 syntax	files for mcedit, used only if
	      the corresponding	user's own ~/.local/share/mc/mcedit/  file  is


	      User's  own  setup.   If	this file is present then the setup is
	      loaded from here instead of the system-wide setup	file.


	      User's own directory where  block	 commands  are	processed  and
	      saved and	user's own syntax files	are located.

       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	 Midnight Commander for	details	on the License and the lack of

       The latest version of this program  can	be  found  at  http://ftp.mid-

       cooledit(1), mc(1), gpm(1), terminfo(1),	scanf(3).

       Paul  Sheer  ( is the original author of Midnight
       Commander's internal editor.

       Bugs should be reported to

MC Version 4.8.27		  August 2021			     MCEDIT(1)


Want to link to this manual page? Use this URL:

home | help