Hacker News new | past | comments | ask | show | jobs | submit login
After over a decade of Vim, I’m hooked on Emacs (complete.org)
180 points by zeveb on March 9, 2018 | hide | past | favorite | 161 comments



I did the same thing and stuck with it for a year. In the last couple months I decided that I needed to stop tweaking every last thing and wasting so much time and compromise by using the tools that allow me to be the most productive.

I dropped my highly customized emacs for Omni Focus (org-mode), Mail.app (mu4e), SublimeText (general emacs, org-mode), Mendeley (org-ref, helm), MS Word (LaTeX-mode). I never stopped using PowerPoint because it’s the standard in science and the couple times I tried Beamer (directly and through org-export) were a nightmare for having multiple figures per slide. I also sometimes use Excel now, though Python is still more often the better tool. I have not found a good personal knowledge base; right now I am using Evernote.

I have several collaborations and projects. Keeping my tasks organized needed to be easier than org. Working with other people in formats that will make them happy to work with me was also critical. Even with things like Overleaf and ShareLaTeX, it is too hard to collaborate with others.

Giving up plain text formats and version control are challenges.


I have also tried to live with Emacs for about a year. In most respects it is absolutely great, inline LaTeX rendering, org-mode is like having Jupyter in your text editor (and a lot more), Magit is hands-down the best Git porcelain.

However, I have found that both with Spacemacs and vanilla Emacs + packages I basically end up with a Rube Goldberg machine where it is hard to see how things work and fit together. Combined with the tendency of packages to break very often, I frequently had the feeling that the ground was crumbling under my feet.

I am mostly back to vim now for editing (+ Things for todos). For presentations and text I use one of {LaTeX, pandoc Markdown, Deckset.app Markdown}.


> org-mode is like having Jupyter in your text editor (and a lot more)

more like:

jupyter is like having emacs in your browser (but a lot less)


I forgot about Magic. I almost want to have emacs open in parallel just to have my projects open in Magit. You never have to tweak it and it’s more effective than anything else.


Packages breaking is a real problem. I’ve found that explicitly versioning them (eg comitting their source) has made this much less of a problem.


You may be interested by the straight.el package manager.

https://github.com/raxod502/straight.el


Thank you!


I’ve used emacs for over 15 years and my init file does have plenty of custom code but yes, I also decided several years ago to drop all fancy org-mode config. There is a risk of spending way too much time configuring and dealing with breakage, and the TODO stuff didn’t have the magical effect I’d hoped. As a programmer, I eventually found org-mode too much of a violation of the Unix do-one-thing well design philosophy.

However I still use org-mode as an outliner, containing little code blocks and informal TODOs, and I love using emacs and writing modest Elisp modifications and have successfully introduced people to it. I wish more people knew how to try it out in server mode with emacsclient as there is still a widespread misunderstanding that it is slow to start up.

One final comment: the rise of markdown was a huge blow to org-mode. It doesn’t always make sense for me to draft notes in org when they ultimately will become comments on github (or JIRA for that matter, oh god).


Github renders .org files just fine. Example: https://github.com/josteink/csharp-mode/blob/master/README.o...


It renders them (but only the README, not PRs or issues or comments), but ultimately it’s only ever going to support basic org-mode features because:

(1) org-mode is a format native to emacs. The org parser and HTML formatter are written in elisp.

(2) github is not going to run emacs processes server-side, in order to render user content in org format.


Same, though I switched off Emacs due to moving to a consultancy and working every couple of months on a different project in a different language. For this kind of work the Jetbrains products were a godsend. The switch to OmniFocus followed logically (bonus points for phone sync).

Now that I'm back to working on one product (Ruby/Javascript) again I tried VS Code, since that's what my coworkers use, and it's been fine. Having ripgrep as the search backend is awesome and the built in terminal gets the job done. I tried going back to Emacs but I got fed up with the mental overhead of remembering rectangle behavior and emacs regexps.


I understand the choices you've made. I wouldn't make them myself, but I can tell my needs aren't as complex as yours (appreciate that you haven't had to resort to anything that only runs in a browser).

The emacs buffer abstraction (and bag of commands) is what makes it so good for me. Having everything in one place is great, and having everything (mostly) just text is also great. I hope more people with your type of workflow needs have the patience and free time to write good emacs packages.


> In the last couple months I decided that I needed to stop tweaking every last thing

That's why I use emacs Prelude[0], a set of defaults which are, all-in-all, pretty great.

I much prefer having the same environment for everything. The fact that you have three different, presumably incompatible pieces of software replacing parts of Org mode is itself pretty revealing.

[0] https://github.com/bbatsov/prelude


> In the last couple months I decided that I needed to stop tweaking every last thing and wasting so much time and compromise by using the tools that allow me to be the most productive.

There's a great reddit posting today about tweaking your emacs config.

https://www.reddit.com/r/emacs/comments/83baf5/i_find_tweaki...


> In the last couple months I decided that I needed to stop tweaking every last thing and wasting so much time

Isn't that exactly the same thing vim pundits are doing these days? Typical vim installations now load megabytes of macros and settings. I've always stuck with plain vi / nvi (until the encoding problems became too much) and never bothered with all the autocomplete scripts etc. ...


Yeah. I usually just use vanilla vi/vim on any servers I remote in on and for small couple line edits locally. Everything else in SublimeText or PyCharm. One reason I moved to emacs in the first place is that vim plugins hardly ever worked well and together.


I think the noisiest ones are yeah, but most Vim users I know (including myself) have a tiny .vimrc and a handful of plugins. I think generally if you're a Vim user you're a "less is more" person so that probably permeates through.


Wow, I just can't imagine how anyone could do that. Some of those tools I can understand but MS Word? Powerpoint?

I use org-mode and I make exports for nontechnical people. I use org-mode and Pandoc to make MS Word files which does everything I would ever want to do. Org-mode and ox-reveal (using reveal.js) is great for slides.

