Web |
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).
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?
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)
How to change the default font?
Use the menu: 〖Options▸Set Font〗, then 〖Options▸Save Options〗.
See also: How to Quickly Switch Fonts in Emacs ◇ Best Fonts for Unicode.
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
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)
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】.
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.
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.
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.
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