Hacker News new | past | comments | ask | show | jobs | submit login
I have finally seen the Emacs light
38 points by globalrev on July 1, 2008 | hide | past | favorite | 78 comments
Just got to say this to all you netbeaners, eclipsers etc out there.

Today i finally groked what makes Emacs so good. I havent groked Emacs itself yet but all the IDEs i have tried have disappointed, they are big, slow and ugly and hard to navigate easily and there is a lot fo unnecessary clutter which you sometimes can and sometimes cannot take away.

Emacs has a bit of a barrier of entry but as soon as you learn some keyboard-kung-fu it will make you very productive.

Jump between buffers, run an interpreter, search your code, etc.

So powerful and so elegant. Emacs captures the essence of good software.




'Guilty Pleasures : I sometimes edit my .emacs file in vim.'

http://mark.nirv.net/post/6694167/guilty-pleasures


One word: nethack.

I use Emacs for everything (including this comment), but every so often I find myself craving a fix of hjkl;



I learned emacs not too long ago, and I was amazed that the better principles were established so much earlier and abandoned for new tools. One thing about its philosophy I think makes it better is the consistency of everything being buffers, commands, and keystrokes. Eclipse has multiple kinds of buffers, views, panels, dialogs, and keys, menus, toolbars, docks, etc., that aren't interchangeable. It reminds me of the syntax philosophies of Lisp and Java - the tools follow the languages.


I use eclipse for Java still. Our project has something like 100,000 source files. Memorizing this lay-out is hard! There isn't much sense to it. Having the open-type shortcut is a life-saver. So is the type hierarchy browser.

Emacs is great for pretty much everything else though!


Here's something like what I do at work. Syntax not quite correct, I'm sure. It's a C++ project, but you can probably adapt it to your situation. Making the TAGS file takes a while every now and then, so you might want to run it as a cron job.

shell:

   find rootdir1 rootdir2 ... rootdirN ".*\.[ch][ch]?" | etags > /convenient/dir/TAGS
.emacs:

   (visit-tags-table "/convenient/dir/TAGS")
need a class or function in emacs:

   (tags-apropos _regexp_)


100,000 source files? and you haven't quit? you deserve eclipse. :P


Try IntelliJ sometime (for Java at least)

I love emacs and the philosophy of emacs but IntelliJ just makes a lot more of the pain from Java go away. Ive tried but the emacs-equivalent tools like Semantic are just nowhere near as mature as the IntelliJ equivalents. As far as code generation and refactoring tools go, IntelliJ can't be beat.


Im a Vim guy, but emacs is fine too. I might learn emacs some day, im not a fan of this religious thing or what ever the emacsVSvim guys try to accomplish.


I'm not a fan of the religion either. If you develop large projects, you'll probably find the power of emacs to be a huge time saver. Instead of having 4 terminals open, each with a vim session (something I typically see), you can just have 4 windows open. Tramp is also really slick for easily editing remote files. Having a python interpreter in running in conjunction with your editor is slick too. Probably worth fighting with for a few days to get it. If you still don't like it, now you know why!

Just sayin.


:split worksforme, also :! is fun, but your post makes me think there is probably more to it than that.


well, the thing with these comparisons between vim and emacs features is that they mostly come down to "do you know how to do feature X" because both emacs and vim (vim, not vi) will surely have feature X somewhere.

In this case, vim allows tabs and split windows and the Tramp functionality is built in. I'm not sure about the python terminal, but then again, I've never felt the need.


"do you know how to do feature X"

Yes, that's it. A couple of times I've imagined a really cool feature that vim could have... and it turned out it already has it ... along with additional features and extensions to that idea that I hadn't begun to imagine... whoa... That's a rare and impressive experience (for me), and it gave vim a special place in my heart.

But I agree with you that the same thing would be true of emacs too.

Vim is a huge mess/mass of features, and if you don't already know about a feature, the help isn't very helpful (googling works better). Emacs scripting is probably more regular, being based on a full language.