I would say just use whatever works for you, but it makes me sad that I can convert my things to your format but you can't convert your things to mine.


Ok, so cooooolest thing ever with org mode I found out the other day is that you can refer table cell results from your paragraphs:

  #+CAPTION: Constants
  #+NAME: tab_constants
  | Constant                  | Value |
  |---------------------------+-------|
  | A                         |     1 |
  | B                         |    90 |
  | C                         |    90 |
  | D                         |    12 |
  | *Total*                   |  240. |
  #+TBLFM: @6$2=@2 * @5 / ((@3 + @4) / 60 / 60)

  We come to the conclusion that with src_emacs-lisp[:var d=tab_constants[2,1]]{d} VR rig constantly busy for src_emacs-lisp[:var d=tab_constants[5,1]]{d} hours.
  Resulting in src_emacs-lisp[:var d=tab_constants[6,1]]{d} people going through the experience.
And with this, whenever I change the constants in my table, my whole document updates. I find that insane. No more having to update numbers everywhere in the document everytime I change an input in my tables. Then you can just export to anything (I do org->html->princexml->pdf for easy CSS styling, but you can do org->latex->pdf beem).

I've also been giving it a try for brainstorming code and todos on side projects. Here's an example, it started by being pseudo code for some code, then basic python (because it was so close to my pseudo code, then I started implementing elisp in TDD inside my ord-mode doc. So it evolved like that: notes->pseudo code->tdd in the same doc:

  * Flow.el TODOs 
  ** DONE projectile-find-type-file
     CLOSED: [2018-03-07 Wed 22:12]

  ...

  *** Check buffer file ends with test

  #+begin_src emacs-lisp
  (defun get-styles-file ()
    ...)

  ;;;;;;;;;;;;;
  ;;; Tests ;;;
  ;;;;;;;;;;;;;

  (get-styles-file) ; /..path../notesStyles.org

  #+end_src

  #+RESULTS:
  : /home/thomas/config/spacemacs/flow/notesStyles.org
What's really cool about orgmode rather than MS word is that it's text, so easily portable and gitable. You get powerful track changes for your documents.


Vim has been a bit of a mixed blessing for me. I rarely actually use vim, but I use the keybindings everywhere.

It's great because I can fairly comfortably move between most editors because most editors have a vim mode.

The downside is that most editors don't have a complete vim mode, so it's never 100%.


Ah see what really bugs me is that most vim modes do try to be a complete vim mode (and the fact that they never succeed just adds insult to injury), they always try to be a vim emulator instead of providing vim-like keybindings that make sense in the context of the editor.

I do appreciate that I'm very much in the minority here though.


I'd argue that evil is the exception to this. It's vim emulation is astoundingly good.


Neovim has a plugin api that let's it be used as a "real vim" back end for text editor plugins.


And I'm still searching for the good Python and PHP IDE that implements it. I'm hoping that Jetbrains will, as I use IdeaVIM in a few if their products, but right now I always have to switch between the IDE for general editing and VIM 8 or NeoVim for terrific macros or some hardcore surgery. Having that power right in PyCharm or any other decent IDE would be a dream.


Bonus points for using vim mode on browser editors like CodeMirror or ACE, and then trying to delete a word via <C-w>.


Add to that using C-q often in Emacs to insert literal characters when using sth. like quail, and then forgetting you're in a text area and not in Emacs and hitting C-q. Fortunately Firefox restores the content of the text area...


I have 'command' on the mac mapped to meta, sometimes I try to delete a word or reflow a paragraph...


I use vim bindings in zsh, tmux (tmux modality plugin) and chrome (vimium). Pretty much 95 percent of my computer interactions right there.

Why not just use vim? Why bother with other editors? I have changed jobs but carry my dot files with me.


>Why not just use vim? Why bother with other editors?

Because I use C# a lot and I really like all the support I get from Visual Studio.


That's quite like my experience. I started out with Emacs, but I learned Vim along the way and the key bindings are awesome. I use them in other editors, but often they conflict with the editor's defaults, or they're not emulated properly. I don't use Vim exclusively (I couldn't get to customize it, couldn't get to learn vimscript), but the key bindings are great.


Exactly this is what I was thinking when I concurrently left kind of the same comment but with a lot less clarity: https://news.ycombinator.com/item?id=16552613. I am stuck in vi mode everywhere, but different flavors. And yet I like it a lot. (The latest version of JetBrains' vi mode with zero latency is great!)


VS Code comes close though. Would still rather hit Vim/Neovim to do work in.


Surprised to see no mention of spacemacs[1] so far - you get the evil keybindings with the helm user interface.

[1] http://spacemacs.org/


I tried out Emacs when I started learning Clojure (through Clojure for the Brave and True[0]) and didn't find it at all usable. Remembering the various chords was at best obnoxious and at worst, a huge productivity loss. It felt like it would take weeks or months before I was even close to productive.

Later, I tried picking it up again, but this time chose spacemacs. Hoooly crap, what a difference.

1. Discoverability. The helm UI is better than any docs, since it's there when and where I need it to find the thing. It also provides the ability to search for arbitrary commands, which is great when you're learning a new mode or layer.

2. Modal editing. I wasn't a vim user before, but spacemacs has converted me over to the modal editing camp. It makes a ton of sense now and is a joy to use alongside Emacs' power.

3. The layer system is way easier to use than ELPA directly and takes most of the pain of configuring packages away.

For someone who wanted the power of Emacs without having to touch the insides, spacemacs is wonderful and has fully converted me over to using it everyday!

[0]: https://www.braveclojure.com/


What actually is the power of emacs?

I just ask because with vim, I can easily describe why I like it - it has about a billion cool and useful text-editing features arranged in a way that makes them easy to use. I understand Spacemacs replicates basically all of these features - but what's emacs adding to this? I've tried spacemacs several times, and each time I've been stopped by not really being able to find anything, aside from org-mode, there's nothing there that justifies the (relatively) slow loading times and generally heavier overhead of emacs.


Great question. For me, Emacs ended up taking the place of a number of tools I use daily:

1. Text editing (obviously). spacemacs provides nearly any nifty trick that vim would give you for text editing (and like I said, I'm a believer in the way of modal editing).

2. HTTP client. Emacs has a package called "restclient" that allows you to write what amount to cURL commands - in plain text, with documentation - and execute them in-line within my editor. Other teams I've been on use Postman, which is great, but I like the fact that I can save the file and commit it alongside our services/tests/etc.

3. Note taking & task lists. Org-mode is Emacs killer app. Honestly, I'm still pretty fresh to this whole "being organized" thing. But already I'm finding myself writing more and more notes, TODOs, etc. and it's really helping me on a new project that is complete chaos right now.

4. Clojure IDE. Cursive for IntelliJ comes close, but nothing beats the experience of doing Clojure development in Emacs. Since my team adopted it as our daily workhorse language, I've never had a moment where I wanted to leave Emacs. It's integration with the REPL and LISP in general makes it the most powerful programming environment I've used to date (YMMV).

There might be more... the point is that Emacs is more like an application platform than a text editor, and it has some really powerful applications that have been developed for years. I now have this strange urge to do more and more inside of Emacs, if only because it gives me a common interface into my workflow.

EDIT: Forgot, magit for doing git operations. Great interface and I only (very very rarely) need to drop down to terminal to do things now.


So I've never really used emacs... but I'm not really sure I understand why a text editor would need all these things? Like, why do you want an HTTP client in your text editor when you already have wget, curl, nc, etc available in your shell? It kind of sounds like emacs was incorporating anything remotely related to it before systemd came along and made it cool.


That's why the joke "Emacs is a great OS, if only it had a good text editor," lives on and has a kernel of truth. It's really not a text editor, it's a LISP VM. It also does actually have a pretty good text editor out-of-the-box.

It's why the vim vs. Emacs "war" isn't really a fight over text editing, but an ideological battle of "one tool that does one thing well" vs. "one tool that has everything I ever need."

Personally, I find integration a huge selling point, and the Unix pipe interface leaves a lot to be desired. Writing some elisp code, or (preferably) installing a well-documented layer/package, is preferable to me. The specific tools I need also happen to be well supported in the Emacs ecosystem.


>but I'm not really sure I understand why a text editor would need all these things?

It doesn't. But thinking of Emacs as a text editor is like thinking of Firefox as a document displayer.

>Like, why do you want an HTTP client in your text editor when you already have wget, curl, nc, etc available in your shell?

There's a reason to prefer using these in Emacs over the shell. It is because Emacs is a better embodiment of the UNIX philosophy than the UNIX shell itself is:

>Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features".

A lot of standard UNIX tools are laden with features. But well, that could be said of Emacs as well.

>Expect the output of every program to become the input to another, as yet unknown, program.

Emacs does this much better than the UNIX shell, in my experience. The level of consistency you see in the Emacs ecosystem just doesn't exist in UNIX. With UNIX, you really are feeling like you are gluing stuff together. With Emacs, it feels much more natural.


Emacs covers more than just text editing. To be honest, if I just wanted text editing I'd probably stick with vim. But emacs is a live, extensible, programmable environment. I essentially run applications on top of it (magit, org-mode, IRC via erc) and interact with other environments through it (common lisp via slime, erlang). And it happens to have (for me) a pretty good text editor (certainly better than most IDEs have, though arguably not as good for some tasks as vim but I am used to it).

The loading times aren't slow if you run it in daemon mode (as I do now) or strip down your .emacs file to its core (so you only load what you need for the files you're editing).


Think of it this way, Emacs is powerful enough to let someone come in and write a very powerful plugin that lets you use vim inside Emacs. That power is then translated into other equally powerful and well written packages for Emacs.

Org mode is great and can do an absolute ton.

Magit is the best git interface I have ever used and I have used a ton of them.

Evil mode is an almost complete vim and I consider myself to be a pretty power vim user and have used it for many years.

Helm is amazing at searching through lists of things and enables other things like swoop(also amazing) which takes your file and puts each line into a temp buffer and let's you search for lines in that file. Say you wanted lines matching foo and bar all you do is type 'foo bar' and it updates the list of matches in real time. If you move your cursor over any of the matched lines it jumps to the context in the file. If you hit escape it goes back to where you initiated the search, if you hit enter it jumps to that line in the file and dismisses the dialog.(actually a temp buffer that you can edit later if you wanted.)

irc, terminal, email, a slew of other things that are treated as normal buffers that you can use all your normal editing commands in. The entire editor is introspective and customizable as everything is a function that you can bind contextually and most are written in Elisp.

That's the power and I am really only scratching the surface. Hop onto the spacemacs gitter chat and ask any other questions you have.

Edit another invaluable one is 'which key' that tells you what the next available key strokes are once you press something that is the start of a multi key chord. In spacemacs this is used to great effect with the space bar starting most of the non vim leader keys actions. These are also easily remembered because they usually start with the same letter as the idea. 'Spc b' is the menu for all the buffer actions. Spc p is projects, Spc f is files, Spc a is applications, Spc s is extra searching functions.


I think you have a number of answers already, but saying "aside from org-mode" is throwing away too much. Many people do not leave Emacs purely because of org mode.

If you've used the Ipython notebook (i.e. Jupyter), realize that Org Mode had much of that capability before the notebook existed - and it works for many languages, as well as across languages (you can send the results of a python code block to a C++ code block). When I wanted to learn Haskell, keeping notes in Org Mode was great. I would put in a code block, and add notes on what the code would do. Any time later while reading my notes, I could interact with those code blocks and fiddle around with it to check that my understanding is correct. I then exported the file to HTML, and I now have very nicely formatted notes for Haskell (or C++, or whatever language you like).


Simple: It is programmable, and built for maximal extensibility. I know of no other environment (including e.g. Python) that is as malleable as Emacs. In the end, this will lead every user to make Emacs their Emacs.

It will become different things for different people, to the point where it may be barely recognizable as Emacs. That is the power of Emacs. It can be whatever you want it to be.


Text editing: macros, rectangular editing, CTRL-{a,e,k,y} to move fastly in a line without changing modes like in vi. Opening remote files via ssh. Also: window splitting, web mode, eshell (a shell that behaves almost like a text buffer so you can go back and copy stuff, CTRL+B to move up) Also: tetris (M-x tetris)


It’s that nearly the entire runtime is executing as lisp code that you can modify dynamically. There’s no boundary between your code and the editor code. So the experience is that your text editor is written in your code and that you can change any aspect at the drop of a hat.


Extensibility.

Every command, even pressing a letter, has a corresponding function. Utilizing ELisp you can essentially make the editor do anything you want (and because of that and how long it has been around...everyone has already made it do anything you could want).


To avoid slow loading times use daemon mode where you load an emacs server once at login and then start any number of clients instantly. You also aren't stuck with one window.


I've been addicted to Kakoune[1] for about a year now. My only complaint is it's a bit short on language specific features, due to the small community.

I really should try Spacemacs. I'm quite curious to see how the two mentally compare. For me a huge thing about Kakoune is seeing the selections ahead of time - Vim always had me guessing at what a delete (or w/e) action is going to do. Kakoune makes that so nice.



I wanted to love it but it takes longer than Atom to start up on a new iMac.


You are supposed to use it with emacsclient. You run spacemacs as a daemon the first time and just connect to it all the subsequent times.


If you run Emacs daemon it will start up fast anytime you need to use it.


It sounds like he never wanted vim to begin with. He wanted an IDE, which vim isn't. Vim is your editor and Unix is your IDE.

Effective vim does not start with a lot of plugins IMO. If you expect more than an editor from vim, you have come to the wrong place.


I've been using vim for over 10 years. This is, imo, the happy path to being very productive in vim.

1. Learn basic movements and insert/normal mode

2. Learn advanced movements. When you want to insert some text learn the fastest way to move your cursor to that location in normal mode. Learn the different way move from normal mode to insert mode.

3. Learn find & replace commands.

4. Learn macros for repetitive tasks.

5. Learn when to use visual mode.

6. Improve .vimrc file. Remap keys to reduce keystrokes based on your personal workflow.

7. Learn about buffers.


This seems about right, I would add that it helps a lot if you go to vimgolf and try some of the exercises people do. It will make you do things differently and expand your vim horizon.


> Vim is your editor and Unix is your IDE.

That's the first time I've ever heard anyone say that. It has instantly changed the way I think about vim and now I understand the "emacs is an OS" thing fully.

Having said that I do happily use both Unix and emacs and think they both have their place.


If you take this philosophy to its limit, you can derive a ton of productivity with just plain vi (or nvi) and Unix tools. I use neovim nowadays but I always feel the draw of the purity and temperance of plain vi.


That's funny because I think of emacs the same way... it is my editor and Unix is my IDE. The only "modes" I use in emacs are different syntax-highlighting and the occasional visual buffer-compare to unsnarl a particularly awful merge conflict. In spite of being a Lisp and Scheme programmer back in the day, I have never had an urge to extend emacs with anything. I think it simply has the right UX for me.

It possibly goes all the way back to me using Wordstar on CP/M as a child, which had a similar buffer-focused UX with control keys to temporarily do some non-text entry. I also nearly always use emacs in X windows mode with multiple "frames" (separate X windows) opened into the same set of buffers and rely on the mouse-driven menus to find less frequent options and commands that I don't keep in my muscle memory.

I can get by in non-X mode over SSH but feel crippled, much like I do when vim is the only option on a system. Then, I'll just get in and out quickly to make small changes, preferring to navigate around via the shell/grep/less etc. while I plan my attack on a file.


Vim is enough of an IDE for C programming, certainly.

With ctags and GNU id-utils (mkid, lid), you get great code browsing: instantly find where things are defined using tags, and where they are referenced with ID utils.

I map the K command (normally used for man page lookup for the word under the cursor) to do a lid lookup and turn the results into a quicklist. The :grep command is also mapped to lid lookups via grepprg. lid uses a binary database file named ID which is generated using mkid. It instantaneously finds all occurrences of any identifier in a fairly large tree, like the Linux kernel.

There is a code completion plugin for Vim so when you type foo.bar->, you see a popup with a list of structure members and such.

Of course, there is the great syntax highlighting and auto-indentation which catch coding typos as you make them: IDE-like feature.

Vim's :make turns compiler errors into a quickfix list so you can move between them and fix. I map :W so that it saves the buffer and runs :make.


My #1 Vim tip:

Use ":set hidden"

(Don't rely on ":help hidden" to actually explain it, though.)

Here is why you want to use it:

You edit "file-a" and make some changes. Then you flip to "file-b" using ":e fileb". Vim says you cannot; you have unsaved changes. Okay, so you ":w" and then flip. But then you return to "filea" and want to undo the earlier changes. Oops: lapsing into a dumb Vi from Unix, Vim says there aren't any changes to be undone.

Vim throws away buffers by default when you switch out of them, unless "set :hidden" is turned on. Then it behaves like any other normal application with multiple buffers. The "filea" buffer will stick around and keep its undo history, marks and other state.


I think that's kind of elegant, and helps validate my preferred environment of `tmux` + `nvim`


I used Vim for 15 years, then switched to Emacs+Evil. Vim is the best interface, Emacs the best platform. Emacs+Evil combines both.


Addresses that old joke: Emacs is a great operating system, but it lacks a good editor; like Vi :)


Haha, I used vim for a few years before switching to emacs. My brain just does not work modally. Still miss the dot though.



I believe this is a different sense of mode:

https://en.wikipedia.org/wiki/Vi#Interface


Vi is modal in a different way to EMACS. EMACS is not a modal text editor.


I've been using emacs for years, and I certainly did the whole "oh wow use emacs for everything" bit. Over time, I've pulled back and don't use many plugins outside of helm and flycheck.

I can not for the life of me understand the appeal of org-mode. It's probably just me, because most other organizers don't work for me, but if you're going to do a file-based organizer, it seems like you want a way to easily pull stuff out of old files so your working set isn't spread out all over the place.


> I can not for the life of me understand the appeal of org-mode.

I used emacs for nearly two decades, and I agree.

I tried - so hard - to get into org-mode, but just couldn't do it. I'd use it religiously for a week or two, and then the inertia was just too high. Or maybe I really didn't need all the features. Who knows.

Saying you "don't get" org-mode is blasphemy in the church of emacs, so I just assumed something was wrong with me and kept my mouth shut, and used it as a very simple todo list.

I would, however, use org-mode if I were say, working on a PhD or doing long-term public research where keeping everything in an open format was essential.


I stopped using org-mode when I moved from academia to work as a programmer so that fits with what you say.


I use org-mode for work actually. Kind of similar to this but less devops:

http://www.howardism.org/Technical/Emacs/literate-devops.htm...


There's a lot more to org than the GTD/organizer aspects. It's brilliant for just writing and note taking, and can export to TeX/PDF/HTML with no friction at all. It also provides a great environment for literate programming, and also for polyglot use cases (code + scripts + makefiles + whatever), as well as a Jupyter-like interface for "live documents".

The tables functionality is also great, and the structural editing aspects (move subtrees, bullet lists, etc) is very handy when editing as well.


>I can not for the life of me understand the appeal of org-mode. It's probably just me, because most other organizers don't work for me, but if you're going to do a file-based organizer, it seems like you want a way to easily pull stuff out of old files so your working set isn't spread out all over the place.

Genuinely curious: What did you find problematic with Org mode? I could not understand your example.

It would be bad advertising to say Org Mode is for everyone. Most people I know use OneNote, and frankly, One Note really is better in many ways. I would not try to convince them to switch to org mode. And although Org Mode is very powerful, there isn't a reason a given person should need all that power.

For me, when I encountered it while living in Linux land, I simply did not have any alternatives. I don't remember the name, but I was using a tool provided by KDE, and Org Mode was far better by comparison. So even for simple notes, Org mode was the superior choice. All the extra bells and whistles were icing on the cake. My email was all text as well (mutt). And it was really nice to switch to Emacs for email (notmuch) and have Org mode create TODOs with links to emails.


> it seems like you want a way to easily pull stuff out of old files so your working set isn't spread out all over the place.

Hmm. What do you mean exactly? I have all sorts of stuff in my org mode files, and what keeps track of them for me is the agenda view (i.e. it finds TODOs, deadlines, events, etc).


I've learned agenda views quite late, it's one of the killer features of org mode. Until then I mostly used org for notes and latex export. Maybe the manuals should emphasise it a bit more, it might be hard to discover.


> I can not for the life of me understand the appeal of org-mode

For me it's the seamless transition (no transition?) between deciding to do something, creating an outline, creating todo's, scheduling them/creating deadlines, writing code directly under the todo's using org-babel.


I guess I'm all alone over here with my love of nano - yes, its not as powerful as emacs (or even vi) - but it works well enough for what I need a text editor for.


Since we're plugging for minority editors, I'm going to do what I always do on editor threads and mention kakoune. Modal like vi, but with a different take on the paradigm, modern, embodies the "UNIX is your IDE" philosophy. Integrates in an unobtrusive way with tmux and X11 because window management is out of scope for the editor. Lets you attach multiple clients to the same session, supports multiple buffers. I'd used vi (and later vim) from 1997 to 2017, but kak won me over and I've been using it as my primary editor for over a year now.


After bouncing off emacs and org-mode, I’m enjoying re-acquainting myself with the Leo editor, an extendable outliner written in Python with some nice literate programming features (the editor itself is written in an outline), and acceptable vim emulation.

http://leoeditor.com/ pip install leo


I think the Leo editor is the only editor that can come close to Emacs in terms of power. However, the docs are just so, so bad. And the functionality out of the box leaves much to be desired. I couldn't find the keystroke to comment out lines of code. There were a few other changes in behavior that I wanted that I'm sure are trivial to fix in Leo via scripting, but things aren't documented.

I really, really want Leo to become more popular - but until there are better tutorials and documentation, I don't think it will go anywhere. And I'm at the stage in life where I can't afford to spend too much time figuring Leo out - there are too many other high value things to learn.


I find myself using JOE (Joe's Own Editor) more and more. I changed to it as a mental exercise to force myself to use it, but the movement keys make a lot of sense to me (I use Jstar mode, so it's the W-S-D-X cross) and it's friendly, stable, and deals with huge files really well. That said, I switch around lots of editors. I'm a plain text kind of person, so the ecosystem of Unix text editors means I'm permanently in my playground and will never get old.


I had a coworker (who I greatly respect as an engineer) whose main "IDE" was GNU Screen and Nano, which he used primarily for PHP and JS development.

I wanted to make fun of him, but his code was generally better than me, despite me using Vim, so I had to keep it to myself.


This is basically my environment - everyone keeps trying to convince me to use tmux - but I look at it, and for my use case, it includes no additional features, and I'd need to relearn keyboard shortcuts.


I would think you could relatively easily remap the tmux shortcuts to Screen ones, if that's the only blocker.


but what does tmux do that screen does not? I dont need split screen mode, for example.


Correct me if I'm wrong, but doesn't `screen` do split screen mode? `C-a S` I thought

It's not night and day really; tmux is updated a bit more frequently, and I find it easier to configure (I have a custom theme that I think is substantially sexier than the ugly green bar on the bottom). While it's almost certainly cheating, I do think that the mouse integration for tmux is quite good, and I use that semi-often.

I don't know how much you care about licenses, but tmux uses the more permissive ISC license.

Also, and this really makes no difference to anything, I like the logo for tmux :)

