41.8 Emacs Terminal Emulator
To run a subshell in a terminal emulator, putting its typescript in
an Emacs buffer, use M-x term. This creates (or reuses) a
buffer named ‘*terminal*’, and runs a subshell with input coming
from your keyboard, and output going to that buffer.
The terminal emulator uses Term mode, which has two input modes. In
line mode, Term basically acts like Shell mode; see Shell Mode.
In char mode, each character is sent directly to the inferior
subshell, as “terminal input.” Any “echoing” of your input is the
responsibility of the subshell. The sole exception is the terminal
escape character, which by default is C-c (see Term Mode).
Any “terminal output” from the subshell goes into the buffer,
advancing point.
Some programs (such as Emacs itself) need to control the appearance
on the terminal screen in detail. They do this by sending special
control codes. The exact control codes needed vary from terminal to
terminal, but nowadays most terminals and terminal emulators
(including xterm
) understand the ANSI-standard (VT100-style)
escape sequences. Term mode recognizes these escape sequences, and
handles each one appropriately, changing the buffer so that the
appearance of the window matches what it would be on a real terminal.
You can actually run Emacs inside an Emacs Term window.
The file name used to load the subshell is determined the same way
as for Shell mode. To make multiple terminal emulators, rename the
buffer ‘*terminal*’ to something different using M-x
rename-uniquely, just as with Shell mode.
Unlike Shell mode, Term mode does not track the current directory by
examining your input. But some shells can tell Term what the current
directory is. This is done automatically by bash
version 1.15
and later.