How to Set Emacs's User Interface to Modern Conventions

Buy Xah Emacs Tutorial. Master emacs benefits for life.
, , …,

This page shows you how to set up emacs so its user interface is more similar to modern applications.

The following guide assume you are using GNU Emacs version 24.1 or later. 〔➤ Emacs 24.1 New Features (released 2012-06)

If you want a out-of-the-box solutions, you can download: ErgoEmacs (Windows), Aquamacs Emacs (Mac).

Standard Copy Paste Keys

How to have standard keyboard shortcuts for Copy & Paste?

Turn on the CUA mode. Put the following in your emacs init file:

(cua-mode 1)

The CUA mode will do 4 things:

  1. {Cut, Copy, Paste, Undo} have {X, C, V, Z} keys.
  2. Text selection will be highlighted. (this is default starting with emacs 23) 〔➤ Emacs 23.1 New Features (released 2009-07)
  3. When there's a text selection, typing will over-ride it.
  4. Text selection can be done by holding down the ⇧ Shift key and press a arrow key. (default behavior starting with emacs 23)

How to have standard keyboard shortcuts for {Open, Close, Save, Save As, Select All, …}?

Install the package ergoemacs-mode. (it also supports 【Ctrl+c】 for copy, etc. No need to turn on cua-mode.)

How to have redo?

You need to install a redo mode. See: Emacs: Best Undo/Redo Mode.

How to make the copy key copy the current line when there's no selection?