So, I dunno, it's mostly a matter of opinion, but I just have grown to prefer tmux.


What do you need a text editor for?


Exactly! Just 'cat' everything to the file. Have a mistake? Up arrow and edit.


editing config files, writing shell scripts, editing some web stuff - nothing complex.


You nano guys are literally crazy!

I also have a coworker who uses nano for js development atm and he appears to love it. I guess in the end the plugins, the tools, the etc. don't mean as much as the person typing/thinking.


Nano is great!

It can also color syntax. If only have a way to code-completion...


I think nano is great for small use cases. I couldn't see using it every day, but I would absolutely take it over all the modal editors like emacs and vim which just strike me as ridiculous and vaguely user-hostile. It may be underpowered but at least I can understand nano. The others, forget it. Using them is almost like joining a cult.


My resistance to putting my life in Emacs these days is that half my time is spent on mobile devices. I know org-mode exports a variety of formats, but how easy is it to interact with my todo list or add notes from my phone? If popular services all had APIs I could see hooking Emacs into them, but they just don’t in general.

I read the posts so far from this article, and was hoping to see the mobile angle addressed.


Beorg for iOS solved this problem for me.


If you use Android, I can highly recommend Orgzly (www.orgzly.com)


Interestingly, vim got the second place (after Visual Studio) in a recent C++ developer survey: https://isocpp.org/blog/2018/03/results-summary-cpp-foundati...

