Emacs Slides 1

  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Emacs Slides 1 as PDF for free.

More details

  • Words: 1,785
  • Pages: 58
Being Productive With Emacs Part 1

Phil Sung sipb­iap­[email protected] http://stuff.mit.edu/iap/emacs Special thanks to Piaw Na and Arthur Gleckler

“Emacs is the extensible, customizable,  self­documenting real­time display editor.”

The many faces of Emacs

Emacs edits source code

The many faces of Emacs

Emacs is a hex editor M­x hexl­find­file

The many faces of Emacs

Emacs does diffs M­x ediff­buffers

The many faces of Emacs

Emacs is a file manager M­x dired

The many faces of Emacs

Emacs is a shell M­x shell

The many faces of Emacs

Emacs is a mail/news client M­x gnus

The many faces of Emacs

Emacs plays tetris M­x tetris

Why Emacs? 

Provides an integrated environment ●

Same editing commands available everywhere



Large set of tools available at all times



Move text between tasks easily

Why Emacs? 



Easy to extend ●

Elisp for customizing or adding new features



Extension code has the full power of Emacs



Dynamic environment: no restarting or recompiling

Portable





Today's goal: get the flavor of Emacs ●

Getting started with Emacs



Editing tips



Demos of useful features



Common Emacs concepts

Examples based on GNU Emacs 22

Later... ●

Advanced customization



Programming and extending Emacs with Elisp

Prerequisites (sort of) 

Emacs basic concepts ●



Files, buffers, windows, frames

Keyboard commands

Take the tutorial to brush up: C­h t



Key commands, prefix keys, M­x, the minibuffer



"C­x" means Ctrl+x "M­x" means Meta+x or Alt+x



Basic tasks ●

Opening and saving files, exiting Emacs

It's all about text manipulation 

Text in files ●



Text outside of files ●



grocery lists, HTML, code, ...

shell, debugger, ...

Text as a metaphor ●

dired, gnus, ...

Text as a metaphor: dired M-x wdired-change-to-wdired-mode after opening any directory

After editing names  in this buffer, C­x  C­s renames the  modified files

Moving around in buffers 

By character or line C­p C­b

C­f C­n

Moving around in buffers 

Beginning, end of line ●





C­a, C­e

By word ●







M­f, M­b

By sentence ●

M­a, M­e

By screen Beginning, end of  buffer ●



C­v, M­v

M­<, M­>

Go to line # ●

M­g g

Moving around in buffers 



Move multiple lines forward, backward ●

Example: C­u 10 C­p (back 10 lines)



C­u prefix generalizes to other commands

Search for text ●



C­s, C­r

Exchange point (cursor) and mark ●

C­x C­x

Killing ("cutting") text 

Kill line ●



C­k

Kill many lines ●

C­u 10 C­k (10 lines)



C­u C­k (4 lines)



C­u C­u C­k (16 lines)

Killing ("cutting") text 

Kill region ●



C­w

Save without killing ●



M­w

Kill sentence ●



M­k

Kill ("zap") to next  occurrence of  character ●

M­z CHAR

Yanking ("pasting") text 

Yank ●



Yank earlier killed text ●



C­y

M­y (once or more after C­y)

The kill ring ●

Almost all commands which delete text save it for  possible later retrieval

The mark 

Remembers a previous cursor position ●

C­x C­x to swap point (cursor) and mark



When you...



the mark is set to...



C­spc



where you are



M­< or M­>



where you were



Search for text



where you started



Yank text



start of inserted text



Insert a buffer



start of inserted text

The mark 

The mark ring ●



Move to a previous mark: C­u C­SPC

Mark and point are also used to delineate 'the  region' ●

Many commands operate on the text in the region



Set region by setting mark, then moving point

Undo 

Undo previous actions ●



C­/ or C­_ or C­x u

Undo within current region ●

C­u C­/

The undo model, illustrated

A

B

C

D

The undo model, illustrated

A

B

C

These states are accessible with 'undo'

D

The undo model, illustrated Undo some of your actions... This is how most editors other than emacs work: A These states are accessible with 'undo'

B

C These states are accessible with 'redo'

D

The undo model, illustrated Now do something else... This is how most editors other than emacs work: A These states are accessible with 'undo'

B

C

C'

D These states are no longer accessible!

The undo model, illustrated How emacs handles this situation

A

B

C

D

C'

The list of states is 'folded' so that all previous actions, including undos, are undoable

Incremental search 