Fair points. I didn't know vim had tramp functionality. What's it called?



> Just sayin.

Not super-saiyan.


TextMate is one of the most over-hyped anythings, ever. The only thing that makes TextMate different from NotePad is the Bundle. The editor itself is weak as shit, and even the Bundles don't add anything that can't already be found in an extension for Emacs (and Vim, but not as well done as in Emacs).


The only thing that makes TextMate different from NotePad is the Bundle...

Even if this were true -- which it isn't -- the ability to write, distribute, and install open-source extensions to the editor is a hugely important feature. It is, after all, the central feature of emacs itself.


> The editor itself is weak as shit

What does this even mean?

> even the Bundles don't add anything that can't already be found in an extension for Emacs

This is demonstrably false.


after trying to learn Emacs for a couple of years I had a similar experience once I learned enough of the basics. after I started to master Emacs I could no longer go back to any other editor. I just wished I would have learned Emacs sooner instead of looking for excuses for 2 years.


Yup, I did the same thing about 14 years ago. I was steadfastly using pico (yeah, yeah, don't ask) until I finally sat down and forced myself to spend a week in emacs, and finally "got it".

And I did it all again a few years later when (no longer using terminals or other people's computers) I finally bothered to map the control key to the left of "A", meta to underneath the '/' (sadly not always consistent on PC keyboards), stopped using the non-alpha keys, and realized how nice the "weird" keybindings always were.


I was the same way in school. I also used pico for a long time, and for a while after that, I used vim, but only with the bare minimum necessary for edit, save, up, down, left, right. I finally had a teacher that required us to use Emacs, and I've never looked back.


How about TextMate? It's almost as good as Emacs from a power point of view, but nowhere near as painful to learn, and looks a treat too!


TextMate is not free software.

Also, emacs lets you redefine nearly any of the functionality on the fly without restarting (everything except the very core which is written in C). I'm not sure if TextMate can do that, as I try to use as little proprietary software as possible.


Yes, you can redefine most of TextMate’s functionality without restarting


I hear Textmate is pretty darn good, but it doesn't work in the terminal on my Linux box, and it doesn't run on my windows machine in my cube. I decided a year or two back to learn an editor well, and decided against Textmate for those two reasons.


I like TextMate and it is probably one of the better GUI editors that are available on OS X, but I wouldn't claim that it's almost as good as Emacs.


Try opening a 100MB+ text file in TextMate, it doesnt work so well...


Does that work in Emacs?

Serious question.


Yes.


I downloaded a <10Mb web page (hundreds of thousands of list items, all on one line) and tried to open it.

Ha, I thought, Vim will eat this for breakfast. chug chug, task manager, end task. :(

Right, I'll break out the Emacs. chug chug, task manager, end task. :(

Hmm, what else do I have. Notepad. opened in seconds. :)

Promptly followed by search and replace can't insert newlines. :(


Not sure what your problem was. I just popped up a 91M log file I had sitting around in my emacs (a CVS build from about a year ago, somewhere on the 23.x line I think). It took about 7-8 seconds to come up (probably building the table of line numbers) and is perfectly snappy interactively. This is on a laptop with 2.5G of memory running Ubuntu Gutsy.


   perl -n -e "s/(</li>)/$1\n/g; print" big_page.html > big_page_with_lines.html
:)


I opened a >120Mb genome sequence in Emacs, no problem. This was on a 64-bit machine with 3 Gb of RAM, running Ubuntu.


so maybe the problem was windows then? :)


Ok. I thought I read something where somebody was furious because their thesis had grown large enough that suddenly Emacs couldn't load it (or process the LaTeX?). I'm pretty sure it was Emacs 20, though. I'm glad it's not the case anymore.


try making the project drawer work with your version control system. Emacs is more extensible, but has a steeper learning curve.