I wonder what's the go-to setup for C++ development in vim.


Many developer, especially on linux, only ask for syntax highlight

They use linux command line tools as the development environment

Personally, i find working without intellisense or intelligent auto-completion very hard, but it seems many developers don't find this as important as i do


Yeah I find intellisense/autocomplete really changes the way I design things. Without a tool like this, I spend a lot more time designing obvious, guessable, simple interfaces. With intellisense I'm not as concerned with that and I'll have much larger interfaces. I'm not saying one is better than the other (a lot of smaller, guessable interfaces might be more overhead than a few larger interfaces) but I do prefer my code w/o intellisense.


I did c++ in vim for a while, the movement in vim made it an excellent experience. I found the lack of intellisense made it annoying at first, but it force me to read the docs for the API or library I was using, which lead to much greater knowledge and probably a better implementation.


At work and play I use only vim to write C++, Python, Javascript, bash and web frontend stuff. Only plugin is rainbow parentheses. Manpages and web for docs. My system is very flexible and I wouldn't have it any other way.


So besides not having intellisense, you also don't have things such as go-to def/decl, show type info, switch between header/cpp files, etc... Not to mention debugger integration, right? Do you work on large scale projects with this setup?


I used to use pure Emacs, but switched full-time to Vim keystrokes after I got stuck for the billionth time trying to figure out the "undo direction". After a certain point, I realized that I really just needed Vim, since I never really used any of the features in Emacs except the text editor.

