HomeMathComputingArtsWordsLiteratureMusictwitter facebook g+ webfeed
Custom Search
Web
 
 
 
If you spend more than 2 hours on the site, please pay USD $6. Thank you

How To Set Emacs's User Interface to Modern Conventions

Advertise Here For Profit

Xah Lee, 2008-06, 2009, 2010, 2011-07-10

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

The following guide assume you are using GNU Emacs version 22 (released in 2007). Emacs 23 (released in 2009-07) will be mentioned specifically. (see: New Features in Emacs 23.)

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

Keybard Shortcuts

How to have standard keys for Copy and Paste?

Turn on the CUA mode, pull the menu 〖Options▸C-x/C-c/C-v Cut and Paste (CUA)〗, then pull menu 〖Options▸Save Options〗.

The CUA mode will do 4 things:

How to have standard shortcut keys for Open, Close, Save, Save As, Select All …?

Use the package ErgoEmacs Keybinding.

It supports { Open 【Ctrl+o】, Close 【Ctrl+w】, Save 【Ctrl+s】, New 【Ctrl+n】, Select All 【Ctrl+a】, … }.

How to have redo?

You need to install a redo mode. I recommend redo.el by Kyle E Jones et al, or redo+.el, or UndoTree. Any one of them will do the job. Once you install it, put the following code in your emacs init file:

(global-set-key (kbd "C-z") 'undo) ; Ctrl+z
(global-set-key (kbd "C-S-z") 'redo) ;  Ctrl+Shift+z

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

See:

Text Highlighting

How to have emacs highlight text selections?

Use the menu 〖Options▸Active Region Highlighting〗, then 〖Options▸Save Options〗.

Or, put this in your emacs init file:

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

When “delete-selection-mode” is on, it turns on “transient-mark-mode” automatically. So, turning on “transient-mark-mode” before is not necessary. Also, when “cua-mode” is on, the behavior of both “transient-mark-mode” and “delete-selection-mode” are there, but “cua-mode” has its own implementation and does not actually rely on them.

Note: Emacs 23 has “transient-mark-mode” on by default, but does not have “delete-selection-mode” on by default.

How to have syntax coloring on by default?

This is on by default in emacs 22 and 23.

If not on, you can use the menu 〖Options▸Syntax Highlighting〗. If you always want this on, then pull 〖Options▸Save Options〗.

Alternatively, put the following code in your emacs init file:

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

How to have matching parenthesis highlighted?

Use the menu 〖Options▸Paren Match Highlighting〗 then 〖Options▸Save Options〗.

Or, you can put the following code in your emacs init file:

(show-paren-mode 1) ; turn on paren match highlighting

show-paren-mode can be setup so that it highlight the entire paren enclosed text, instead of just the two paren chars. For how to, see: Tips For Editing Lisp Code With Emacs.

How to have the current line highlighted?

Call “hl-line-mode”. Call it again to toggle off. Call “global-hl-line-mode” to toggle globally.

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

Font

How to change the default font?

Use the menu: 〖Options▸Set Font〗, then 〖Options▸Save Options〗.

See also: How to Quickly Switch Fonts in EmacsBest Fonts for Unicode.

Displaying Line Numbers and Column Number

How to show line numbers?

Type 【Alt+x line-number-mode】. After that, the line number the cursor is on shows in the status bar at the bottom.

In emacs 23, you can have line numbers displayed in the left vertical margin. To turn it on, type 【Alt+x linum-mode】.

To have these on by default, put the following:

; show line number the cursor is on, in status bar (the mode line)
(line-number-mode 1)

; display line numbers in margin (fringe). Emacs 23 only.
(global-linum-mode 1) ; always show line numbers
emacs line numbers
Emacs 23 with linum-mode on.

How to show the cursor's column position?

Alt+x 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 & Files

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

Put the following in your emacs init file.

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

How to have a menu of recently opened files?

You need to turn on the recentf mode. Put the following in your emacs init file:

(recentf-mode 1)

Once turned on, you can open recently opened files under menu 〖File▸Open Recent〗, or by typing 【Alt+x recentf-open-files】.

Line Margin and Line Spacing

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

This is default with emacs 23. For detail on how to turn it on/off, see: New Features in Emacs 23.

For emacs 22, there's no robust solution. See: emacswiki.org move by visible line.

How to have lines soft wrapped at word boundary?

In emacs 23, pull the menu 〖Options▸Line Wrapping in this Buffer〗, or type 【Alt+x visual-line-mode】 toggles the behavior.

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

To toggle globally, type 【Alt+x global-visual-line-mode】. To set it on or off permanently, use:

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

How to set the right margin to something like infinity, so that long lines runs off screen instead wrapping at the window border?

Use the menu 〖Options▸Truncate Long Lines in this Buffer〗.

In Emacs 23, there's a built-in command toggle-truncate-lines. You can set a shortcut for it, like this:

(global-set-key (kbd "<f7>") 'toggle-truncate-lines)

If you are using emacs 22, you can define it like this:

(defun toggle-truncate-lines ()
"Toggle whether to wrap lines at right window border."
(interactive)
   (if (eq truncate-lines nil)
     (set-variable 'truncate-lines 't)
     (set-variable 'truncate-lines nil)
    ) )

How to set the spacing between lines?

Type 【Alt+x setq-default】, then “line-spacing” with value 5. This means there will be 5 pixels between lines. You can also use a decimal. If you set “line-spacing” to 0.5, then it means there will be a extra 50% of normal line height between lines.

You can put the following elisp code in your emacs init file for easy toggle.

(defun toggle-line-spacing ()
"Toggle line spacing between no extra space to extra half line height."
(interactive)
(if (eq line-spacing nil)
    (setq-default line-spacing 0.5) ; add 0.5 height between lines
  (setq-default line-spacing nil)   ; no extra heigh between lines
  ))

(global-set-key (kbd "<f7>") 'toggle-line-spacing)

With the above code, pressing F7 will toggle line spacing to small and large. This is useful for example, when you often switch between coding and document reading or novel reading.

Note that the spacing height between lines also depends on font. If you want to toggle between coding mode and novel-reading mode, you might just toggle font. See: How to Quickly Switch Fonts in Emacs.

Reformatting Lines

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

Type 【Alt+q】 (fill-paragraph) will reformat the current block of text your cursor is on. Type 【Alt+x fill-region】 to reformat a selection of text. To have lines automatically cut as you type, use auto-fill-mode.

You can set the width used in the above commands. Type 【Alt+x 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 for display purposes should be avoided. See: The Harm of hard-wrapping Lines.

Is there a unfill-paragraph? I want to delete the hard-wrapped line endings in a paragraph.

See: Emacs unfill-paragraph, unfill-region, compact-uncompact-block.

Misc

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)

Glad you liked it. Would you like to share?

Sharing this page …

Thanks! Close

Add New Comment

Showing 0 comments

Sort by   Subscribe by email   Subscribe by RSS
blog comments powered by Disqus