emacs-presentation/emacs.org
2021-04-18 18:47:38 -06:00

149 lines
6.5 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+AUTHOR: Simponic
#+DESCRIPTION: An emacs presentation
#+STARTUP: fold inlineimages
* XKCD
[[./images/real_programmers.png]]
* What is Emacs?
** Emacs history
*** From the [[https://www.emacswiki.org/emacs/EmacsHistory][EmacsWiki]]: + Emacs began at the Artificial Intelligence Laboratory at MIT. Beginning in 1972,
staff hacker CarlMikkelsen added display-editing capability to TECO, the text editor
on the AI Labs IncompatibleTimeSharingSystem (ITS) “Display-editing” meant that the
screen display was updated as the user entered new commands; compare the behavior of
"ed". In 1974, Richard Stallman added macro features to the TECO editor.
+ In 1976, Stallman wrote the first Emacs (“Editor MACroS”), which organized these
macros into a single command set and added facilities for SelfDocumentation and to be
extensible. TecoEmacs soon became the standard editor on ITS.
** Emacs is a super extensible "editor" that is written in ELisp
*** Why is editor in quotes?
**** Emacs does much more than edit text
- To show itself off, Emacs by default comes with a full game of
tetris!
+ Let me assert my nerd dominance by showing my tetris skills :)
#+BEGIN_SRC emacs-lisp :results silent
(tetris)
#+END_SRC
+ It even works in the terminal! Albeit kinda squished
- Besides being a great tool for when you're bored and your boss is looking
away, Emacs can also:
1. Write emails with the mu4e package
2. Write documents with Org Mode (more on this later)
3. Be your window manager with the exwm package
* I've given this a try, but I'm gonna stick with dwm
4. Browse the internet with eww!
#+BEGIN_SRC emacs-lisp :results silent
(eww "https://gnu.org")
#+END_SRC
I'm not entirely certain why one would do this, but hey it's there!
*** Some Emacs Jargon
Before continuing, I want to define some terms that are common in emacs.
**** Weird key-binding notation?
* "C" is control
* "M" is alt/meta
* "S" is shift
* When there is a "-" between two keys that means press them together.
* When there is a space, seperate them
* "C-x C-f" means press control and x together, then control and f.
- Or hold down control, press x, then press f while still holding it down
**** What is a "buffer"?
* A buffer is like a "tab" in most editors. You can swap between them
with "C-x C-b"
**** What is a "window"?
* A window is where a buffer is drawn to. They are like the window splits
in Vim
* Cycle between windows with "C-x C-o"
* Close a window with "C-x 0"
**** What is a "frame"?
* A frame is a whole instance of emacs. These are what you'd regularly
refer as windows in normal computer discussions. You can move them around,
minimize them (if you're using a tiling window manager), close them, etc.
* Not very commonly used, though every once in a while you might come across
a post asking about them
**** Good-to-know keybindings
1. Quit emacs with "C-x C-c"
2. Find a file with "C-x C-f"
3. Save a file with "C-x C-s"
4. Accidentally pressed a different command and you have no idea what you're
looking at? "C-g" will probably get you out of it.
5. "C-x u" to undo your typing
6. "C-space" to select a region and "C-g" to stop selecting it
7. With a region selected, cut it with "C-w" (this is also known as "killing")
8. Paste with "C-y" (this is also known as "yanking")
9. Window/buffer keybindings described above
10. Movement keys
11. Searching for commands
+ "C-h a" to find the keybindings for a command, or to search for a command
+ "C-h k" to find the name of a function tied to a keybinding
** What is ELisp?
Elisp is a dialect of Lisp specifically written for Emacs. It makes it super
easy to configure Emacs if you know just a little bit of Lisp. Lovers of Erik's
scheme talk will feel right at home with ELisp! (everything is defined in terms
of elisp functions, even moving the cursor and entering text)
In fact, let's take a look at an example.
Here I will split this window into three sections:
#+BEGIN_SRC emacs-lisp :results silent
(split-window-right)
(split-window-below)
#+END_SRC
To cycle through these windows, I press "C-x C-o".
As you can see, I cycle through in the order they were created.
* However, what if I wanted to go back a window?
- Emacs doesn't provide a keybinding for this by default, so let's make
it in Elisp ourselves!
#+BEGIN_SRC emacs-lisp :results silent
(defun go-back-window ()
(interactive)
(other-window -1))
#+END_SRC
- Let's add a key binding for this!
#+BEGIN_SRC emacs-lisp :results silent
(global-set-key (kbd "C-c u") 'go-back-window)
#+END_SRC
* Why is Emacs better than Vim?
** Org mode
Org mode is notorious for taking over programmer's lives. It's motto is
even "your life, in plain text". You can create calendars, make Latex
documents, make websites and blog posts with your own CSS, export to
Open Office formats, really anything you're creative enough to figure
out.
** Amazing package support
Yeah yeah, vim has packages too... but they're not as cool as Emacs :)
The emacs community is full of useful packages that are super easy to
install
*** MELPA
This resource makes it even easier to install user packages
*** SLIME
Get into a great Lisp interactive session!
*** Magit
Great for git interaction!
*** Company-mode
For completion
*** Undo-tree
For undoing your work
*** LSP-mode
For running language servers
* First steps in going forward with Emacs
** Are you a vim user converting from the dark side?
Check out [[https://github.com/hlissner/doom-emacs][Doom Emacs]] to get started on your journey!
** Want to learn ELisp?
Check out "Writing GNU Emacs Extensions". It's a really good O'Reilly book
that you can access for free through USU.
** Just want to get started with Emacs?
Dive right into emacs by installing it with whatever package manager you use.
Read the guide that is accessible on the default emacs start page! It will
teach you the basics. From there, just scrounge around the internet for
resources. There are plenty.
If you need a recommendation, you can start [[https://www.emacswiki.org/emacs/EmacsNewbie][at the emacs wiki.]]
* The compromise
** Can't decide which is better (it's emacs)? Good news! You don't have to!
Let's take a look at the "evil-mode" package. This is pretty much vim
emulation within emacs. It is the best vim emulator ever; whatever vim
can do, Evil Mode can do it too.