| 1 |
@c This is part of the Emacs manual. |
|---|
| 2 |
@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2001, 2002, 2003, |
|---|
| 3 |
@c 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
|---|
| 4 |
@c See file emacs.texi for copying conditions. |
|---|
| 5 |
@node Entering Emacs, Exiting, Text Characters, Top |
|---|
| 6 |
@chapter Entering and Exiting Emacs |
|---|
| 7 |
@cindex entering Emacs |
|---|
| 8 |
@cindex starting Emacs |
|---|
| 9 |
|
|---|
| 10 |
The usual way to invoke Emacs is with the shell command |
|---|
| 11 |
@command{emacs}. Emacs clears the screen, then displays an initial |
|---|
| 12 |
help message and copyright notice. Some operating systems discard |
|---|
| 13 |
your type-ahead when Emacs starts up; they give Emacs no way to |
|---|
| 14 |
prevent this. On those systems, wait for Emacs to clear the screen |
|---|
| 15 |
before you start typing. |
|---|
| 16 |
|
|---|
| 17 |
From a shell window under the X Window System, run Emacs in the |
|---|
| 18 |
background with @command{emacs&}. This way, Emacs won't tie up the |
|---|
| 19 |
shell window, so you can use it to run other shell commands while |
|---|
| 20 |
Emacs is running. You can type Emacs commands as soon as you direct |
|---|
| 21 |
your keyboard input to an Emacs frame. |
|---|
| 22 |
|
|---|
| 23 |
@vindex initial-major-mode |
|---|
| 24 |
When Emacs starts up, it creates a buffer named @samp{*scratch*}. |
|---|
| 25 |
That's the buffer you start out in. The @samp{*scratch*} buffer uses |
|---|
| 26 |
Lisp Interaction mode; you can use it to type Lisp expressions and |
|---|
| 27 |
evaluate them. You can also ignore that capability and just write notes |
|---|
| 28 |
there. You can specify a different major mode for this buffer by |
|---|
| 29 |
setting the variable @code{initial-major-mode} in your init file. |
|---|
| 30 |
@xref{Init File}. |
|---|
| 31 |
|
|---|
| 32 |
It is possible to specify files to be visited, Lisp files to be |
|---|
| 33 |
loaded, and functions to be called through Emacs command-line |
|---|
| 34 |
arguments. @xref{Emacs Invocation}. The feature exists mainly for |
|---|
| 35 |
compatibility with other editors, and for scripts. |
|---|
| 36 |
|
|---|
| 37 |
Many editors are designed to edit one file. When done with that |
|---|
| 38 |
file, you exit the editor. The next time you want to edit a file, you |
|---|
| 39 |
must start the editor again. Working this way, it is convenient to |
|---|
| 40 |
use a command-line argument to say which file to edit. |
|---|
| 41 |
|
|---|
| 42 |
However, killing Emacs after editing one each and starting it afresh |
|---|
| 43 |
for the next file is both unnecessary and harmful, since it denies you |
|---|
| 44 |
the full power of Emacs. Emacs can visit more than one file in a |
|---|
| 45 |
single editing session, and that is the right way to use it. Exiting |
|---|
| 46 |
the Emacs session loses valuable accumulated context, such as the kill |
|---|
| 47 |
ring, registers, undo history, and mark ring. These features are |
|---|
| 48 |
useful for operating on multiple files, or even continuing to edit one |
|---|
| 49 |
file. If you kill Emacs after each file, you don't take advantage of |
|---|
| 50 |
them. |
|---|
| 51 |
|
|---|
| 52 |
The recommended way to use GNU Emacs is to start it only once, just |
|---|
| 53 |
after you log in, and do all your editing in the same Emacs session. |
|---|
| 54 |
Each time you edit a file, you visit it with the existing Emacs, which |
|---|
| 55 |
eventually has many files in it ready for editing. Usually you do not |
|---|
| 56 |
kill Emacs until you are about to log out. @xref{Files}, for more |
|---|
| 57 |
information on visiting more than one file. |
|---|
| 58 |
|
|---|
| 59 |
To edit a file from another program while Emacs is running, you can |
|---|
| 60 |
use the @command{emacsclient} helper program to open a file in the |
|---|
| 61 |
already running Emacs. @xref{Emacs Server}. |
|---|
| 62 |
|
|---|
| 63 |
@ifnottex |
|---|
| 64 |
@raisesections |
|---|
| 65 |
@end ifnottex |
|---|
| 66 |
|
|---|
| 67 |
@node Exiting, Basic, Entering Emacs, Top |
|---|
| 68 |
@section Exiting Emacs |
|---|
| 69 |
@cindex exiting |
|---|
| 70 |
@cindex killing Emacs |
|---|
| 71 |
@cindex suspending |
|---|
| 72 |
@cindex leaving Emacs |
|---|
| 73 |
@cindex quitting Emacs |
|---|
| 74 |
|
|---|
| 75 |
There are two commands for exiting Emacs, and three kinds of |
|---|
| 76 |
exiting: @dfn{iconifying} Emacs, @dfn{suspending} Emacs, and |
|---|
| 77 |
@dfn{killing} Emacs. |
|---|
| 78 |
|
|---|
| 79 |
@dfn{Iconifying} means replacing the Emacs frame with a small box or |
|---|
| 80 |
``icon'' on the screen. This is the usual way to exit Emacs when |
|---|
| 81 |
you're using a graphical display---if you bother to ``exit'' at all. |
|---|
| 82 |
(Just switching to another application is usually sufficient.) |
|---|
| 83 |
|
|---|
| 84 |
@dfn{Suspending} means stopping Emacs temporarily and returning |
|---|
| 85 |
control to its parent process (usually a shell), allowing you to |
|---|
| 86 |
resume editing later in the same Emacs job. This is the usual way to |
|---|
| 87 |
exit Emacs when running it on a text terminal. |
|---|
| 88 |
|
|---|
| 89 |
@dfn{Killing} Emacs means destroying the Emacs job. You can run Emacs |
|---|
| 90 |
again later, but you will get a fresh Emacs; there is no way to resume |
|---|
| 91 |
the same editing session after it has been killed. |
|---|
| 92 |
|
|---|
| 93 |
@table @kbd |
|---|
| 94 |
@item C-z |
|---|
| 95 |
Suspend Emacs (@code{suspend-emacs}) or iconify a frame |
|---|
| 96 |
(@code{iconify-or-deiconify-frame}). |
|---|
| 97 |
@item C-x C-c |
|---|
| 98 |
Kill Emacs (@code{save-buffers-kill-emacs}). |
|---|
| 99 |
@end table |
|---|
| 100 |
|
|---|
| 101 |
@kindex C-z |
|---|
| 102 |
@findex iconify-or-deiconify-frame |
|---|
| 103 |
On graphical displays, @kbd{C-z} runs the command |
|---|
| 104 |
@code{iconify-or-deiconify-frame}, which temporarily iconifies (or |
|---|
| 105 |
``minimizes'') the selected Emacs frame (@pxref{Frames}). You can |
|---|
| 106 |
then use the window manager to select some other application. (You |
|---|
| 107 |
could select another application without iconifying Emacs first, but |
|---|
| 108 |
getting the Emacs frame out of the way can make it more convenient to |
|---|
| 109 |
find the other application.) |
|---|
| 110 |
|
|---|
| 111 |
@findex suspend-emacs |
|---|
| 112 |
On a text terminal, @kbd{C-z} runs the command @code{suspend-emacs}. |
|---|
| 113 |
Suspending Emacs takes you back to the shell from which you invoked |
|---|
| 114 |
Emacs. You can resume Emacs with the shell command @command{%emacs} |
|---|
| 115 |
in most common shells. On systems that don't support suspending |
|---|
| 116 |
programs, @kbd{C-z} starts an inferior shell that communicates |
|---|
| 117 |
directly with the terminal, and Emacs waits until you exit the |
|---|
| 118 |
subshell. (The way to do that is probably with @kbd{C-d} or |
|---|
| 119 |
@command{exit}, but it depends on which shell you use.) On these |
|---|
| 120 |
systems, you can only get back to the shell from which Emacs was run |
|---|
| 121 |
(to log out, for example) when you kill Emacs. |
|---|
| 122 |
|
|---|
| 123 |
@vindex cannot-suspend |
|---|
| 124 |
Suspending can fail if you run Emacs under a shell that doesn't |
|---|
| 125 |
support suspension of its subjobs, even if the system itself does |
|---|
| 126 |
support it. In such a case, you can set the variable |
|---|
| 127 |
@code{cannot-suspend} to a non-@code{nil} value to force @kbd{C-z} to |
|---|
| 128 |
start an inferior shell. |
|---|
| 129 |
|
|---|
| 130 |
@kindex C-x C-c |
|---|
| 131 |
@findex save-buffers-kill-emacs |
|---|
| 132 |
To exit and kill Emacs, type @kbd{C-x C-c} |
|---|
| 133 |
(@code{save-buffers-kill-emacs}). A two-character key is used to make |
|---|
| 134 |
it harder to type by accident. This command first offers to save any |
|---|
| 135 |
modified file-visiting buffers. If you do not save them all, it asks |
|---|
| 136 |
for confirmation with @kbd{yes} before killing Emacs, since any |
|---|
| 137 |
changes not saved now will be lost forever. Also, if any subprocesses are |
|---|
| 138 |
still running, @kbd{C-x C-c} asks for confirmation about them, since |
|---|
| 139 |
killing Emacs will also kill the subprocesses. |
|---|
| 140 |
|
|---|
| 141 |
@vindex confirm-kill-emacs |
|---|
| 142 |
If the value of the variable @code{confirm-kill-emacs} is |
|---|
| 143 |
non-@code{nil}, @kbd{C-x C-c} assumes that its value is a predicate |
|---|
| 144 |
function, and calls that function. If the result is non-@code{nil}, the |
|---|
| 145 |
session is killed, otherwise Emacs continues to run. One convenient |
|---|
| 146 |
function to use as the value of @code{confirm-kill-emacs} is the |
|---|
| 147 |
function @code{yes-or-no-p}. The default value of |
|---|
| 148 |
@code{confirm-kill-emacs} is @code{nil}. |
|---|
| 149 |
|
|---|
| 150 |
You can't resume an Emacs session after killing it. Emacs can, |
|---|
| 151 |
however, record certain session information when you kill it, such as |
|---|
| 152 |
which files you visited, so the next time you start Emacs it will try |
|---|
| 153 |
to visit the same files. @xref{Saving Emacs Sessions}. |
|---|
| 154 |
|
|---|
| 155 |
The operating system usually listens for certain special characters |
|---|
| 156 |
whose meaning is to kill or suspend the program you are running. |
|---|
| 157 |
@b{This operating system feature is turned off while you are in Emacs.} |
|---|
| 158 |
The meanings of @kbd{C-z} and @kbd{C-x C-c} as keys in Emacs were |
|---|
| 159 |
inspired by the use of @kbd{C-z} and @kbd{C-c} on several operating |
|---|
| 160 |
systems as the characters for stopping or killing a program, but that is |
|---|
| 161 |
their only relationship with the operating system. You can customize |
|---|
| 162 |
these keys to run any commands of your choice (@pxref{Keymaps}). |
|---|
| 163 |
|
|---|
| 164 |
@ifnottex |
|---|
| 165 |
@lowersections |
|---|
| 166 |
@end ifnottex |
|---|
| 167 |
|
|---|
| 168 |
@ignore |
|---|
| 169 |
arch-tag: df798d8b-f253-4113-b585-f528f078a944 |
|---|
| 170 |
@end ignore |
|---|