Now I mostly just use NeoVim, and with its async support and a lot of the plugins for it becoming excellent, I really have no desire to go back to Emacs...except that I keep hearing about org-mode.

One of these days I might go and try out one of the several plugins for Vim that try to tack-on org-mode, but as it stands I've gotten my NeoVim configuration so customized it would take quite awhile to actually replicate in Emacs.


Yes, the good ol' org-mode. I also consider it the core killer feature of emacs. However I found it doesn't match into all my processes. A text editor you can drop into different kinds of work processes. But a whole engine that uses formatted files as data storage is different. With emacs and org-mode the whole thinking is inside emacs. that's fine if you want to use it for everything. But if you just want to use org-mode and drop it into different contexts it fails.

It's still great tho, no criticism intended.


I have been using Emacs for 20 years, and still discover cool new things every now and then.


I like toys as much as the next nerd, but how do people see the perceived value of such tools? Personally, I am relatively unconvinced about the advantages of tools like emacs or vim over anything "regular" people use. IMHO Tools should be evaluated by the results they produce, and so are we seeing anything amazing from the users of these tools versus people who just use a notepad or whatever other generic system?


I too would like a clear answer to this, I've made numerous attempts to learn vim and emacs and can find my way around in both, but I never broke my habit of the old school CUA keybindings and arrow keys so always found myself gravitating back, especially when more full fledged IDEs and such were an option. ReSharper C++ is a major time-saver on a daily basis for me and I have a hard time thinking that would be easily replaced.