The project drawer works with SVN if you install a plugin. But really, version control integration is on the way in the next version; the current project drawer is not much changed from the drawer which shipped in TM 1.0, which was created over the course of 4 months. Emacs has had decades of development. TextMate 2’s vcs integration, assuming the implementation lives up to the plans, will be quite amazing.


Parts of TextMate [still have an effective age under 4 months]. Emacs has had decades of development.

Although your tone suggests you want to use this as a justification for sticking with TM, it sounds a point in favor of Emacs to me.


No. It is not a justification for anything. It is merely an observation that one cannot make claims about emacs being ”more powerful” or “more extensible” based on the number of extensions it has, because they have been developing over many years, and shouldn’t be over-hasty in criticizing areas of its development which will be dramatically improved in the next release (not that it shouldn’t be criticized, notice).


Not necessarily... emacs has decades' worth of features that can't be removed anymore, because of some obscure usage that only 0.1% of the users bother with. This results in bloat and confusion for users who don't use those features.


The vast majority of said features are in modules that aren't loaded by default. Not all of them, but most.

In other words, they are removed by default.


As I said, TextMate is almost as powerful. I prefer usability to power, so long as power is still present in adequate amounts.


But that's the wrong dichotomy. The problem is you're stuck in a particular mode of "usability" analysis. Basically, if you're the kind of person for whom TextMate (or whatever -- any GUI editor ir IDE fits the same model) is good enough, and you don't know why you would want to try emacs, you are not going to like emacs.

The point is you have to "get" it. There's a point of epiphany after you've been using it for a while where you realize that you're not just changing your tool, you're changing the way you work and think about problems. This is the moment where "usability" suddenly acquires an entirely new definition for you, and you're hooked.

But you need to junk TextMate first. You can't just try emacs, you have to live it, at least for a while. How's that for a zen answer? :)


Dude, I know why I would want to try emacs. I've even installed it a couple of times to see if the interface got any less ugly, but I decided against it because TextMate is equally powerful for my purposes, but requires no learning curve and no lengthy hacking sessions.

I use TextMate rather than Emacs for the same reason I use Mac OS X rather than Linux. Emacs and Linux may be more powerful, but TextMate and Mac OS X enable me to get what I want done with less fuss, less time expenditure, and less random jaunts through strange configuration files to figure out why feature XYZ doesn't work. I use TM/OSX because they Just Work.

I'm well aware of the additional power that I could have with Emacs or Linux, but it's not worth the additional hassle.

Also, before comparing TextMate to a GUI editor or IDE, you might want to actually try it. Sounds like you haven't TextMate is a programmer's power editor on a similar standing to vi or Emacs. Maybe not quite as awesomely powerful as Emacs, but close enough to be suitable for most geeks.


I tried to like TextMate very hard. Coda is even better, like TextMate on PCP. Oh how I wanted to love Coda, but I just couldn't do it. It felt like having a one-night stand with the most beautiful 21 year old, all the right curves in all the right places, but you know she would make a terrible mother for your children. Emacs: the perfect mother.

Another analogy, this one for bike lovers out there: Emacs is like a Brooks saddle, because it's wildly uncomfortable to start with, but if you stick with it and work into it, it's the only saddle that conforms to your body. Once you break it in, you can never go back to another saddle for long rides, no matter how new and awesome it looks.


brianloveswords: Coda has to be the worst editor on the planet. It deserves no mention here. Seriously, it's the worst thing Panic has ever done. Ever. Sure it's pretty... but that's it. I'm seriously flabbergasted that people prefer Coda to Textmate.

Re: Textmate vs. Emacs: It's like comparing Apples and Oranges. An orange juice producer will farm oranges, and an apple juice producer willf farm apples.

To the man using Textmate on OS X, you probably code Javascript an CSS, and might dabble in Rails or vice versa. The guy using Emacs might be doing this as well, but there is a good chance he's a hardcore AI Lisp hacker.

