6 ms·
I wish Vim users and Emacs users would unite to improve Spacemacs. It's really a great idea IMO, have the editing power of Vim with the flexibility and elegance
by simias 6y ago
I wish Vim users and Emacs users would unite to improve Spacemacs. It's really a great idea IMO, have the editing power of Vim with the flexibility and elegance of the Emacs environment.
Unfortunately when I tried Spacemacs (coming from Emacs) I kept bumping on rough edges with vim command emulation which ended up with me switching directly to the real vim. It's been about a year now and while I still think I was right to finally make the switch to modal editing, vim feels like a clunky and hacky environment compared to the power of Emacs.
- josteink 6y agoAs someone who really doesn’t “get” or care for Vim, why should I contribute to an alternate Emacs-“distro” entirely focused on an existing Vi user-base, using non-standard conventions and keybindings? I mean good for them having that option, but what’s in that thing for me?
- celeritascelery 6y agoYou don't have to use vim keys in Spacemacs or Doom. You can just use the regular ones if you want.
- josteink 6y agoBut then what does Spacemacs offer me over plain Emacs? And I’ll also have to learn all the things it does differently. All in all, sounds like a net negative to me.
- neutronicus 6y agoIf you ever start to develop Emacs Pinkie as I did you may come around
- Cyph0n 6y agoThis is one of the main reasons why I stuck with Vim. The strain on my hands was very noticeable, even as I was just starting to learn the standard Emacs keybindings..
- josteink 6y agoThen I can enable evil-mode, instead of fully changing my setup to a unconventional Emacs-distro which does everything differently. Again: what’s in it for me supporting this alternate Emacs universe?
- celeritascelery 6y agoI always find it interesting that the thing people really want from vim is the keybindings. Almost no one uses vim for the software. Also, The vim emulation has gotten much better due to evil-collection[1]. You might want to give Spacemacs or doom-emacs[2] another try. [1]https://github.com/emacs-evil/evil-collection https://github.com/emacs-evil/evil-collection [2]https://github.com/hlissner/doom-emacs https://github.com/hlissner/doom-emacs
- mplanchard 6y agoThanks for the evil-collection link! I hadn’t seen this before, but the sudden switch out of having vim bindings in various buffers has been one of the pain points in starting to learn emacs.
- platz 6y agospacemacs layers system is clunky and yet another layer of configuration abstraction ontop of an already versatile configuration system.
- tarentel 6y agoI don't think spacemacs and the vim emulation, evil, have anything to do with each other. I switched from vim to emacs a while back and haven't had any issues with evil mode. As far as spacemacs goes it seems neat. I tried it once but it was too confusing and I've been using emacs for so long now that it's very finely tuned to what I need it to do.
- chongli 6y agoVim and Emacs have too many philosophical differences for this to work. For example, emacs doesn't have a fixed concept of what a paragraph should be. Instead, it leaves that up to the major mode. This is fundamentally incompatible with vim's paragraph motions which are determined by empty lines and remain the same regardless of file type. As a very long-time Vim user, I prefer that my editing commands be predictable since I type them with muscle memory (faster than ordinary conscious thought). Having them vary from file to file based on file type (the Emacs way) throws me off completely and makes the editor feel untrustworthy, like a horse that's liable to kick or throw its rider. Vim feels like a complete set of high quality, manual woodworking tools.
- simias 6y agoInteresting viewpoint, but aren't there enough differences between programing languages to warrant mapping these concepts slightly? Clearly my Emacs origins show here, because not having simple built-in motions to select "a function" or "a class" feels like a big limitation to me. I actually have a bunch of ad-hoc bindings for that. I also seldom use paragraph motion while coding simply because it doesn't really make a lot of sense to me. I think about code in lines or blocks, not paragraphs that is a rather weird concept when it comes to code. The fact that you can't easily add new motions to vim is a big limitation for me. >Vim feels like a complete set of high quality, manual woodworking tools. They're mostly reliable and predictable, I agree with that. High quality I'm not sure. The fact that the undo tree is effectively unusable without 3rd party plugin is weird. Tabs are at the same time over-engineered and under-featured. Nobody seems to really knows what they're for or how to use them (just make a quick search online for "vim tabs"). They're like Emacs frames except that you can't actually use them like a separate frame on a different screen. And you can't have them use a different working directories easily so they're useless to open two projects side-by-side. Some people coming from editors that open files in individual tab (an anti-pattern IMO, but that's a different discussion) expect them to work that way, but it turns out that they can't really do that either. Why even bother? You also need plugins to do very basic coding stuff like run "make" in the background without being locked out of editing. Which wouldn't be too bad if Vim's internal API made it easy to make Vim plugins work seamlessly like native code, but in practice all the plugins have tested needed to be super intrusive to offer basic functionality (like remapping literally half the keyboard to slightly tweak the kill/yank behavior) and it ends up breaking left and right in weird and unexpected ways. The visual feedback for commands is atrocious. Spacemacs' genius is that when you start typing commands it shows you what you can press next and what it does. You effectively navigate the bindings like menus, and you have this positive feedback loop where you memorize the bindings by using them. Sometimes I start typing a command in vim and I think I made a typo but I can't know because I have zero feedback on the current state of vim. Emacs almost always tells you what it's waiting for in the mode-line. Why does ":bdelete" also kill the window it's in, except when there's only one window left? Since elsewhere there's no 1:1 relation between windows and buffers, you'd expect to get the next buffer in the stack (that's what Emacs does in this situation, and that's what Vim does when you have one window left). Window and buffer handling is hard but Emacs is vastly more configurable and works better out of the box in my experience. I also often get performance issues that I don't remember ever getting in Emacs which is fairly ironic given that Vim is supposed to be the "lean" one.
- fernandotakai 6y agoi'm a major vim users (10+ years now), and honestly? i don't care about spacemacs. emacs and vim are philosophically too different to be together. i tried spacemacs and it was like trying to fit a square peg on a round hole -- it just doesn't work properly.
- phyrex 6y agoSpeak for yourself, I used vim for a decade and have since switched full-time to spacemacs in mixed mode! :)
- stereolambda 6y agoAs a vim user, I use Spacemacs for Lisp. Otherwise, I don't like mode inconsistencies (e.g. vim keys don't work inside SLIME debugger), the lack of tabs and the startup/running footprint. It doesn't feel right or convenient to have many Emacs instances scattered throughout tmux or terminal windows, created and killed as needed. Now that I'm thinking about it, this and tabs help me map my work space mentally in a way that hidden buffers (or directory trees) don't.
- michaelmrose 6y agoAlthough there have been several tab addons for emacs for a while emacs now has native tabs that work the same as vim tabs. You can run emacs --daemon at login and run either emacsclient to start a new window connected to an existing instance. In my measurements starting vim in a new xterm takes about 250 ms. Starting a new gui emacslient requires only 500 ms. Perhaps numerously running a new default emacs instance with emacs -Q is actually faster at 400ms.