Provided by: mg_20110905-1.1_amd64 bug

NAME

     mg — emacs-like text editor

SYNOPSIS

     mg [-n] [-f mode] [+number] [file ...]

DESCRIPTION

     mg is intended to be a small, fast, and portable editor for people who can't (or don't want
     to) run emacs for one reason or another, or are not familiar with the vi(1) editor.  It is
     compatible with emacs because there shouldn't be any reason to learn more editor types than
     emacs or vi(1).

     The options are as follows:

     +number
             Go to the line specified by number (do not insert a space between the ‘+’ sign and
             the number).  If a negative number is specified, the line number counts backwards
             from the end of the file i.e. +-1 will be the last line of the file, +-2 will be
             second last, and so on.

     -f mode
             Run the mode command for all buffers created from arguments on the command line,
             including the scratch buffer and all files.

     -n      Turn off backup file generation.

WINDOWS AND BUFFERS

     When a file is loaded into mg, it is stored in a buffer.  This buffer may be displayed on
     the screen in more than one window.  At present, windows may only be split horizontally, so
     each window is delineated by a modeline at the bottom.  If changes are made to a buffer, it
     will be reflected in all open windows.

     If a buffer name begins and ends with an asterisk, the buffer is considered throwaway; i.e.
     the user will not be prompted to save changes when the buffer is killed.

POINT AND MARK

     The current cursor location in mg is called the point (or dot).  It is possible to define a
     window-specific region of text by setting a second location, called the mark.  The region is
     the text between point and mark inclusive.  Deleting the character at the mark position
     leaves the mark at the point of deletion.

     Note: The point and mark are window-specific in mg, not buffer-specific, as in other emacs
     flavours.

DEFAULT KEY BINDINGS

     Normal editing commands are very similar to GNU Emacs.  In the following examples, C-x means
     Control-x, and M-x means Meta-x, where the Meta key may be either a special key on the
     keyboard or the ALT key; otherwise ESC followed by the key X works as well.

     C-SPC       set-mark-command
     C-a         beginning-of-line
     C-b         backward-char
     C-d         delete-char
     C-e         end-of-line
     C-f         forward-char
     C-g         keyboard-quit
     C-h C-h     help-help
     C-h a       apropos
     C-h b       describe-bindings
     C-h c       describe-key-briefly
     C-j         newline-and-indent
     C-k         kill-line
     C-l         recenter
     RET         newline
     C-n         next-line
     C-o         open-line
     C-p         previous-line
     C-q         quoted-insert
     C-r         isearch-backward
     C-s         isearch-forward
     C-t         transpose-chars
     C-u         universal-argument
     C-v         scroll-up
     C-w         kill-region
     C-x C-b     list-buffers
     C-x C-c     save-buffers-kill-emacs
     C-x C-f     find-file
     C-x C-g     keyboard-quit
     C-x C-l     downcase-region
     C-x C-o     delete-blank-lines
     C-x C-q     toggle-read-only
     C-x C-r     find-file-read-only
     C-x C-s     save-buffer
     C-x C-u     upcase-region
     C-x C-v     find-alternate-file
     C-x C-w     write-file
     C-x C-x     exchange-point-and-mark
     C-x (       start-kbd-macro
     C-x )       end-kbd-macro
     C-x 0       delete-window
     C-x 1       delete-other-windows
     C-x 2       split-window-vertically
     C-x 4 C-f   find-file-other-window
     C-x 4 C-g   keyboard-quit
     C-x 4 b     switch-to-buffer-other-window
     C-x 4 f     find-file-other-window
     C-x =       what-cursor-position
     C-x ^       enlarge-window
     C-x `       next-error
     C-x b       switch-to-buffer
     C-x d       dired
     C-x e       call-last-kbd-macro
     C-x f       set-fill-column
     C-x g       goto-line
     C-x i       insert-file
     C-x k       kill-buffer
     C-x n       other-window
     C-x o       other-window
     C-x p       previous-window
     C-x s       save-some-buffers
     C-x u       undo
     C-y         yank
     C-z         suspend-emacs
     M-C-v       scroll-other-window
     M-SPC       just-one-space
     M-%         query-replace
     M-<         beginning-of-buffer
     M->         end-of-buffer
     M-\         delete-horizontal-space
     M-^         join-line
     M-b         backward-word
     M-c         capitalize-word
     M-d         kill-word
     M-f         forward-word
     M-l         downcase-word
     M-m         back-to-indentation
     M-q         fill-paragraph
     M-r         search-backward
     M-s         search-forward
     M-u         upcase-word
     M-v         scroll-down
     M-w         copy-region-as-kill
     M-x         execute-extended-command
     M-{         backward-paragraph
     M-}         forward-paragraph
     M-~         not-modified
     M-DEL       backward-kill-word
     C-_         undo
     )           blink-and-insert
     DEL         delete-backward-char

     For a complete description of mg commands, see MG COMMANDS.  To see the active keybindings
     at any time, type “M-x describe-bindings”.

MG COMMANDS

     Commands are invoked by “M-x”, or by binding to a key.  Many commands take an optional
     numerical parameter, n.  This parameter is set either by M-<n> (where n is the numerical
     argument) before the command, or by one or more invocations of the universal argument,
     usually bound to C-U.  When invoked in this manner, the value of the numeric parameter to be
     passed is displayed in the minibuffer before the M-x.  One common use of the parameter is in
     mode toggles (e.g. make-backup-files).  If no parameter is supplied, the mode is toggled to
     its alternate state.  If a positive parameter is supplied, the mode is forced to on.
     Otherwise, it is forced to off.

     apropos
            Help Apropos.  Prompt the user for a string, open the *help* buffer, and list all mg
            commands that contain that string.

     auto-execute
            Register an auto-execute hook; that is, specify a filename pattern (conforming to the
            shell's filename globbing rules) and an associated function to execute when a file
            matching the specified pattern is read into a buffer.

     auto-fill-mode
            Toggle auto-fill mode (sometimes called mail-mode), where text inserted past the fill
            column is automatically wrapped to a new line.

     auto-indent-mode
            Toggle indent mode, where indentation is preserved after a newline.

     back-to-indentation
            Move the dot to the first non-whitespace character on the current line.

     backward-char
            Move cursor backwards one character.

     backward-kill-word
            Kill text backwards by n words.

     backward-paragraph
            Move cursor backwards n paragraphs.  Paragraphs are delimited by <NL><NL> or
            <NL><TAB> or <NL><SPACE>.

     backward-word
            Move cursor backwards by the specified number of words.

     beginning-of-buffer
            Move cursor to the top of the buffer.

     beginning-of-line
            Move cursor to the beginning of the line.

     blink-and-insert
            Self-insert a character, then search backwards and blink its matching delimeter.  For
            delimeters other than parenthesis, brackets, and braces, the character itself is used
            as its own match.

     bsmap-mode
            Toggle bsmap mode, where DEL and c-H are swapped.

     c-mode
            Toggle a KNF-compliant mode for editing C program files.

     call-last-kbd-macro
            Invoke the keyboard macro.

     capitalize-word
            Capitalize n words; i.e. convert the first character of the word to upper case, and
            subsequent letters to lower case.

     cd     Change the global working directory.  See also global-wd-mode.

     copy-region-as-kill
            Copy all of the characters in the region to the kill buffer, clearing the mark
            afterwards.  This is a bit like a kill-region followed by a yank.

     count-matches
            Count the number of lines matching the supplied regular expression.

     count-non-matches
            Count the number of lines not matching the supplied regular expression.

     define-key
            Prompts the user for a named keymap (mode), a key, and an mg command, then creates a
            keybinding in the appropriate map.

     delete-backward-char
            Delete backwards n characters.  Like delete-char, this actually does a kill if
            presented with an argument.

     delete-blank-lines
            Delete blank lines around dot.  If dot is sitting on a blank line, this command
            deletes all the blank lines above and below the current line.  Otherwise, it deletes
            all of the blank lines after the current line.

     delete-char
            Delete n characters forward.  If any argument is present, it kills rather than
            deletes, saving the result in the kill buffer.

     delete-horizontal-space
            Delete any whitespace around the dot.

     delete-leading-space
            Delete leading whitespace on the current line.

     delete-trailing-space
            Delete trailing whitespace on the current line.

     delete-matching-lines
            Delete all lines after dot that contain a string matching the supplied regular
            expression.

     delete-non-matching-lines
            Delete all lines after dot that contain a string matching the supplied regular
            expression.

     delete-other-windows
            Make the current window the only window visible on the screen.

     delete-window
            Delete current window.

     describe-bindings
            List all global and local keybindings, putting the result in the *help* buffer.

     describe-key-briefly
            Read a key from the keyboard, and look it up in the keymap.  Display the name of the
            function currently bound to the key.

     digit-argument
            Process a numerical argument for keyboard-invoked functions.

     downcase-region
            Set all characters in the region to lower case.

     downcase-word
            Set characters to lower case, starting at the dot, and ending n words away.

     emacs-version
            Return an mg version string.

     end-kbd-macro
            Stop defining a keyboard macro.

     end-of-buffer
            Move cursor to the end of the buffer.

     end-of-line
            Move cursor to the end of the line.

     enlarge-window
            Enlarge the current window by shrinking either the window above or below it.

     eval-current-buffer
            Evaluate the current buffer as a series of mg commands.  Useful for testing mg
            startup files.

     eval-expression
            Get one line from the user, and run it.  Useful for testing expressions in mg startup
            files.

     exchange-point-and-mark
            Swap the values of "dot" and "mark" in the current window.  Return an error if no
            mark is set.

     execute-extended-command
            Invoke an extended command; i.e. M-x.  Call the message line routine to read in the
            command name and apply autocompletion to it.  When it comes back, look the name up in
            the symbol table and run the command if it is found, passing arguments as necessary.
            Print an error if there is anything wrong.

     fill-paragraph
            Justify a paragraph, wrapping text at the current fill column.

     find-file
            Select a file for editing.  First check if the file can be found in another buffer;
            if it is there, just switch to that buffer.  If the file cannot be found, create a
            new buffer, read in the file from disk, and switch to the new buffer.

     find-file-read-only
            Same as find-file, except the new buffer is set to read-only.

     find-alternate-file
            Replace the current file with an alternate one.  Semantics for finding the
            replacement file are the same as find-file, except the current buffer is killed
            before the switch.  If the kill fails, or is aborted, revert to the original file.

     find-file-other-window
            Opens the specified file in a second buffer.  Splits the current window if necessary.

     forward-char
            Move cursor forwards (or backwards, if n is negative) n characters.  Returns an error
            if the end of buffer is reached.

     forward-paragraph
            Move forward n paragraphs.  Paragraphs are delimited by <NL><NL> or <NL><TAB> or
            <NL><SPACE>.

     forward-word
            Move the cursor forward by the specified number of words.

     global-set-key
            Bind a key in the global (fundamental) key map.

     global-unset-key
            Unbind a key from the global (fundamental) key map; i.e. set it to 'rescan'.

     global-wd-mode
            Toggle global working-directory mode.  When enabled, mg defaults to opening files
            (and executing commands like compile and grep) relative to the global working
            directory.  When disabled, a working directory is set for each buffer.

     goto-line
            Go to a specific line.  If an argument is present, then it is the line number, else
            prompt for a line number to use.

     help-help
            Prompts for one of (a)propos, (b)indings, des(c)ribe key briefly.

     insert
            Insert a string, mainly for use from macros.

     insert-buffer
            Insert the contents of another buffer at dot.

     insert-file
            Insert a file into the current buffer at dot.

     insert-with-wrap
            Insert the bound character with word wrap.  Check to see if we're past the fill
            column, and if so, justify this line.

     isearch-backward
            Use incremental searching, initially in the reverse direction.  isearch ignores any
            explicit arguments.  If invoked during macro definition or evaluation, the non-
            incremental search-backward is invoked instead.

     isearch-forward
            Use incremental searching, initially in the forward direction.  isearch ignores any
            explicit arguments.  If invoked during macro definition or evaluation, the non-
            incremental search-forward is invoked instead.

     join-line
            Join the current line to the previous.  If called with an argument, join the next
            line to the current one.

     just-one-space
            Delete any whitespace around dot, then insert a space.

     keyboard-quit
            Abort the current action.

     kill-buffer
            Dispose of a buffer, by name.  If the buffer name does not start and end with an
            asterisk, prompt the user if the buffer has been changed.

     kill-line
            Kill line.  If called without an argument, it kills from dot to the end of the line,
            unless it is at the end of the line, when it kills the newline.  If called with an
            argument of 0, it kills from the start of the line to dot.  If called with a positive
            argument, it kills from dot forward over that number of newlines.  If called with a
            negative argument it kills any text before dot on the current line, then it kills
            back abs(n) lines.

     kill-paragraph
            Delete n paragraphs starting with the current one.

     kill-region
            Kill the currently defined region.

     kill-word
            Delete forward n words.

     line-number-mode
            Toggle whether line and column numbers are displayed in the modeline.

     list-buffers
            Display the list of available buffers.

     load   Prompt the user for a filename, and then execute commands from that file.

     local-set-key
            Bind a key mapping in the local (topmost) mode.

     local-unset-key
            Unbind a key mapping in the local (topmost) mode.

     make-backup-files
            Toggle generation of backup files.

     meta-key-mode
            When disabled, the meta key can be used to insert extended-ascii (8-bit) characters.
            When enabled, the meta key acts as usual.

     negative-argument
            Process a negative argument for keyboard-invoked functions.

     newline
            Insert a newline into the current buffer.

     newline-and-indent
            Insert a newline, then enough tabs and spaces to duplicate the indentation of the
            previous line.  Assumes tabs are every eight characters.

     next-line
            Move forward n lines.

     no-tab-mode
            Toggle notab mode.  In this mode, spaces are inserted rather than tabs.

     not-modified
            Turn off the modified flag in the current buffer.

     open-line
            Open up some blank space.  Essentially, insert n newlines, then back up over them.

     other-window
            The command to make the next (down the screen) window the current window.  There are
            no real errors, although the command does nothing if there is only 1 window on the
            screen.

     overwrite-mode
            Toggle overwrite mode, where typing in a buffer overwrites existing characters rather
            than inserting them.

     prefix-region
            Inserts a prefix string before each line of a region.  The prefix string is settable
            by using 'set-prefix-string'.

     previous-line
            Move backwards n lines.

     previous-window
            This command makes the previous (up the screen) window the current window.  There are
            no errors, although the command does not do a lot if there is only 1 window.

     push-shell
            Suspend mg and switch to alternate screen, if available.

     pwd    Display current (global) working directory in the status area.

     query-replace
            Query Replace.  Search and replace strings selectively, prompting after each match.

     replace-string
            Replace string globally without individual prompting.

     query-replace-regexp
            Replace strings selectively.  Does a search and replace operation using regular
            expressions for both patterns.

     quoted-insert
            Insert the next character verbatim into the current buffer; i.e. ignore any function
            bound to that key.

     re-search-again
            Perform a regular expression search again, using the same search string and direction
            as the last search command.

     re-search-backward
            Search backwards using a regular expression.  Get a search string from the user, and
            search, starting at dot and proceeding toward the front of the buffer.  If found, dot
            is left pointing at the first character of the pattern [the last character that was
            matched].

     re-search-forward
            Search forward using a regular expression.  Get a search string from the user and
            search for it starting at dot.  If found, move dot to just after the matched
            characters.  display does all the hard stuff.  If not found, it just prints a
            message.

     recenter
            Reposition dot in the current window.  By default, the dot is centered.  If given a
            positive argument (n), the display is repositioned to line n.  If n is negative, it
            is that line from the bottom.

     redraw-display
            Refresh the display.  Recomputes all window sizes in case something has changed.

     save-buffer
            Save the contents of the current buffer if it has been changed, optionally creating a
            backup copy.

     save-buffers-kill-emacs
            Offer to save modified buffers and quit mg.

     save-some-buffers
            Look through the list of buffers, offering to save any buffer that has been changed.
            Buffers that are not associated with files (such as *scratch*, *grep*, *compile*) are
            ignored.

     scroll-down
            Scroll backwards n pages.  A two-line overlap between pages is assumed.  If given a
            repeat argument, scrolls back lines, not pages.

     scroll-one-line-down
            Scroll the display down n lines without changing the cursor position.

     scroll-one-line-up
            Scroll the display n lines up without moving the cursor position.

     scroll-other-window
            Scroll the next window in the window list window forward n pages.

     scroll-up
            Scroll forward one page.  A two-line overlap between pages is assumed.  If given a
            repeat argument, scrolls back lines, not pages.

     search-again
            Search again, using the same search string and direction as the last search command.

     search-backward
            Reverse search.  Get a search string from the user, and search, starting at dot and
            proceeding toward the front of the buffer.  If found, dot is left pointing at the
            first character of the pattern (the last character that was matched).

     search-forward
            Search forward.  Get a search string from the user, and search for it starting at
            dot.  If found, dot gets moved to just after the matched characters, if not found,
            print a message.

     self-insert-command
            Insert a character.

     set-case-fold-search
            Set case-fold searching, causing case nopt to matter in regular expression searches.
            This is the default.

     set-default-mode
            Append the supplied mode to the list of default modes used by subsequent buffer
            creation.  Built in modes include: fill, indent, overwrite, and notab.

     set-fill-column
            Prompt the user for a fill column.  Used by auto-fill-mode.

     set-mark-command
            Sets the mark in the current window to the current dot location.

     set-prefix-string
            Sets the prefix string to be used by the 'prefix-region' command.

     shrink-window
            Shrink current window by one line.  The window immediately below is expanded to pick
            up the slack.  If only one window is present, this command has no effect.

     space-to-tabstop
            Insert enough spaces to reach the next tab-stop position.  By default, tab-stops
            occur every 8 characters.

     split-window-vertically
            Split the current window.  A window smaller than 3 lines cannot be split.

     start-kbd-macro
            Start defining a keyboard macro.  Macro definition is ended by invoking end-kbd-
            macro.

     suspend-emacs
            Suspend mg and switch back to alternate screen, if in use.

     switch-to-buffer
            Prompt and switch to a new buffer in the current window.

     switch-to-buffer-other-window
            Switch to buffer in another window.

     toggle-read-only
            Toggle the read-only flag on the current buffer.

     transpose-chars
            Transpose the two characters on either side of dot.  If dot is at the end of the
            line, transpose the two characters before it.  Return with an error if dot is at the
            beginning of line; it seems to be a bit pointless to make this work.

     undo   Undo the most recent action.  If invoked again without an intervening command, move
            the undo pointer to the previous action and undo it.

     undo-boundary
            Add an undo boundary.  This is not usually done interactively.

     undo-boundary-toggle
            Toggle whether undo boundaries are generated.  Undo boundaries are often disabled
            before operations that should be considered atomically undoable.

     undo-enable
            Toggle whether undo information is kept.

     undo-list
            Show the undo records for the current buffer in a new buffer.

     universal-argument
            Repeat the next command 4 times.  Usually bound to C-u.  This command may be stacked;
            e.g. C-u C-u C-f moves the cursor forward 16 characters.

     upcase-region
            Upper case region.  Change all of the lower case characters in the region to upper
            case.

     upcase-word
            Move the cursor forward by the specified number of words.  As it moves, convert any
            characters to upper case.

     what-cursor-position
            Display a bunch of useful information about the current location of dot.  The
            character under the cursor (in octal), the current line, row, and column, and
            approximate position of the cursor in the file (as a percentage) is displayed.  The
            column position assumes an infinite position display; it does not truncate just
            because the screen does.

     write-file
            Ask for a file name and write the contents of the current buffer to that file.
            Update the remembered file name and clear the buffer changed flag.

     yank   Yank text from kill-buffer.  Unlike emacs, the mg kill buffer consists only of the
            most recent kill.  It is not a ring.

CONFIGURATION FILES

     There are two configuration files, .mg, and .mg-TERM.  Here, TERM represents the name of the
     terminal type; e.g., if the terminal type is set to “vt100”, mg will use .mg-vt100 as a
     startup file.  The terminal type startup file is used first.

     The startup file format is a list of commands, one per line, as used for interactive
     evaluation.  Strings that are normally entered by the user at any subsequent prompts may be
     specified after the command name; e.g.:

           global-set-key ")" self-insert-command
           global-set-key "\^x\^f" find-file
           global-set-key "\e[Z" backward-char
           set-default-mode fill
           set-fill-column 72
           auto-execute *.c c-mode

FILES

     ~/.mg                       normal startup file
     ~/.mg-TERM                  terminal-specific startup file
     /usr/share/doc/mg/tutorial  concise tutorial

SEE ALSO

     vi(1)

CAVEATS

     Since it is written completely in C, there is currently no language in which extensions can
     be written; however, keys can be rebound and certain parameters can be changed in startup
     files.

     In order to use 8-bit characters (such as German umlauts), the Meta key needs to be disabled
     via the “meta-key-mode” command.