I think Vim for me is solely in the 'fun' category. I mean, actual text editing is a pretty small portion of the time I spend on programming - thinking, reading, and debugging are much more significant for me.

That said, I think that a well-set up version of vim is probably the most fun anybody can have while editing text. I actually enjoy doing finnicky and tricky textual tasks. You feel like a wizard literally every day. That's worth something for me.

I actually picked it up because I wanted a new natural-language text editor, and I figured vim would probably still exist in 20 years, and I don't like learning new things. It's been an unmitigated blessing in this role - and it's also pretty nice for programming, if a little bit more annoying to set up.


Whether there's an advantage that'll sell you on putting the time in, I don't know, but JetBrains' IDEs are my goto alternative to vim when I'm either stuck using Windows or need more IDE features for whatever language I'm working in. The vim bindings are probably the best I've used - there's still some mismatch, but for editing at least it works great.

So, if you ever feel the need to try it, CLion (which I would assume is on par with ReSharper C++) in vim mode may be a good option.


> I never broke my habit of the old school CUA keybindings

For me it's the opposite. I can't switch to IDEs and sometimes accidentally close browser tabs because my brain has mapped `cut` to Ctrl-W.


Although I love Emacs, I can relate very well to your comment. I've seen teams switch from SVN to Git, and have not seen any sign of improved productivity in the long run. Nevertheless, most do not want to switch back to SVN.


To be honest, Emacs never worked for me. It added too much complexity, for too little gain.