I am a web designer. I write CSS, XHTML, and JS. I deal with Django templates all day long, a web browser, and the remaining time is in the terminal. I'm more terminal oriented than most/all designers I know, but for the most part I am playing around in a GUI wonderland. I use Textmate. Textmate really truly is a powerful editor, I will not disagree. Textmate is hands down the best editor I have ever used, for all of the reasons you have suggested. But I won't deny that Emacs is probably also one of the best editors in the world.

My CTO/Partner/best friend uses Emacs. He's a python hacker. He writes python all day long. He's got a Thinkpad running Ubuntu and quite a few terminal windows. He's doing a totally different kind of work, interfacing with the back-end mostly while I deal with the front end. He swears by Emacs. I tend to think of Emacs more like an OS actually... you can play games in it, browse the web, use your term, check your mail, and edit all kinds of crap. It's extremely powerful. The sumo package contains a TON of extra stuff.

Anyway, no one can really say X editor is better than Y editor. Similar to the way a programmer will ultimately take on a certain language as his own, the same thing occurs with an editor. At some point learning or playing with a new editor is like learning a whole new language. Might as well get dropped smack dab in the middle of Spain, or throw out all of your Python/Ruby/insert-lang-here for Objective-C. It's the same kind of pain.

But I do agree that bloatware crap like Xcode and Eclipse are simply... crap.

Anyway hope some of that made sense. I might have gone off track a bit :/

For the record I am a huge fan of Textmate and use it religuiously. export EDITOR="mate -w" :)

Everything else is vim though, haha, sorry Emacs lovers.


sudo ln -s /usr/bin/mate /usr/bin/mate_wait export EDITOR="mate_wait"

"mate_wait" does not need a "-w"

I had a problem recently where crontab -e didn't like mate. mate_wait seems to work as an EDITOR value everywhere.


I read everything you wrote, and stand by my statements as written. You're not going to "get" emacs because you just don't understand yet. Use it for a month. Until then, reserve judgement. Or don't, I guess. You can write perfectly fine code in TextMate I'm sure.


As jacobulos put it, why don't you spend a week in TextMate instead? :-)


I've spent over a year in textmate and now I use emacs. Emacs is a much bigger pain in the ass to get setup, but I use my editor for about 8 hours every single day. The effort is worth it in this case (imo). Plus I'm not tied to a mac with emacs.


If you had spent any significant amount of time using TextMate, you would not make statements like this. Because everything you just said about emacs applies equally, if not moreso.

Spend a week in TextMate, and you will similarly “get it”, as many emacs power users already have.


I used textmate for over a year. I get it, but emacs is more powerful. I decided the painful learning curve was worth it because I use my text editor for at least 8 hours every day. Plus, with emacs I"m not tied to the mac platform and a non free program.


Okay. I have used both extensively: emacs for several months, and then TextMate for the last 2 years, and I find TextMate more powerful. I decided the painful learning curve wasn't worth it, because it made the editor less flexible, and it made what flexibility it does have unpleasant to exploit.

And I'm a certified machead, so that was no object.


I used Emacs for about three months and I could see the reason people deemed it great. Still, it somehow didn't work for me. Felt too clunky and ugly somehow. Also, I tried Vim for even a longer time, but couldn't get to love it. Also, neither editor is usable by anyone other than me, which was important to me at that time.

(I used both for several hours per day for Latex, C/C++ and Matlab)

Then, I started looking for Alternatives. I found MANY. But the one I really felt in love with is TextMate. Somehow, It just works for me... I love its design: This "Emacs the easy way" with beautiful text rendering and without icon-clutter. But that is probably just me. Everyone has to find his own solution.


I started using vi in '89 to program in C/C++.

In 95-97, I used emacs mostly to program in perl. Then I discovered vim, it seemed as powerful and I used it until 2002 when I disovered Jedit.

It was around 2005, that I started using Eclipse. I think I was the last kid in the block to use it and it is a big help, I love the refactoring functionality.


Any vimmers out there who would stay with emacs after giving it a fair shake? Any converts from emacs to vim? I want to hear your story. Thanks.


