
Absolute Beginner's Guide to Emacs (2012) - sea6ear
http://www.jesshamrick.com/2012/09/10/absolute-beginners-guide-to-emacs/
======
gnuvince
The best thing (IMO) about this guide is that it does not start with a
gazillion lines of Elisp code to add to .emacs.d/init.el. I think people
should be allowed to experience plain vanilla Emacs and decide for themselves
what they want to change. If we just tell them "oh, you definitely want these
modes enabled and these settings to these values", I feel they are somehow
robbed of the best part of Emacs, namely figuring out what you want your own
personal editing experience to be.

~~~
apenguin
I definitely see your point about most guides detailing how to make your init
(I don't understand why so many people just tell you to disable tabs, as
though it's understood that everyone prefers spaces), but there _are_ certain
things that everyone will want. For instance, when given the choice between an
older bytecode file and a newer source file, Emacs loads the older one by
default. That sort of thing doesn't really seem like the sort of thing you
want people to _have_ to experience for themselves.

(The setting in question I am referring to is load-prefer-newer)

------
kev6168
This might gets downvoted into oblivion, but my thinking on editor choice is
that I either use the lower level pure text editor such as Vim, Sublime Text,
Nodepad++ for their speed, or if needed I go all the way with the big ones,
like Eclipse/IntelliJ IDEA/Netbeans, for all their bells and whistles.

Should I spend time and effort on the middle ones? I admit my feeling comes
from standing on the outside lurking. Emacs masters of course know that this
'middle one' feeling is non-sense.

But from the perspective of a newbie who sets out to master an editor/IDE,
considering the ratio of effort spent on learning/customization/configuration
vs. productivity gain (in a certain time span, let's say 20 years), I am
trying to decide to take the plunge and learn emacs seriously, in the midst of
big IDEs, Atom/Bracket, Neovim (let's hope it delivers).

Now please tell me I am so wrong.

~~~
andolanra
I'd argue that your "spectrum" misses where emacs really shines: nobody really
bothers to reconfigure Eclipse or Netbeans as their mail client or web
browser, whereas this is not entirely unusual with emacs. This is because
emacs has both a simpler set of underlying elements and a richer extension
language when compared with something like Eclipse. This makes it IDE-like,
but much more expressive and elaborate: there are things you can do with emacs
that you could only dream of doing in things like Eclipse.

Furthermore, writing extensions for emacs is much more pleasant than writing
extensions for Eclipse, and is done much more widely. And, emacs has been
around long enough that you have literally _decades_ worth of extensions
already available to you. Additionally, emacs is used widely enough that
people are quick to add emacs support for new things: if I pick up a new
esoteric language tomorrow, I can be 99% sure that there's no Eclipse support
for it, but I can be 100% sure that there's already an emacs mode for it and
it's probably on the emacs package manager already, to boot.

All this is both a plus and a minus, in some ways: learning emacs is probably
not worth it unless you're willing to put the time and effort into building up
your emacs configuration into something IDE-like, but if that's what you want
to do, then emacs can do truly amazing things. So yes, what you said rings
more or less true for vanilla emacs, but you're _radically_ underselling emacs
as a platform for building better things.

------
mikekchar
Nice guide. I'm trying to get my wife to use Emacs and she has been struggling
to make sense of the built in tutorial (as a point of reference, she had
practically never used any computing device other than a cell phone before a
few years ago). I'll send it to her and see what she thinks.

You may ask, "Why the heck are you getting her to use emacs???". I started
doing consulting this year and initially for tax reasons decided to have my
wife run the company (while I did the programming). It has worked out
spectacularly in that my wife loves the job and I can concentrate only on
working with the clients. We have to do double entry accounting, though. We're
using ledger-cli which has great Emacs org-mode support, so I'm hoping to get
her going on that.

~~~
yawaramin
Wow, ledger is pretty hard-core. I haven't used ledger-cli though so I
probably shouldn't comment on that. Out of curiosity, have you tried using
GnuCash?

~~~
mikekchar
Yeah, I started with GnuCash. Unfortunately (or maybe fortunately as it turned
out), I desperately needed good support for currency trading accounts:
[http://www.mathstat.dal.ca/~selinger/accounting/gnucash.html](http://www.mathstat.dal.ca/~selinger/accounting/gnucash.html)
(I am a Canadian, living in Japan, consulting for a UK company :-P My company
has to calculate capital gains on transactions in 3 different currencies...).
At the time I was using it, GnuCash had some annoying UI bugs with the
optional currency trading accounts feature. A friend suggested that I try out
ledger.

Now that I'm using ledger I would never, ever go back to GnuCash. It's not
that GnuCash is bad -- it isn't. But when I started doing actual accounting
(especially with foreign currencies), I could never get anything to balance in
ledger. After working at it I finally understood why -- I was doing it all
wrong! Being a complete neophyte I had no idea what the difference was between
LIFO, FIFO and average cost or how I could represent it in my accounting.
GnuCash would say "You made this much capital gains" and I just accepted it.
With ledger I would look at the reports and go, "Hey... what the heck... why
isn't that number zero???". There are some other big, big wins with ledger.
The first is that you are working with a text file. As a programmer, this is
massive. Why do I need a stupid GUI? A nice descriptive DSL is waaaaay more
convenient. Ledger itself is just a reporting tool that takes the data that
you enter into the file and answers questions that you give it (which forces
you to think of appropriate questions, which in turn showed me what I didn't
understand...) I actually use vim (there is a vim mode as well), but emacs org
mode is unbelievably fantastic (I'm a converted emacs user) and probably worth
learning emacs for. The mixture of ledger and org mode is probably the best
possible interface for an accounting program.

The other really big win is that you can put your accounting in source
control. I can not express to you the amount of ass-saving this has brought
me. Every time I make a change into the ledger I commit the change to git.
Real accountants (which I hire to take my amateur stuff and do real accounting
with) aren't supposed to change things in their ledger. It's kind of a law or
something ;-) They can only add things (including notations). I do the same
thing with ledger and git. I can find out what the ledger said at any given
date. And I have incredibly readable diffs.

This last point is so incredibly important that I could not ever possibly
think of using GnuCash again. This is not to say that ledger isn't without its
faults. There are also some competing programs that were inspired by ledger
which are worth checking out (bean-counter is one and there is a haskel
implementation whose name I forget -- hledger???). There are also some things
you can not do in ledger. There is no integrated payroll calculator, or
invoice tracker, or anything like that. However, since the DSL is pretty easy
to generate, it's quite easy to write scripts to do pretty much everything you
might want to do. For my company (me and my wife), it is perfect. I don't
think I would want to power a large corporation on it. I believe the Software
Freedom Conservency still does their accounting on ledger, though.

Hope that helps :-)

~~~
yawaramin
Cool :-)

I'm an on-again, off-again contributor to GnuCash but I really like ledger
too, and especially hledger because just knowing it's Haskell puts my mind at
ease about several things.

What you described about source control is really interesting because there
are a lot of parallels between Git's commits and double-entry accounting's
journal entries. There are some really close correspondences--like Git's
revert and a reverting journal entry (i.e. the opposite movements of money to
the transaction being reverted). Of course in accounting the master branch
really is the one 'true' view of the world but it's interesting to think in
terms of the Git analogy and imagine divergent branches which could be e.g.
explorations of different scenarios for your business.

Afaik no one has ever implemented such a system....

~~~
codygman
Wow, hledger looks impressive. I think I'll use it as an example for when
people ask for a "real world haskell program" as it has a web interface, gui
(I think I saw one), is cross platform, and only requires downloading the
executable.

Did I get everything correct? Do you think recommending hledger as a "real
world Haskell program" is a good strategy?

~~~
yawaramin
Sure! Hledger is a great tool for people willing to invest a certain amount of
time into learning some new tricks.

Another cool real-world Haskell app is Silk.[1] Looking at the site, there's
no mention of Haskell and no obvious way to tell that that is the
implementation language. And that's the beauty of it! :-)

[1] [https://www.silk.co/](https://www.silk.co/)

------
rickdale
When you describe the list of shortcuts for emacs, rather than C-c C-x I would
prefer the full Control c or Control x. I programmed in high school in visual
basic and c++ but only on windows machines. When I went to college I remember
being an absolute beginner and trying to fly through the emacs tutorial and
being like, what is capital C? So in other words, do you have a guide or an
'absolute beginners guide'?

~~~
tyrust
The author goes over this in the "Keyboard Shortcuts" section. This guide is
about as "beginner" as you will find. "C" as an abbreviation for "Control" is
pretty much found across all emacs documentation, so getting used to it is a
good idea.

~~~
aaronem
Probably wouldn't be a bad idea to introduce the Emacs key sequence
representation before introducing Emacs keyboard shortcuts, though. I can see
how it'd be really confusing for someone who's totally unfamiliar.

~~~
tyrust
Agreed, it would make more sense that way.

------
bkcooper
Something I think would be useful is a beginner's guide to what you should
want your text editor to be capable of. I feel like if you already know what
you want to achieve, the main barrier to getting there in Emacs is just
getting familiarity with the nomenclature and what packages exist.

A good example from this article would be M-q for auto-fill. I was super
excited when I discovered that command after spending some time redoing line
breaks manually before thinking "I'm sure somebody has solved this problem in
Emacs before." I'm sure there are tons of useful text editing hacks that would
be really useful that just haven't even occurred to me yet.

------
echoless
Emacs with Evil mode is the best editor ever. For pure text editing capability
Vim can't be beat, but it lacks some niceties like ability to run shells, an
integrated package installer etc.

With Emacs and Evil, you can get the best of both worlds.

~~~
cranium
And Spacemacs
([https://github.com/syl20bnr/spacemacs](https://github.com/syl20bnr/spacemacs))
is a good way to have a nice Evil integration. The only downside I found is
when you have to install your first new packages, Spacemacs forces you to
integrate it in a configuration-layer because it deletes all orphan packages.
Now I think it's a good way to organise your packages, but it's definitively
puzzling when you try to figure out why your newly-installed packages got
deleted for the 5th time.

~~~
echoless
Thanks for the link. I already have a pretty decent setup, but I'm always
looking to improve it. Trying it out now.

------
navait
I think it might be worth adding C-x C-c to the list of shortcuts, since
people would like to know how to get out of the application once launching it.
C-g is labeled as quit, which might be confusing to a beginner.

~~~
sjm
C-x C-c :)

~~~
navait
Correct. My bad.

------
kang
For beginners, this video serious by Jekor is highly recommended :
[https://www.youtube.com/playlist?list=PLxj9UAX4Em-
IiOfvF2Qs7...](https://www.youtube.com/playlist?list=PLxj9UAX4Em-
IiOfvF2Qs742LxEK4owSkr)

------
melling
Emacs is actually a lot better with tools like helm:

[http://tuhdo.github.io/helm-intro.html](http://tuhdo.github.io/helm-
intro.html)

Ace-jump is slick too:
[http://emacsrocks.com/e10.html](http://emacsrocks.com/e10.html)

IDE's like IntelliJ let you type a lot less. Emacs has made some great
progress in this direction in the past few years.

------
yadakhov
My pinky starts hurting when I hear emacs.

~~~
gnuvince
I used to have that. A couple tweaks made my experience much better:

1\. Remap Caps Lock to Control and press it with my ring finger rather than my
pinkie when possible (e.g C-a, C-s, C-d). I still use my pinkie for C-g or
C-r, but diminishing the number of times it is used was very helpful

2\. Map more keybindings to use Alt rather than Control.

I've been using Emacs keybindings for a really long time now, but I think I
could be convinced to try the Ergo Emacs keybindings. My only worry is that my
keyboard is French Canadian (with dead keys), so I'd probably need to first
start by remapping a bunch of shortcuts.

~~~
optimusclimb
Since converting to the faith (cult?), I've re-mapped capslock to ctrl on
every computer I've owned. Results? Blazingly fast operator on my own
machines. Stumbling idiot that's constantly turning on capslock on everyone
else's machine :/