M-w, to do a copy. Or some other hobgoblin that I need to remember, when all I need is just a browse-able menu. I just need the shortcuts, for when I repetitively do an action, multiple times in a row, where it's quicker to just hit the keys, instead of using a menu.

Maybe it was cutting edge in the 1990s, but then computers got much faster, with more memory. And the graphical IDEs like Visual Studio, and Eclipse, blew it out of the water.

Today, when I'm coding in Python, then I just use an editor like Notepad++. I get enough syntax highlighting hints from that to avoid obvious coding errors.

Most of the time, I'm on Windows. I secure shell into the Linux server, and open the file from there. Then it saves back to the server. Then I run my code on a shell. This setup works pretty well.

If I need to review the code while on the shell, then I just open it in Vi. Or just open it in Windows.


Well that doesn't copy. That closes Emacs. No wonder you're having trouble! Use M-w.

You can do what you need using Emacs. Instead of context menus, you search for a less used command using M-x. It helps if you have ido-mode or helm. The latter, in my opinion, makes it a beautiful experience.

I tried moving over to JetBrains IDEs. It was too painful. I can see its value in a language where it can write most of the code for you. Otherwise, Emacs all the way.


Are you purposely being dense?


Oh I see what you did there. Nice try squirt. C-x C-c closes Emacs. I mean M-w and C-x C-c are so damn close together it's unfortunate you might mix them up, right?

That sort of crafty edit-a-roo is mighty frowned upon in most circles. And to be so rude! Now that, sir, is crossing the line.

I guess if I'm really dense, I can't purposefully be dense, can I?


Use what you want, but by default there is a browsable menu for those commands in emacs. They'll (just like any other decent application) show you both the command and the shortcut. And if you're on the command line (not the GUI version) just use F10 to access it (whether it's initially visible or not).


Yeah, I know all that. I used Emacs for years. I'm glad better tools came along.


> M-w, to do a copy. Or some other hobgoblin that I need to remember, when all I need is just a browse-able menu.

The way you wrote that suggested there wasn't a browseable menu and that emacs forced you to memorize "hobgoblin" commands (two-characters is "hobgoblin"?).

Also, for others, there's CUA mode which makes the standard Windows' C-x, C-c, C-v cut/copy/paste commands available.


No mention of evil, which is always my first question when I consider trying Emacs: how will I get past not having vi bindings?


I like both, but I still absolutely love two features of vi:

- hjkl movement keys (which depends on multi modes)

- . (dot) to repeat the last command

But honestly, there are so many fantastically useful features of vi that it's hard to give up.

I learned Emacs because of Clojure, and I got reasonably proficient with it. Thanks to Emacs, I now am much more efficient in editor boxes and terminals because of ctrl-p and other movement keys, as well as jump to begin/end of line, etc.

But vi is preinstalled in more places (even if it's a weak minimal installation), so it will get used rather than me installing emacs on some system I only need to be on for five minutes.

Vi also seems more performant. I haven't attempted to measure, but it sure feels like it has lower latency than Emacs.


>But, critically, automatically embedded in that note is a link back to what I was doing when I pressed C-c c.

That's neat. How do I do this? My setup is almost a decade old.


I recently tried giving Emacs another shot, as it was my first love, with Spacemacs and it was terribly slow. I couldn't believe how long it took to boot up and how choppy it was compared to SpaceVim.

Having started with emacs to use with LISP/Clojure I ended up with Vim because it's just felt lighter and the key layout more logical. And much of the plugins were comparable or superior, with the exception of LISP languages.


Your last sentence is interesting. As a vim user, I've always regarded emacs as having a much better ecosystem. The only plugins that I've found superior in vim are those related to text editing (for example, new operators).


When my new job added Slack to the mix, that was finally the last straw.

And later...

So I found myself switching from Thunderbird and mairix+mutt (for the mail archives) to mu4e, and from xchat+slack to ERC.

If being able to use Slack from Emacs was the main point of this, he is going to be very sad in a few weeks.

https://news.ycombinator.com/item?id=16536254


FWIW apparently emacs-slack uses Slack's API rather than the IRC gateway, so it will actually stay working (for now), or so I've read: https://github.com/yuya373/emacs-slack


I still use Vim (neovim) but switched my notetaking to Org Mode + Evil. It's great, especially capture templates and the export features.


emacs is nice when you want an editor that has modest/ecent support for a variety of languages. Sometimes you can get a better experience with a flagship language ide, but if you use a lot of different langs or 'botique' langs then emacs is a good common denominator


In short, org-mode was the gateway drug for me, and since I don't have any religious feelings towards any editor I found it easier to switch entirely, rather than keep using vim for code.

Although emacs is my main editor I still use vim and try to keep the memory of keybindings alive.


I really like the idea of Emacs/org-mode for everything, but my perception is that image support and mobile support aren't very good (compared to, say, Evernote). A pictures is worth a thousand words, so having pictures as part of my notes is crucial.


Image support in org buffers is pretty good, not sure what's the situation in mobile (I use orgzly, which AFAIK doesn't support images). If you want previews for URLs and such, I think you'll be better off with Evernote (though you could probably automate the screencap + linking when doing captures, if you're into that)


I've wanted to learn emacs for a long time, but every time I try it I get overwhelmed after 5 minutes, close it and swear to try again later. One of these days...

* edit-- not that it looks all that hard, just the sheer amount of things to learn makes it daunting.


Protip, don't try and learn it all at once, it's like drinking from a firehose. Go through the tutorial, learn the basic stuff (open/save files, exit, search, replace), and then add new stuff as you actually need it.

I've been at it for over 16 years, and I'm still learning new stuff surprisingly often


that's why I love spacemacs - with the default setup, you hit the spacebar and a text based gui with all the possible options pops up. it allows me to continue to actually work instead of floundering about for some simple action while hammering the keyboard shortcuts into me through repetition


I'm giving spacemacs a try now, thanks