I used vim for about 5 years. I decided to give emacs a roll about a year ago. The first few weeks were hard, the next few were interesting, and the rest was just fun.

I suppose it's because I've always been a tinkerer and I love the fact that the wall between editing with emacs and editing emacs is so small.

Anyways, this is all old news. Everybody already knows the arguments for both sides and they're both true. I still use vim when the job fits (configs or quick edits) and I use largely emacs for my development (even if though I work at a vim shop and everybody gives me dirty looks).


Emacs > TextMate > Vim, so only indirectly what you asked.

With Emacs, I got the feeling that it's the kind of environment where time cultivates appreciation moreso than TM or Vim. I gave Emacs about 1.5 months, and stopped because I didn't want to learn elisp and because I was getting pinky syndrome (I think that's the accepted term).

The switch to TextMate was laughably trivial, and I would have switched out far earlier if it wasn't for some of the slightly more advanced bundles. Interestingly enough, while I learned the snippet system, I found myself using them very sparingly.

My Vim switch was cold turkey, and was reasonably straightforward. I've been seriously typing at a keyboard for a long, long time, but Vim taught me that I didn't know a keyboard as well as I thought. In the beginning, the Vim commands weren't as easy to get to (even if I knew them) as typing prose--I guess typing familiar words just become part of muscle memory. It's been several months now, and I'm both happy with the switch and fairly proficient in Vim.

Gun to my head, I'd take Vim over emacs, but only marginally so. It probably has to do with the fact that I didn't begin to customize my emacs environment. I don't know if that's what I wanted though--I love that I just take my .vimrc (it's quite short), drop it on my server, and the only thing that's different is the fact that my theme is different to what MacVim offers me. It just isn't that easy with emacs--at least, not as easy as carrying around a .vimrc on my thumbdrive and dropping it where I need.


Definitely not as easy with Emacs. You have to carry a .emacs around on a thumbdrive and drop it where you need.


I'm in the process of switching from vim to emacs right now. It's frustrating, although viper-mode takes a lot of the pain away, and to be honest I find it a really nice combination to have the vi editing modality readily available within the powerful framework of emacs. Remapping caps lock to Control has helped enormously.

The most notable thing is that emacs encourages you to live in it much more than vim. With vim, I would navigate around in the shell, open up a file in vim, edit, close, repeat. With emacs I'm finding that I spend more time just switching buffers instead of running back to the shell because emacs doesn't simply quit when I kill all my open files. There's always more buffers, so the app stays open and I tend to remain there.

I'm still in the process of getting up to speed with basic editing things, although I've found that the way it manages buffers and what it calls windows (what the rest of the world calls frames these days) is quite easy and quick to use, and I found myself able to navigate around in emacs fairly quickly. All in all, I'm not 100% sure I'll stick with it, but I'm happy so far and I know that I'm still getting over the hump to where I'll be truly productive with it.


If you are anything like me, that is, someone who loves the speed and "feel" of vim, but also enjoys the buffers of emacs. You might want to check out vile (vi like emacs). [http://invisible-island.net/vile/]


>With vim, I would navigate around in the shell, open up a file in vim, edit, close, repeat.

I do that to. I open up an `eshell`, navigate around. Then I edit a file with `vi filename.py`. That works best if you have `alias vi find-file $1` in your eshell aliases.


I've converted from emacs to vim, but I'm not sure I gave emacs a "fair shake". Early on I was programming with Windows programs using typical GUI interfaces, although I'd also picked up the appropriate shortcuts of pico, joe, and jed. This made emacs the most comfortable environment for me as I headed into coursework using Linux systems, even though I never used much more than cursor movement, copy/paste, and file saving. At that point, I was pretty sure the vi cheatsheet on the lab wall was some kind of joke, like EDLIN in DOS.

But I later entered a new school with more coursework, and I found the emacs key combinations increasingly uncomfortable. A few of my classmates were using vim and recommended it to me. After several weeks of struggling with vim, I was eventually up to prior levels of productivity, with greater gains in the following months as I picked up more shortcuts.

I feel I perhaps didn't give emacs a fair shake, though, because I never used it as more than a glorified notepad. The feeling I get from the various emacs articles I read online is that you don't see big gains in emacs over, say, vim unless you use a lot of custom elisp... a point I have not yet reached.


Vim for five-ish years, then Emacs for two, so far.

I just wrote this a few days back: http://news.ycombinator.com/item?id=230990


I was the one asking the parent question (something about a comparison between Vim and Emacs). I have, since then, spent at least 20 or so hours struggling with Emacs...

And although I wasn't sure at first, I'm pretty sure it's worth it. Though many of the things in Emacs are nowhere near perfect (like the in-buffer terminal, blech!), it feels like something that can go much farther than Vim in terms of I'm-going-to-turn-my-text-editor-into-a-full-fledged-IDE type stuff. I still don't know if I'm going to stay with it, but I've promised to myself that I'll use nothing else to edit text for a month. When that's done, I'll decide, though I suspect by then I won't want to switch.


I didn't like the shell either, until I realized that it's still an editable buffer.

For example, you can take the output of a command, transform the text directly using standard editing commands, fix the weird one-off cases manually, and then pass the results back to the command prompt. Or save the results to a file. Or interleave with code. (etc)

Turning the entire shell into a fully editable/scriptable/keyboard-macro-able scratchpad is a beautiful thing.


You may find the shell in plan9 really interesting, incidentally.


You're right, that is interesting--yet another reason to get Xen up and running...


The terminal seems most useful to me when copying its output to other buffers. It's not all that special as a terminal program, but it's already inside Emacs, y'know? (I like C-z bound to switch to shell and C-z in the shell to switch back.)

Also, since it's only been mentioned once or twice in this thread: Try re-mapping CapsLock to left control.[1] Ctrl is used quite a bit in Emacs, and often held down while navigating (loosely comparable to toggling modes via Escape in vi). You could also use right-ctrl with the side of your hand when using keys on the left side. People complain about "Emacs Pinky" from bending it down to Ctrl all the time over the years), so if it feels awkward you may want to move Ctrl.

[1]: http://www.emacswiki.org/cgi-bin/wiki/MovingTheCtrlKey


I haven't given Emacs a fair shake yet, but it's definitely in my to-do list. Maybe with Viper to mitigate the shock...


I've used VIM pretty consistently for the past two years, and I love it. The only other editor I use is Dreamweaver, and that's such a different beast it's not even funny.

I am worried though if someone is using a directory structure they can't memorize. Isn't the point of a directory structure to keep things organized in a reasonable fashion?


If you want a more modern tool in the same class as Emacs and Vim, take a look at Sublime Text: http://www.sublimetext.com/ Unfortunately, it's Windows only for now and the author is charging for it which is probably a deal breaker for now.


sublimetext is the only application that can make my windows box crash to the point that I have to reboot. I tried it at serveral version points. Reported to the author, he couldn't find the problem.

And it has exactly one (1) feature that the others don't: the bird-view of your code.

Stay away.


I learned Emacs cold turkey this summer and am loving it. The only problem is I use Visual Studio at work and the Emacs key bindings for it are not so good. So I end up deleting a line every time I try to save my files with ctrl-x ctrl-s :-)


Really? I admit I don't normally use the Emacs bindings in Visual Studio myself, but I just tried them and ctrl-x ctrl-s saves the file just fine for me. (This is using Visual Studio 2005, under the Tools | Customize menu option, Keyboard... button, Emacs keyboard mapping scheme.)


No no, I mean that I don't use the Emacs bindings because other things don't work the way I want, like tabbing. So when I'm using the c# bindings I find myself running strange commands accidentally.


I'm trying to do the same thing right now. After about an hour of using it though, I start wanting to beat my head against the wall because I haven't yet mastered everything in Emacs that I used to be able to do in Vim.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: