Ask HN: Are there any modern alternatives to VIM and Emacs
Hi folks,
I would like to know are there any good and modern alternatives to the most popular terminal-based editors such as VIM and Emacs?
Thing that I'm looking for is something like Sublime Text. So keybindings should be more or less familiar for the Windows/Mac users(i.e. copypaste through the cmd+c/cmd-v), but I want to run it in terminal/unix environment. This is very important for me.
I know about Nano, but set of code manipulation features is too poor. I want a rich set of "advanced" features like we have in Vim/Emacs.
Any suggestions?
30 comments
[ 0.81 ms ] story [ 76.8 ms ] threadTo be more specific, if Emacs would have more familiar keybindings for Windows/Mac users I probably use it. For example from the manual http://www.cse.iitb.ac.in/~br/courses/cs699-autumn2013/refs/... :
> C-e end of line
Why not just "end"?
> M-v scroll down one page
I would like to use "page-down" instead.
> C-Space Set beginning mark (for region marking for example)
Really? Why not just press "Shift"?
ok, ok, I know that old keyboards didn't have all these buttons, and also Windows "familiar" key bindings were defined much later. So Emacs and Vim developers did what they did. But why should I spend so many time in learning all these oldschool workarounds?
Yes, I want terminal-based editor. But the rest of the killer features of Emacs or Vim are not so unique these days. I can obtain near the same level of functionality and flexibility in any modern window-based editor such as Sublime Text or IntelliJ Idea. Currently I'm using this one as my primary code editor - just for text, not for Java. And I find that it has even wider range of handy code manipulation commands than Emacs provides.
So, returning to my question. I would prefer to choose terminal-based code editor. And it is ok if it will be differ from the editors that I use - I'm ready to spend time in learning new stuff. But I'm not ready to learn code editor completely from scratch. That's why I rejected Emacs. ok, maybe I was wrong, so I would like to hear your opinion.
I just tried the keys you mentioned in Emacs: they all worked (except for selecting with Shift). So End takes you to the end of the line, you can scroll using PgUp and PgDown. The reason that they are not used is that you need to get your hands of the home row to use them, which makes them unbearably slow for people used to quick editing.
I hope you'll give it a chance.
Selecting-with-shift works in Emacs too.
[It was added a few years ago so might not work if you've got an ancient version installed...]
Maybe you can tell us why you need it to work in a console. Do you only want to edit files over there? Could try sshfs. If you're able to use X11 on your servers you might look into X11 forwarding through ssh to use Sublime too.
Well, I'm using Windows on my primary machine when I'm at home, and Mac when I'm outside. It's not a secret that Windows is bad as a development environment. Even it's file system has issues in mapping to unix fs. So I prefer to keep all my development things on remote Linux machine, and work through the SSH. That's why I'm interesting in terminal-based editors.
It's clear you haven't even tried it.
Take a deep breath. Pick and editor and try and use it for a week.
> I would like to use "page-down" instead.
So just use page-down. What's the problem? Why isn't it convenient?
really, just tested the latest batch of editors. none came even close to replace vim.
just learn to use shortcuts customization.
I cannot believe how beautifully easy it is to hit the ground running. Incomparable.
Except for maybe LightTable, but I'm constantly running into PATH issues. So I will settle (is it really "settling"?) for PythonMode in vim.
I suppose keybindings and modes are the same as in vanilla vim?
I mean, for example I want to run the editor remotely connecting to remote server through SSH. And the editor should work with the remote file system natively. I can't do it with Sublime Text(or not?).
Emacs for X11 (Lucid or Motif bindings), and gvim of course.
I believe vim has an "easy mode" which allows it to work as a more traditional non-modal text editor. You may want to give this a shot and then slowly ease yourself into the key chords.
But I'm wondering why people keep teach me and advice me how to use vim and emacs? I didn't ask any advices on these two editors. I just asked about alternatives. Maybe not so famous alternatives, but anyway.
I respect your feelings on your favourite editor. And I don't claim you to change your mind about it, nor I want to change mine. I just asked about alternative products.
Both Emacs and Vim require an investment in time to become productive. The break even point, where using the new editor is finally not too frustrating to use, is a few days for either one. Make that investment in time. After a few weeks the power that these editors provide will start to open up, and after a year, you will feel like no other tool for editing that can touch what you can do with these thoroughly professional tools. If you care about your craft, take the dive and learn a first class tool. They are open source and run on almost anything.
It would still be beneficial to learn Vim or Emacs. The scale and breadth of add-ons for these environments is staggering. This makes getting started seem difficult, but one can simply focus on learning the basics (which are all that are offered by most competing editors). There are good tutorials for both Vim and Emacs built into the editors. It will only take an hour or so to go through one and learn the keys and commands for straightforward editing.
Another way to get started would be to start with a stripped down emacs. Although I use GNU Emacs, there are simpler implementations. I like mg. Its a micro-emacs that supports most of Emacs's common commands, but has no extensibility. It's definitely not a toy, and might provide a nice stepping stone to full GNU Emacs. It runs in a terminal, starts up instantly, and has a small footprint. On a Mac, I install it with homebrew. Microemacs is the editor reported to be used by Linus Torvalds.