Overwhelmed with what exactly? (long time Emacs user here, just curious)


I start with something I want to do, say, change the color scheme, enable syntax highlighting for a programming language, or something like that and then I end up tumbling down a rabbit hole, and I get stuck because most of the resources out there that tell me how to do these things assume I know a lot of basics which I haven't mastered yet.


In that case, I think you might be better off with more of a minimalism approach: don't try to configure everything and anything from the get go but add features incrementally only when you really think they're necessary.

After many years of using Emacs every day, I decided at one point to throw away my .emacs file and start from scratch. You know, it's a little bit like the old saying about how you should code every program you write twice: once to learn how to do it, and then a second time to get it right.

I had been using Emacs for a while but especially when I first started out, I was maybe as overwhelmed as what you describe. And so I probably did too much, tried out too many things. But hey, that's how you learn, right? After many years, I had acquired much more proficiency, found out by experience which things are essential and which packages that I had installed I actually didn't really need.

And so I made a completely new, empty .emacs file and manually added only a minimal number of configuration options (carefully avoiding copying anything over from my previous .emacs file -- the temptation would be too great to put more than I needed).

Of course since then I have added more and more stuff over time, but I still strive for keeping my .emacs file small. It's not so much an irrational ideal as it is an attempt at keeping it manageable. And so sometimes when I open my .emacs file for some new option or whatever, I use the opportunity to also go over the file and reconsider its current state. More often than not, I end up throwing a whole bunch of stuff away again and make the file smaller and simpler.

A lot of features that Emacs offers through various packages are convenience features. They're great. But they're not essential. Essential is stuff like `(blink-cursor-mode 0)` (I would go nuts otherwise) or `(global-set-key (kbd "C-w") 'backward-kill-word-or-region)` which has become muscle memory to me. Themes and other visual goodies are less important.


You would think that anyone used to Vim would have problem with Emacs as they can't keep up with speed of us issuing commands :)?


After 18 years of Common Lisp, and nine years of developing a Lisp implementation ...

... I'm 24 years into using Vim and counting!


I'm bi as well. I prefer using both. I still code in c in vim. C++ always in emacs.


Let me guess: you are not aware of YouCompleteMe.


I began to force myself to learn vim but I never got over that initial hump and there was nothign really to draw me in. I can't remember why I began to look into emacs but org-mode drew me right in. I discovered magit at around the same time and I begun what I can only describe as a love affair with emacs that continues to this day. I just can't imagine a life where I use computers without emacs.


https://vim-adventures.com/ it's fun if you're wanting a little evil(-mode) in your life.


I did that! I still remember navigation keys and some other things to this day. A little vim is essential for working on Linux when I can't install emacs.


This thread has been a revelation to me because I honestly thought "users of Emacs" were a myth like Big Foot


Have you tried VS Code?


I see emacs I upvote :)


Heathen :) (have an upvote)


Actually got -4 points for this comment.

Apparently you shouldn't take any side in an HN flame war.


From the HN guidelines:

Please don't comment about the voting on comments. It never does any good, and it makes boring reading.


Although the parent comment didn't really seem to be a literal comment about voting. That's what the ":)" was intended to indicate. It was just a general, friendly pro-Emacs comment. Downvoting everything that isn't super serious makes for pretty boring reading too. The first comment on this post, something along the lines of "My pinky hurts just reading this" was actually pretty funny. It was removed because it was immediately heavily downvoted.

Seriously, aren't your day jobs stressful enough? Do you have to be that uptight? I don't remember HN being like this a year or two ago.


Can’t delete my comment so i’ll edit it to something different. Please ignore.


I remap Caps Lock to Control for exactly that reason. On my ideal keyboard, though, the keys immediately to the left & right of the spacebar would be Control, then Alt, then Super. On my really ideal keyboard the next key out would be Hyper, but sadly the USB spec doesn't provide for it.


Have you considered an Ergodox, or one of the other programmable keyboards supported by the http://qmk.fm/ project?

I have an Ergodox Ez that I've created a custom key-map targeted towards my vim and i3-wm: left of "a" is a key that if I tap it does ESC and if I hold it does the Windows key. Right of ";" is quote/Win. "z" and "/" if I hold them become control. Among other things.

It took me around 2 weeks of un-learning some bad habits I had, to become really proficient at the Ergodox. Some of it was that I used to hit the "b" with my right hand but Ergodox only has it on the left. A large part was that I was borrowing a friend's keyboard with blank keycaps and though I was a touch typist, I would regularly look at the keyboard to "get my bearings". Plus, I always looked to do numeric entry. Plus, moving keys around for enter/space/backspace/tab took some getting used to.

If you think "my ideal keyboard would", Qmk firmware plus one of the dozens of supported keyboards may just get you there.


Maybe the ideal keyboard would also not have a huge space bar, but two thumbs keys that would act as both space and a modifier if hold.


TECK (seemingly out of production) has three keys in place of spacebar by default configured as (backspace)(enter)(space)

Using thumbs to activate those works really well!

https://www.trulyergonomic.com/store/truly-ergonomic-mechani...


As another commenter said, QMK is the gateway. If you really want a lot of thumb buttons, look at an xd75, atomic/planck if you are not afraid of having many layers, or mitosis if you are feeling experimental. The customisation is off the charts. I have space and arrow layers in one key, and enter and number layer in another.


That's why I use Kinesis Advantage keyboards.


No, control must be in the far left: you don't hit control with a finger, you use the meat of your hand.

This only works if you have a real keyboard, not one of the imitations that come with laptops and Macs.


Never understood the emacs pinky thing to be honest. From like week 1, years ago, i realized i have to have the C- modifier in a better place.. You just remap caps-lock to ctrl and you are done.


Am I the only guy whose pinky doesn't get bothered reaching to control?


evil-mode? Spacemacs?

Nvim is pretty awesome, but the tools in the vim ecosystem just don't compare.




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

Search: