Emacs: What features or benefits are unique to either GUI or terminal interface?
The terminal interface works even if you don't have X available, e.g. when working over ssh from a machine where you don't want to install Emacs, or to repair your X config, or on a hardware text terminal. (For the remote case, if you can run Emacs locally, you get easier workflow and less annoying latency by using tramp, e.g., open host.example.com:/path/to/file
— see the chapter on remote files in the manual.)
The terminal interface can run inside screen or tmux, so you can leave an instance running and connect to it remotely.
The X interface obviously can do things that the terminal interface can't do, such as display images, use varied fonts, use more colors, show a fancy menu and even toolbars, understand key combinations that your terminal might not let through, get finer access to the mouse, access the X clipboard and other selections directly, show multiple windows (frames, in Emacs parlance) on your display, ...
Since GNU Emacs 23 (or XEmacs 21), you don't have to choose between X and the terminal: you can open frames on any number of text terminals and any number of X displays from a single Emacs instance. The usual way is to run an Emacs server and connect to it with emacsclient -nw
to open a new frame on the current text terminal or emacsclient -c
to open a new frame on the current X display. From within Emacs, you can use make-frame-on-display
and make-frame-on-device
.
I've experienced some issues concerning font color and key bindings in -nw
mode, I didn't investigate but I guess it's up to the terminal. Anyway I tend to use the GUI mode, if possible, and I don't see any benefits in -nw
mode.
In terminal mode, can detach your session and reattach using screen
Though i don't use emacs/xemacs, i do occasionally use VIM/GVIM, and i prefer the GUI version, just seems smoother scrolling and i don't need to resize my term, which then makes my desktop assume i want all windows that size.
If you use Emacs in the terminal and have multiple vertical frames open, you cannot highlight and copy multiple lines of text from one frame; text across all frames will be highlighted because they are all located in one terminal window.
In the GUI, frames are located in a separate window elements so highlighting is constrained within each frame.