Search for text (like Firefox's "find as you type") ●





C­s text 

C­s again to find next occurrence



RET to stop at found occurrence



C­g to cancel and go back to start of search

C­r for reverse search Many options available inside search; C­h k C­s to learn more

Search history 

Search for previously searched string ●



C­s C­s

Browse and edit previous queries ●

C­s then M­p, M­n

Incremental search 

Search for regular expressions ●

C­M­s regexp



Regexp describes the form of what to look for



Syntax may be slightly different from other REs you  may have used 



Emacs REs are a superset of Perl REs

M­x re­builder can help you test complex  regexps

Searching and replacing 

Search and replace, asking for confirmation ●



M­% or M­x query­replace

Display all lines matching RE ●

M­x occur

RE search and replacement 

M­x replace­regexp



Replacement text can depend on found text!



Replacement text gets these substitutions: ●

\& (the matched string)



\1, \2, etc. (references to parts of matched string)



\# (number of matched lines so far)



\? (prompt user for what to enter)



\,(lisp­expression ...)

RE replacement example Bill Gates Steve Jobs Eric Schmidt Larry Ellison GATES, Bill JOBS, Steve SCHMIDT, Eric ELLISON, Larry

M­x replace­regexp \(\w+\) \(\w+\) with \,(upcase \2), \1

More tips at http://steve-yegge.blogspot.com/2006/06/shiny-and-new-emacs-22.html

Integration with useful tools 

Shell ●



Compile (invoke make) ●



M­x shell

M­x compile

Debug ●

M­x gdb

Integration with useful tools 

Grep ●



Man page reader ●



M­x grep, M­x rgrep

M­x woman

Invoke shell commands ●

M­x shell­command, M­x shell­command­on­region

...and then some 

Calculator ●



Calendar ●



M­x calc

M­x calendar

Moon calendar ●

M­x phases­of­moon

More helpful features 

TRAMP: open remote files over SSH ●





C­x C­f /user@host:~/remote/file

VC: automatically deal with CVS, SVN, etc. ●

M­x vc­next­action to commit modified file



M­x vc­diff to view changes to current file

etags: name search/completion for source code

Emacs server 

Use a single Emacs session for all editing



Do this once: M­x server­start ●



or put (server­start) in your .emacs file

To edit a file: ●

prompt% emacsclient file



File opens in existing Emacs frame



C­x # when done editing

Macros 

Remembers a fixed sequence of keys for later  repetition



Start recording macro: C­x (



Stop recording macro: C­x )



Replay macro: C­x e

Macro example Define macro: M­d C­d M­u , [SPC]  C­y C­n C­a Bill Gates Steve Jobs Eric Schmidt Larry Ellison GATES, Bill JOBS, Steve SCHMIDT, Eric ELLISON, Larry

"Remove first word and space, uppercase next word, insert comma and space afterward, reinsert first word, move to beginning of next line"

Run macro repeatedly: C­x e e ...

Narrowing 

Restricts view/editing in a buffer to a certain  region ●



C­x n n or M­x narrow­to­region to  narrow to region C­x n w or M­x widen to restore ('widen')

Registers 

Store current window configuration ●



Restore window configuration ●



C­x r w REGISTER

REGISTER may be any letter or number

C­x r j REGISTER

Registers can also store positions, text,  numbers, file names...

Prefix arguments 





Sometimes used to indicate repetition ●

C­u 10 C­f (forward 10 characters)



C­u C­o (make 4 new lines)

Sometimes modify following command ●

C­/ (undo) vs. C­u C­/ (undo within region)



M­x shell vs. C­u M­x shell

A command's documentation (C­h f or C­h k)  describes the effect of the prefix argument, if any

Major modes 

Alters behavior, key bindings, and text display



Switch mode in existing buffer:





M­x java­mode



M­x python­mode



M­x fundamental­mode

Or, use another command to create buffer: ●

M­x shell



M­x dired

Language major mode features 

Language­specific indentation, syntax coloring



Language­specific features: ●

Lisp: commands for manipulating s­expressions



Python: commands for (un)indenting blocks



HTML: insert/close tags; preview in web browser



Modes can define or redefine keys

Minor modes 

Extra functionality you can turn on or off ●

Any number of minor modes may be active at once



Independent of major mode functionality



M­x auto­fill­mode



M­x flyspell­mode



M­x follow­mode

Global minor modes 

Offer completions for buffers, commands, etc. ●



M­x icomplete­mode

Show all buffer names on C­x b: ●

M­x iswitchb­mode

Minibuffer input 



Common features whenever Emacs prompts  you to enter something ●

Most buffer editing, movement commands work



Browse previous inputs with M­n, M­p



Tab­completion is often available

M­x eval­expression, M­x find­ file, M­x switch­to­buffer, ...

Getting help with Emacs 

Help with key ●



C­h k

Help with function ●



Help with mode ●



C­h f

Show key bindings ●



C­h m

C­h b

Help about help ●

C­h C­h

Getting help with Emacs 

Apropos (search for command) ●



Help with prefix key ●



C­h a

C­h (after prefix key)

Manuals ●

M­x info, then select emacs or efaq

“In the event of an emergency” 

Cancel command ●



Undo! ●



C­g

C­/ or C­_

What did I just do? ●

M­x view­lossage

Common problems 

Delete not deleting? ●



M­x normal­erase­is­backspace­mode

Keys with M­ not working? ●

Use ESC instead



ESC x instead of M­x



ESC C­t instead of C­M­t

Migrating to Emacs 

From Windows applications ●



M­x cua­mode: recovers C­z, C­x, C­c, C­v  for their usual purposes

From vi/vim ●

M­x viper­mode

Resources 

Emacs on Athena ●



http://web.mit.edu/olh/Emacs/

Emacs reference card ●

http://web.mit.edu/olh/Emacs/Refcard.pdf

Invoking or installing Emacs  

emacs21 on Athena: athena% emacs emacs22 on Ubuntu/Debian: apt­get install emacs­snapshot­gtk



emacs22 on Gentoo: emerge emacs­cvs



emacs on Windows: ●

http://ourcomments.org/Emacs/                    EmacsW32Util.html



Bonus: Being Unproductive With Emacs ●



M­x tetris, M­x hanoi, M­x doctor, ...

Next time: Emacs lisp ●

Customizing how Emacs works



Writing new functions, commands, and modes



Manipulating text programmatically



Altering behavior of existing commands

Related Documents

Emacs Slides 1
October 2019 12
Emacs Tutorial
November 2019 9
Intro Emacs
November 2019 6
Slides 1
June 2020 5
Slides 1
May 2020 6
Slides[1]
May 2020 9