Entering Emacs
==============

The usual way to invoke Emacs is with the shell command emacs.  From a terminal window running in the X Window System, you can run Emacs in the background with emacs &; this way, Emacs won't tie up the terminal window, so you can use it to run other shell commands.

When Emacs starts up, the initial frame displays a special buffer named *GNU Emacs*.  This startup screen contains information about Emacs and links to common tasks that are useful for beginning users.  For instance, activating the Emacs Tutorial link opens the Emacs tutorial; this does the same thing as the command C-h t (help-with-tutorial).  To activate a link, either move point onto it and type RET, or click on it with mouse-1 (the left mouse button).

Using a command line argument, you can tell Emacs to visit one or more files as soon as it starts up.  For example, emacs foo.txt starts Emacs with a buffer displaying the contents of the file foo.txt.  This feature exists mainly for compatibility with other editors, which are designed to be launched from the shell for short editing sessions.  If you call Emacs this way, the initial frame is split into two windows---one showing the specified file, and the other showing the startup screen.  See Windows.

Generally, it is unnecessary and wasteful to start Emacs afresh each time you want to edit a file.  The recommended way to use Emacs is to start it just once, just after you log in, and do all your editing in the same Emacs session.  See Files, for information on visiting more than one file.  If you use Emacs this way, the Emacs session accumulates valuable context, such as the kill ring, registers, undo history, and mark ring data, which together make editing more convenient.  These features are described later in the manual.

To edit a file from another program while Emacs is running, you can use the emacsclient helper program to open a file in the existing Emacs session.  See Emacs Server.

Emacs accepts other command line arguments that tell it to load certain Lisp files, where to put the initial frame, and so forth. See Emacs Invocation.

If the variable inhibit-startup-screen is non-nil, Emacs does not display the startup screen.  In that case, if one or more files were specified on the command line, Emacs simply displays those files; otherwise, it displays a buffer named *scratch*, which can be used to evaluate Emacs Lisp expressions interactively. See Lisp Interaction.  You can set the variable inhibit-startup-screen using the Customize facility (see Easy Customization), or by editing your initialization file (see Init File). (Setting inhibit-startup-screen in site-start.el doesn't work, because the startup screen is set up before reading site-start.el.  See Init File, for information about site-start.el.)

You can also force Emacs to display a file or directory at startup by setting the variable initial-buffer-choice to a string naming that file or directory.  The value of initial-buffer-choice may also be a function (of no arguments) that should return a buffer which is then displayed. If initial-buffer-choice is non-nil, then if you specify any files on the command line, Emacs still visits them, but does not display them initially.

Exiting Emacs
=============

C-x C-c
     Kill Emacs (save-buffers-kill-terminal).

C-z
     On a text terminal, suspend Emacs; on a graphical display, iconify (or ``minimize'') the selected frame (suspend-emacs).

Killing Emacs means terminating the Emacs program.  To do this, type C-x C-c (save-buffers-kill-terminal).  A two-character key sequence is used to make it harder to type by accident.  If there are any modified file-visiting buffers when you type C-x C-c, Emacs first offers to save these buffers.  If you do not save them all, it asks for confirmation again, since the unsaved changes will be lost.  Emacs also asks for confirmation if any subprocesses are still running, since killing Emacs will also kill the subprocesses (see Shell).

C-x C-c behaves specially if you are using Emacs as a server. If you type it from a client frame, it closes the client connection.  See Emacs Server.

Emacs can, optionally, record certain session information when you kill it, such as the files you were visiting at the time.  This information is then available the next time you start Emacs. See Saving Emacs Sessions.

If the value of the variable confirm-kill-emacs is non-nil, C-x C-c assumes that its value is a predicate function, and calls that function.  If the result of the function call is non-nil, the session is killed, otherwise Emacs continues to run.  One convenient function to use as the value of confirm-kill-emacs is the function yes-or-no-p.  The default value of confirm-kill-emacs is nil.

To kill Emacs without being prompted about saving, type M-x kill-emacs.

C-z runs the command suspend-frame.  On a graphical display, this command minimizes (or iconifies) the selected Emacs frame, hiding it in a way that lets you bring it back later (exactly how this hiding occurs depends on the window system). On a text terminal, the C-z command suspends Emacs, stopping the program temporarily and returning control to the parent process (usually a shell); in most shells, you can resume Emacs after suspending it with the shell command %emacs.

Text terminals usually listen for certain special characters whose meaning is to kill or suspend the program you are running.  This terminal feature is turned off while you are in Emacs.  The meanings of C-z and C-x C-c as keys in Emacs were inspired by the use of C-z and C-c on several operating systems as the characters for stopping or killing a program, but that is their only relationship with the operating system.  You can customize these keys to run any commands of your choice (see Keymaps).