Ask HN: Is there other software similar to Vim and Emacs?
The two tools I've found so far that come close to this are TiddlyWiki (notetaking) and Vim/Emacs (same text editor niche). TiddlyWiki loses some points on hackability because it's web technology and fairly sandboxed. Vim/Emacs are only for text, obviously. I think what these tools have in common is that they all have a strong core idea (Vim: modal, TiddlyWiki: a quine of tiddlers, Emacs: elisp) that provides insane feature breadth at relatively low cost to learnability.
Other software is usually on a spectrum of low feature count (most tools in the UNIX philosophy) to low understandability (IDEs, most other text editors, all OSes). Then a few rare ones are extremely powerful, but so old and poorly designed that I don't think they make the cut (e.g. Bash in my opinion).
Are there other tools similar to Vim, that maybe even cover other application areas? Doesn't have to be terminal-based. I'd love to hear your opinions!
91 comments
[ 5.3 ms ] story [ 168 ms ] threadI doubt many people sshing into a box using vim will choose visual code. There might have been some people using vim for daily development who switched but probably not many
I have once .vimrc configured for all the languages that I use/know. Whenever I work with a new client. I pull that .vimrc on the allocated machine. Run PluginInstall and in minutes I am ready to go!
Actually I do just that.
With the remote development tools I can open a remote folder in vscode and edit from there. And when I start terminals, they're going to start a shell on the remote linux box.
Everything via ssh.
Probably overkill for occasional remote file editing (it'll run some server component on the remote machine), but pretty good for more involving remote development work.
I think the plugin writers are either shoe-horned by VCCodes lack of plugin capability or they are basing their work off some other toolings expected behavior and it doesn't "sit right" with how I work.
Compared to what? To do what?
needless to say I got bored ad moved on.
Not especially complex syntax. It just doesn't have a lot in common with languages with Algol-like syntax
JavaScript?
for example check the reddit and look at peoples setups. all wildly different
It's a PDF viewer with many powerfull features ( for example you can preview references even when the document doesn't have links) and vim-like keybinds. Although it is a little too soon to determine if it will be future proof.
Not just macros, but deeper automation of anything in a Windows UI, with a great depth of community scripts and knowledge.
https://www.youtube.com/watch?v=dP1xVpMPn8M (excellent overview of the editor by Russ Cox)
And acme's predecessor sam: http://sam.cat-v.org
You'll need plan9port to run acme on Linux, though. But the core ideas are very simple and powerful (sam: everything is a huge string; acme: everything is a clickable file) and thus hopefully long-lasting.
I would also mention edbrowse, a line-oriented web browser initially for blind people. Maybe this is too far on the fringe, though. It does have a lot of depth (excellent scripting capabilities); it's an amazing project actually: http://edbrowse.org/
- vifm
- ranger
- i3
- sway
- tmux
- zathura
- tig
The others are all very fine pieces of software I all use but imo not nearly on the same level. They're essentially programs with fancy keyshortcuts.
What exactly are you bringing to the table that these two don't already have
An even more robust and powerful application plus framework is arguably an RDBMS system. Even if you limit yourself to the intended usage model, the commercial products like MSSQL and Oracle meet many of your criteria. Of course, the open source ones like PostgreSQL, MariaDB, and SQLite take this even further. They have pretty extensive internal interfaces you can also extend, if you are not content with the planned extensibility of SQL, stored procedures, etc.
But, are you limiting yourself to standalone applications? Many frameworks are very modular and meet many of your criteria for software, but are intended to be consumed by developers and so may not have as much standalone function. Consider web app frameworks, conventional thick GUI frameworks, and more focused tooling like parser generators.
And of course developers may be blind to them, but the operating systems and compilers we use are also rather elaborate and extensible frameworks. I think things like GCC and the Linux kernel demonstrably meet these criteria today, as they did when I was starting my career ~25 years ago.
Both programs are configured by writing code, which compiles to a binary that you then use. Xmonad and xmonad-contrib are maybe more accurately described as haskell libraries that make writing your own window manager trivial. Highly recommend if you enjoy configuration, you can do some really cool stuff with it.
[0] https://dwm.suckless.org/ [1] https://xmonad.org/
https://awesomewm.org
It's pretty far from suckless philosophy, which for me is a good thing. I think this makes it way more flexible and usable. Great documentation, loads of features, and infinitely extensible with lua configuration. If you aren't bothered by your WM using a few megs of memory then I think it's the best choice.
I would say this counts because the language itself is programmable. The lisp I use can be tailored to exactly how I want to write code, just like my vim setup.
Anyone who's been using CL for the past couple of decades basically has their own dialect on their hands, given all the tools they've built around the standard ones.
I'm not saying this is the best way to collaborate with code that others need to muck with, just as I wouldn't expect anyone to be able to do anything of use in my vim setup. It's for you.
I try to write better programs, although of course, if it is any good or not, is a matter of your opinion.
I wrote a ZZT editor which is has some similarities with vim (it has a modal interface similar to vim, using various key commands for many operations (even can use hjkl for cursor movement, and numeric prefixes, like vim does), and also you can enter SQL codes to perform queries and batch operations, and can use SQL codes to customize keybindings too). You can also use external text editors to edit ZZT-OOP text (later might also be adding option to allow a built-in text editor too, with syntax highlighting and auto-completion).
I had written other programs too, and there are probably many that I had not written, too. However, many newer programs are not designed well like that and instead include only a few options that are nearly worthless. I try to oppose that and write a better one.
I don't know if I missed something in your post, but this couldn't be further from the truth. It's cliche to refer to emacs as it's own OS, and it is not uncommon for users to do all of their computing inside of emacs - web browsing, email, note taking, documentation, writing, version control, terminal, ide, window manager, remote admin, etc. Based on your criteria emacs seems like a perfect fit, I encourage you take take a deeper look at emacs if you're interested.
https://github.com/emacs-tw/awesome-emacs
ableton, is sort-of-there but it could be less verbose
PHP as a scripting tool , has everything fast
Secondlife/opensimulator as gaming platform. Unfortunately too much legacy stuff and not enough innovation, but more open and hackable than others
WeeChat: https://weechat.org/
fzf: https://github.com/junegunn/fzf