See: Emacs: How to Copy/Cut Current Line. (it's part of ergoemacs-mode.)

How to auto-insert/close bracket pairs?

(electric-pair-mode 1)

See: Emacs: Insert Parenthesis by Pair: electric-pair-mode

Text Highlighting

How to have emacs highlight text selections?

Put this in your emacs init file:

(transient-mark-mode 1) ; highlight text selection
(delete-selection-mode 1) ; delete seleted text when typing

Starting with Emacs 23.2, transient-mark-mode is on by default. 〔➤ Emacs 23.1 New Features (released 2009-07)

How to have syntax coloring on by default?

This is on by default starting with emacs 22 (released in 2007). If not on, put the following in your emacs init file:

(global-font-lock-mode 1) ; turn on syntax coloring

How to have matching parenthesis highlighted? (when the cursor is on one)

Put the following code in your emacs init file:

(show-paren-mode 1) ; turn on paren match highlighting
(setq show-paren-style 'expression) ; highlight entire bracket expression

〔➤ Emacs: Auto Highlight Parenthesis: show-paren-mode

How to have auto syntax color CSS hex color?

Install rainbow-mode or see: Emacs: Working with CSS Color Values.


How to change the default font?

;; set a default font
(when (member "DejaVu Sans Mono" (font-family-list))
  (set-face-attribute 'default nil :font "DejaVu Sans Mono"))

For detail, see: Emacs: How to List & Set Font.

Displaying Line Numbers and Column Number

How to show line numbers?

You can have line numbers displayed in the left vertical margin. To turn it on, call linum-mode. To have it on by default, put the following in your emacs init file:

(global-linum-mode 1) ; display line numbers in margin. New in Emacs 23
emacs line numbers
Emacs 23 with linum-mode on.

How to show the cursor's column position?

Call column-number-mode. After you turned it on, the cursor's line position and column position will show in the status bar, like this: (166,3). The first is line number, the second is position from the beginning of line.

To always have it on, put the following code in your emacs init file.

(column-number-mode 1)

Backup File, Autosaved Files, Recently Opened Files

How to make emacs stop creating those “backup~” files or “#autosave#” files?

Put the following in your emacs init file.

(setq make-backup-files nil) ; stop creating backup~ files
(setq auto-save-default nil) ; stop creating #autosave# files

〔➤ Emacs: Set Backups into a Directory

How to open recently opened file in emacs?

Call recentf-mode to turn it on. Then, call recentf-open-files to list and open recently opened file. You can give it a keyboard shortcut. 〔➤ Emacs: How to Define Keys

To turn it on for future sessions, put this in your emacs init file:

(recentf-mode 1) ; keep a list of recently opened files

Detail: Emacs: Open Recently Opened File: recentf-mode

How to restore opened files from last session?

You need to have desktop-save-mode on.

(desktop-save-mode 1) ; save/restore opened files

See: Emacs: Save/Restore Opened Files, Windows Configuration: desktop-mode

Tabs, Space, Indentation, Keyword Completion

How to setup tabs, space, indentation?

See: Emacs: Tabs, Space, Indentation Setup.

How to turn on ruler?

Call ruler-mode.

emacs ruler-mode screenshot 2013-04-20
Emacs ruler-mode screenshot

How to show tabs as in web browser?

You need to install tabbar-mode. 〔➤ Emacs: How to Install Packages Using ELPA, MELPA, Marmalade〕.

You can also install “tabbar-ruler” to make it pretty.

emacs tabbar screenshot 2013-04-20
Emacs tabbar screenshot

Line Margin, Line Wrap, Line Spacing

How to have the down arrow key move by screen lines?

This is default with emacs 23. 〔➤ Emacs 23.1 New Features (released 2009-07)

(setq line-move-visual nil) ; use t for true, nil for false

How to have lines soft wrapped at word boundary?

Pull the menu 〖Options ▸ Line Wrapping in this Buffer〗, or call visual-line-mode.

emacs23 word wrap
visual-line-mode off (top) and on (bottom) in emacs 23.

To toggle globally, call global-visual-line-mode. To set it on or off permanently, use:

(global-visual-line-mode 1) ; 1 for on, 0 for off.

For detail, see: Emacs: Visual Line Mode, Wrap Lines at Word Boundaries.

〔➤ Emacs: Novel Reading Mode

How to adjust margin?

You can use this command:

(defun xah-toggle-margin-right ()
  "Toggle the right margin between `fill-column' or window width.
This command is convenient when reading novel, documentation."
  (if (eq (cdr (window-margins)) nil)
      (set-window-margins nil 0 (- (window-body-width) fill-column))
    (set-window-margins nil 0 0) ) )

How to make lines NOT soft-wrap?

Call toggle-truncate-lines.

Note: the command name is misleading. It doesn't really truncate lines. Proper name would be “toggle-softwrap”.

How to set the spacing between lines?

See: Emacs: Set Line Spacing

Reformatting Lines

How to reformat paragraphs so that lines are not longer than 70 chars?

Call fill-paragraphAlt+q】 to reformat the current block of text your cursor is on. Call fill-region to reformat a text selection.

To have emacs automatically insert a newline char when your line reaches to the right, call auto-fill-mode.

You can set the width used in the above commands. Call set-variable, then given variable fill-column.

Note: these commands actually insert newline characters into your file. This type of wrapping is called hard-wrap. Hard-wrap convention of 80 chars came from Punched card. You should avoid hard-wrap when possible; add newline char only at logical positions. (Rant: The Harm of hard-wrapping Lines.)

Is there a unfill-paragraph? I want to remove line-break in a paragraph.

See: Emacs unfill-paragraph, unfill-region.

Fixed Scroll

How to have cursor line always highlighted?

Call hl-line-mode to toggle on/off. Call global-hl-line-mode to toggle globally.

(global-hl-line-mode 1) ; turn on highlighting current line

How to have fixed scroll?

Call scroll-lock-mode. When on, up/down arrow keys move the page, instead of the cursor.

This only turns it on in current buffer.


How to set cursor to i-beam?

(modify-all-frames-parameters (list (cons 'cursor-type 'bar)))

How to set up emacs so that each file opens in a new window?

Put this code in your emacs init file:

(setq pop-up-frames t) ; t for true, nil for false

How to make emacs use dark background color (reverse video)?

Start emacs with emacs --reverse-video. (-rv for short.)

This is useful when working in bright sunlight. See also: Emacs: Playing with Color Theme.

Thanks to Ivan Kozik for a tip.

Stop Cursor Going into Minibuffer Prompt

Emacs: Stop Cursor Going into Minibuffer Prompt

Save Cursor Position Across Sessions

Emacs: Save Cursor Position Across Sessions

Open File in External App

Emacs Lisp: Open File in External App

Configure Mouse Wheel & Buttons

Emacs: How to Set Mouse Buttons.

Like it?
Buy Xah Emacs Tutorial
or share
blog comments powered by Disqus