39 ms·
The values of Emacs, the Neovim revolution, and the VSCode gorilla
- spamizbad 6y agoA thoughtful essay. I find myself frustrated with Sublime Text these days, and as a former (novice) vim user, I’ve been debating if I should go for VSCode like all the young guns these days or commit to Doom Emacs to leverage a solid initial setup and my vim memory and fully embrace libre route, which are a little more aligned with my values (although not to the degree of RMS). I remain oddly indecisive.
- emsy 6y agoI use VSCode with a vim plugin. I’m mostly happy with it. As opposed to Vim, VSCode makes it easy to setup as a general purpose IDE. The downside is that it doesn’t feel as responsive (it’s not terrible, but noticeable) and has a larger memory footprint.
- antonvs 6y agoI'm an old gun (learned to program in Fortran in 1977), and I recommend giving VScode a try. Its barrier to entry is very low, so you don't need to invest a lot of time to find out whether it's going to be productive for you. It's a real usability jump over older IDEs. I've switched from a combo of, mostly, Intellij IDEA and Vim to almost exclusively VScode (for development). I do still use Spacemacs just for org mode. > my vim memory There are vim compatibility plugins for VScode. > fully embrace libre route VScode is open source and MIT licensed, here's the repo: https://github.com/microsoft/vscode https://github.com/microsoft/vscode Someone would need to explain to me what values I'm forgoing in order to use this. Although I should warn that someone I'm likely to have a strong rebuttal.
- nitsky 6y agoThe default builds of vscode include telemetry and a non-free license. For a truly free build of vscode, you need to use vscodium. See their description: https://github.com/VSCodium/vscodium#why-does-this-exist https://github.com/VSCodium/vscodium#why-does-this-exist. I suspect many developers are unaware of this.
- opencl 6y agoThe most important practical detail here is that if you run vscodium, or download and build the vscode repo from microsoft yourself, or use any forks of vscode, you cannot install any of the extensions hosted on microsoft's servers without violating their license terms. There are alternative extension marketplaces such as https://open-vsx.org/ https://open-vsx.org/ but they are missing a lot of the extensions, some of which are proprietary.
- bobajeff 6y agoThe vscode marketplace also provides a link to download extensions as a vsix file on every extension page. So if the extension isn't on open-vsx I just download it directly and install it.
- deleted 6y ago[deleted]
- antonvs 6y agoThat's true, although anyone who cares about truly free software presumably would look into the details to check. You can disable the telemetry: https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting https://code.visualstudio.com/docs/supporting/faq#_how-to-di... My point was really that it's free and open enough for any practical purpose I'm able to discern. Refusing to use it on the grounds of insufficient openness or freedom seems to me to require an unreasonably absolutist ideological stance on the issue.
- cmlkz 6y agoThe Neovim section participates in the popular sports of ganging up on top developers who have spent decades of their life in the public interest, for free. The Neovim developer is called its "author", which is poor form and probably a copyright violation. Go and write your own editor from scratch.
- mplanchard 6y agoThe only place that the developer of neovim is referred to as its “author” is in a quote. But also, I didn’t get this impression at all while reading the article.
- hklax 6y agoThe article is deliberately using selective quotes to paint Bram Molenaar in the worst possible light. A common tactic among people who take over code bases in order to cruise on other people's hard work.
- mplanchard 6y agoI don’t know. I don’t think the author paints him in a particularly bad light. It mostly seems to be trying to point out why neovim was made, specifically that its authors valued different things than the author of vim. I also think the amount of work that’s gone into neovim is way more than enough to call the authors authors at this point. The forking of vim doesn’t seem to me to be “tak[ing] over code based in order to cruise on other people‘a hard work,” but open source working as intended. The neovim authors were able to take a project, adjust it to fit with their values, and let people decide which they prefer.
- mpalmer 6y agoYou and thread OP seem to have signed up just to make these comments. Do you think your obvious bias against Neovim is coloring your perceptions of the piece? Because it is not about trashing Vim or Moolenaar.
- gspr 6y ago
- signal11 6y agoI don’t find VS Code to be a good text editor in the sense of a tool to wrangle text: the keyboard shortcuts are rather arbitrary and don’t seem to be logically organised, and it seems not to have learnt much from eg modern text editors like Sublime Text (even Sublime compatibility isn’t as good as the real thing). That said, for writing code, it’s fine because most of the time I’m thinking and typing in short runs of text. I’d love for it to receive a bit of love so it’s a better at wrangling text out-of-the-box, however.
- qsort 6y agoI completely share your sentiment. VSCode is by far my favorite programming environment, its killer features as far as I'm concerned are its excellent debugging functionality and the remote mode (we often work on multiple remote machines simultaneously -- being able to have ad-hoc remote configs is a life-saver!) The worst part is, ironically, the editor itself. As a former vim user I'd love to have vim keybindings, but the vim extensions are painfully slow and unresponsive. I ended up just using the default in spite of it being incredibly mediocre.
- busrf 6y agoHave you tried the vscode-neovim (https://github.com/asvetliakov/vscode-neovim https://github.com/asvetliakov/vscode-neovim) extension? It uses an instance of neovim to provide the vim behaviour rather than emulating it, and I’ve found it to be more responsive than VsCodeVim.
- slightwinder 6y agoShortcuts in VS Code are a setting. Just load which shortcut-setup you prefer. That's pretty normal with good dev-tools nowadays, because everyone has different preferences and habits.
- signal11 6y ago> Shortcuts in VS Code are a setting. Just load which shortcut-setup you prefer. There are quite a few shortcuts that cannot be implemented due to missing capabilities in VS Code. For example -- this list from an author of a VS Code plugin that emulates Sublime[1]. [1] https://github.com/Microsoft/vscode/issues/3776 https://github.com/Microsoft/vscode/issues/3776
- oefrha 6y ago> It also shines in areas where Emacs doesn’t: if you’re a programmer working on typical contemporary projects, mostly just wanting to get stuff done, things usually… just work. You install VSCode, open a source code file, get asked to install the extension for that particular language, and that’s it. You get smart completion, static analysis, linting, advanced debugging, refactoring tools, deep integration with git, and on top of that, great performance and a cohesive user experience. These days I mostly use VSCode due to great language server integration (Pylance, gopls, rust-analyzer, etc.), but I still rely on Emacs with Magit for almost all my git interactions. This is not helped by VSCode's shitty commit message box, which after five years is still this ~250x20px by default input field with some after-the-fact validation tossed in. The great thing about Emacs is that everything is a buffer, you get the full editing power afforded by a buffer, not some second-class input field, especially for something as important as commit messages.
- africanboy 6y agoI use this for git interactions in VSCode https://github.com/kahole/edamagit https://github.com/kahole/edamagit
- aldanor 6y agoSame here in regards to Magit. I've tried seriously using Emacs (Spacemacs) for a year or two, but something always doesn't work as intended, code completion and static analysis is extremely hard to configure, especially you have some non-standard project setups. Then switched to a mix of vim for simple stuff or clion/pycharm in vim mode for rust/cpp/python... BUT, subjectively, Magit is the best git client ever created; Magit in evil-mode easily beats all of the 20+ git clients I've used. So I keep emacs/spacemacs on every machine now solely to be able to use magit.
- tomerbd 6y agoFor some reason the real-estate on vscode like file browser etc is really small compared to any other tool, on vs code I always have to move scrolls to see anything, I think this is the main thing why I don't use it while I really want to.
- elagost 6y agoThis is really well written and researched but confuses me. Do most people not do this - make choices based on values (and constantly re-evaluate those choices in the face of new information)? When I decide to use software, move to a new location, purchase cereal at the grocery store, buy music, and a variety of other daily activities, these are choices I make based on my values. Many times I end up picking something that I find slightly less convenient or usable because it aligns with my values better, and I'm unwilling to compromise my ethical stance for a little bit of convenience. It seems unrealistic to me that people would choose otherwise, given enough information.
- tpush 6y agoMost people's moral values don't concern text editors, or software in general.
- rusk 6y agoSoftware developers aren’t most people
- brutal_chaos_ 6y agoTrue. Though a lot of tech people value libre software to some extent, so morals can often come into play. Even for something as simple as a text editor.
- irrational 6y agoI don’t have any values that would affect the cereal I buy. I’m not even sure what values would come into play. I don’t buy cereal that isn’t magically delicious? I just buy whatever is cheapest. Is not having much money a value? Other than Richard Stallman, I don’t think I’ve ever heard anyone talk about how their personal values determine what software they will use. If I can afford it (free is better!) and it does the job, I use it.
- oblio 6y agoI can't say I choose based on values, but I can give you an example of what people may mean by choosing based on values. Apparently a Nestlé representative recently declared that if a law that requires large corporations to disclose and to stop getting raw materials from suppliers which use forced labor (i.e. slavery) passes, coffee customers might be impacted, probably by higher coffee prices. It's at best a clumsy statement and at worst an endorsement of slavery (!), all for reducing coffee costs by probably a few percent. A moral choice, based on values, would be to never buy coffee from Nestlé brands and instead buy from companies that guarantee that their suppliers don't use forced labor.
- pedrocr 6y agoAre powerful editors really that much of a force multiplier? My career path has pulled me from a CS degree into loosely related fields so I mostly only code as a hobby. I end up using basic editors (e.g., gedit) and reaching for grep/sed/etc when I need something fancy. Is having that power in the editor versus the command line that much of an advantage?
- johannes1234321 6y agoAs always: It depends. Better be proficient in command line tools and a simple editor than not being proficient in an fancy editor. But once you are used to the fancy editor it can be very efficient to be able to lookup a definition, do some refactorings, get an code outline view, auto completion, editing helps (text templates or the automatic } and indention) etc.
- aprdm 6y agoI believe so, looking for definitions of functions you’re using and being able to jump to their implementation is great, starting a debugger, getting errors as you type... it all saves time. Being able from the same interface to visualize your database and state of the program is also good !
- antonvs 6y agoYou can't achieve what a modern IDE can do using a simple editor and the command line. Autocomplete, hinting, type checking, navigation, documentation display, automated refactoring, interactive debugging, and integration with other tools like test runners and databases, are some of the major features which yes, are indeed force multipliers. This all becomes even more important when working on large codebases, and/or code you didn't write all yourself.
- intarga 6y agoYou can do all of those things in all four of the editors discussed.
- 6y ago
- AzzieElbab 6y agoI run neovim within vscode with neovim plugin. Relatively easy and fast to get started, takes time to reconfigure lsp and clean up shortcuts conflicts, but that is about it
- nednar 6y agoIs there a way to standardize your fixes for others, e.g. through a pull request to teh neovim plugin?
- AzzieElbab 6y agoIt isn’t much. I will take another look
- aprdm 6y agoOur text editor is a tool, there’s no fundamental value in a tool vs the other, they do not possess life. They’re tools like a fork is a tool. I wonder what of the things you use in the day to day you analyze so deeply, your microwave ? The forks you buy? Might be an interesting exercise of thought but for something that I use to make money, I will use the best tool available for the job, thank you very much.
- ht_th 6y agoMaybe not forks for eating. But when I buy a pitchfork, I do care about the source of the handle's wood because I do not want to contribute to deforestation. I also look at the repairability. For example, would any standard handle fit? And can I attach one myself? And the "usability" of the handle, and the fork as a whole, is another factor that is important to me. Often, just from handling them, you do get a good feel if the pitchfork makers actually seem to care about their users and know what they are doing or not.
- antonvs 6y ago> there’s no fundamental value in a tool vs the other > I will use the best tool available for the job The article is pointing out that the way you decide which tool is best depends on values that you have, which is certainly true whether or not you consciously think about or recognize those values. Describe your decision process for selecting the best tool in a given scenario, and the values you use should become clear.
- mpalmer 6y agoYou didn't even skim the headline correctly.
- db48x 6y agoMy values certainly informed my decision when I last purchased forks. My values are that the design should lean towards minimalism over overt decoration, that they should have appreciable weight, and be likely to last a lifetime. I could have saved a few dollars by getting those really cheap forks you see that are obviously just stamped out of sheets of steel, but cheapness wasn't one of my values. Instead I got forks that have never bent, or rusted, or tarnished, or shown any signs of wear in almost a decade of use. Plus they feel nice in the hand, they look good, and they don't have flowers or birds carved into the handle or any of that nonsense. It was also a nice bonus that I found them at a Target a mile from where I live. I hate shopping, so that satisfied a tertiary value by not making me visit a lot of stores. It's the same with editors. Most people value price above all else, so there's no business in selling editors any more. Back in the day I used a rather nice commercial editor called VEdit. My Dad must have bought it, because at that age I never would have. It had a ton of features, and came with an inch-thick printed manual. I don't recall how extensible or introspectable it was (I was 12 at the time, and didn't care about such things), so probably it wouldn't satisfy my values today. On the other hand, it satisfied (or cultivated) values that I didn't even know at the time that I had. When I discovered VEdit's hex-editor, I started using it on everything. I explored how file names were stored in directory entries. I hex-edited some games to change their messages. I learned quite a lot from those sorts of things, so I'd say that it was money well spent. But you're correct in saying that editors are not alive, and cannot themselves have values. However, the people who develop the editor certainly do have values, and those values affect the choices they make when they write code. If those values are similar to your own values, then the developers of the editor will make similar choices to the ones you would have made if you had been developing the editor. Thus, the editor will fit you well.
- galfarragem 6y agoNoob question: Is Sublime text still a good text-editor in 2021? Did it just loose momentum or not being open-source is insurmountable? I still think its speed and usability are not easy to match.
- ddek 6y agoOpen source is kinda irrelevant IMO. The answer is, of course, it depends. How much do you value language integration? Do you have muscle memory for vim or emacs? There are many more questions here. VSCode supports language server protocol arguably best, because LSP/VSCode/TypeScript were all developed somewhat in parallel. But some languages don't have complete language servers, or already had their own forms of IDE integration. JetBrains ReSharper has it's own csharp parser which it uses for analysis and automated refactoring.
- diffeomorphism 6y ago> Open source is kinda irrelevant IMO. Good tools become even better with time investment. I don't want to invest time into a tool that dies if the dev company loses interest/goes bankrupt/gets bought by oracle/... . Emacs is much older than me and will be around for decades to come. Sublime 2? Probably not. Sublime 3, probably several years. Sublime 4,5,6... who knows.
- deleted 6y ago[deleted]
- aniforprez 6y agoSublime is a perfectly fine and frankly faster editor than VSCode. The problem is the slow nature of the updates, the underwhelming API and people abandoning it in droves because they opt for VSCode makes the extension library not as comprehensive or feature packed. Half the extensions I use in VSCode don't have a parallel in Sublime I still use it to quickly edit text or read some files quickly cause it opens really fast but it's definitely never going to be my daily driver unless something changes drastically
- enriquto 6y agoI read this "definition" of philosophy elsewhere: we all share the exact same set of moral values, but their relative order is different. It's the order of the moral values that determines a philosophical stance. The article starts by recalling this, but then it describes each project by the principles that it holds, but not by their order. This is a bit strange.
- submeta 6y agoWhen you finally learn to master and config Emacs, you run circles around all other editors. Emacs is so much more than just an editor. But even if you only use it for coding: Magit is the best git client I have used in years (coming from PyCharm + Git Tower App, which is nice), then there‘s Ztree-Diff (excellent folder diff tool; previously using Kaleidoscope app), then Eshell for interacting with the server from within Emacs (programmatically if you like), Tramp for remote editing, excellent integration of ripgrep and silversearcher (ag) into Emacs for code navigation, yasnippet as an excellent templates/snippet manager, and many more packages. What makes Emacs exceptional is you can link all these packages together, create your own workflows by scripting Emacs in Lisp. And I write the docu in Emacs in org-mode, with org-babel I can run shell-scripts / python-scripts and other code in my org-file and see the output underneath it (like Jupyter notebooks), link to code fragments in my org files etc I manage several projects with it and switch contexts with one key-combination: Vagrant box is started, project folder is changed, necessary files opened, ready to hack, build, deploy, do server restarts with a single key stroke. I think VS Code is a nice coding environment with good defaults and many things done right (compare installing packages in VS Code to Sublime! What an improvement) but nowhere near the capabilities and the productivity of Emacs.
- qppo 6y agoYou can do all that and more in vscode as well... you just have to "learn to master and config" it with your own plugins in JS. It's not that hard.
- Macha 6y agoOn vim vs neovim: My deep vim usage hasn't really changed much since it stopped being my primary editor usage 5 years ago, so this isn't the world's most informed opinion, but I've not noticed a drastic difference between vim and neovim. The one difference I've noticed and literally the only reason I've moved to neovim is that it uses XDG dirs by default and thereby clutters my home directory less. Otherwise, the two seemed pretty interchangable.
- city41 6y agoI essentially treat them as the same thing and will switch back and forth as one gets a regression or the other fixes an old regression. My config works perfectly in both and frankly I can't tell the difference 99.999% of the time.
- caymanjim 6y agoVim 8 and neovim don't have any major differences. Even as a decades-long Vim power user, I can use either. neovim deserves credit for stimulating Bram to accept changes, though. Most notably Vim 8's support for async plugins. I don't think Vim 8 ever would have happened without neovim.
- yudlejoza 6y agoWell after reading your comment, I thought maybe the big win for neovim might be reduced (code-size) complexity. So I checked the code sizes for latest versions of both vim and neovim (from github): - vim is at 900k (717k without po files) - neovim is at 677k (562k without po files) Savings of only 25% of code size is unfortunate. It's even worse if we ignore the po data files (only 22%). I would like to see a fully-capable modern editor/IDE for under 100k of clean, readable code. Until then, the quest goes on.
- himujjal 6y agogithub.com/rxi/lite-editor
- 6y ago
- pmoriarty 6y agoEmacs "doesn't, however, affect progressiveness as much as freedom. Because of freedom, when faced with a question of using technology that is 1. Non-free, but objectively better, 2. Free, but objectively worse, the latter will always be picked. Given that most technological progress happens through the mechanisms of capitalism, "free" alternatives commonly lag behind to a large degree." Emacs has a degree of integration and customization ability that VSCode just can't touch, so all this talk about VSCode being "objectively better" is pretty myopically focused on just a handful of things geared towards ordinary developers "who mostly just want to get stuff done". Those aren't the only people in existence, and if Emacs doesn't cater to those it's not because of its philosophy of Freedom, but because it doesn't have enough developers who care to steer it in that direction. Emacs is an editor-creation toolkit which is about customization, flexibility, and power. Making it easy to use for people who don't want to invest much time crafting their own editor with this toolkit is just not a big priority. That said, there are some packages like Prelude, which aim at giving Emacs sane defaults and making it easier to use for beginners (though I've never used any of them, so can't vouch for how well they achieve this aim, and I doubt that any of them would give you a full VSCode-like experience out of the box). To me the biggest weakness of Emacs, but also a strength, is that like a typical large open source meta-project (like Linux, the OS including all the software developed for it, not just the kernel) it's a multi-directional effort of hundreds of volunteer developers each running in their own direction. There are no orders from the top steering in one direction, no army of paid developers to make thorny, decades-old bugs finally disappear. Volunteers will get to those if they're interested, and go the way their own interests take them. It just so happens that the stars aligned so that we have the Emacs of today, given the volunteers of yesterday. If they were different volunteers with different priorities, Emacs would be different, and different volunteers tomorrow may steer Emacs in yet another direction. There is no plan. It's an anthill without a queen, with each ant building what it personally wants. This is why, like mature languages with large ecosystems, like Python, like other flexible editors (ie. vim, with its many plugins), and like Firefox (with all of its extensions) you have packages that "interfere with one another, depend on functionality from other packages that get deprecated, changed in incompatible ways, or removed." You really can't have a large package ecosystem developed primarily by volunteers and not have this problem. People work on what they want to work on, and if they don't want to spend the time maintaining their package or making sure it's compatible with whatever package combination any particular user happens to be using, then there are going to be incompatibilities. But I'll take that incompatibility in a heartbeat for the enormous flexibility and power it offers, especially if the alternative is a meager, inflexible package ecosystem where how I edit is dictated from on high by people who cater to the average developer who "just wants to get things done". If you want Emacs to be something else you either have to be really good at herding cats, do it yourself, or pay someone to do it for you. Even then, you'll have to somehow convince all of its users to switch to your "improved" version. Good luck.
- deleted 6y ago[deleted]
- gegtik 6y agoNothing to add - just a great article that provides an objective and humanistic review of the field which is extremely refreshing to me. It invites the reader to consider their values and its mapping to the tooling we use (instead of working backward by having a gut feel of what they like and trying to justify why a specific feature is The Best)
- kloud 6y agoVSCode has great and convenient language support, but the trade-off is reduced text editing efficiency, slower speed and more bloat. It is a worthy trade-off in many situations, I use it often when working on projects that are written in languages I am not too familiar with. I would like to emphasize how big of a game changer the next release of Neovim 0.5.0 will be. With builtin LSP support it will get code navigation, auto-completion and refactoring support on the level of VSCode out of the box, while being way more efficient and faster. I will likely still keep VSCode installed just in case, but only expect it to use it in rare occasions in the future. Emacs is really powerful, but its age is showing and there are some serious technical deficiencies under the hood. I would challenge the idea from the post that the need for "Neoemacs" is not that great. From the history it appears to me more like that many people tried, but due to complexity of Emacs nobody has been able to successfully pull it off yet.
- moocowtruck 6y agohmm in terms of neomacs, is this what remacs was trying to do but in rust?
- aidos 6y agoThat’s amazing news. Native LSP would be game changing. I use coc, but it takes a bit of messing about to get everything working smoothly. Also vscode has has a bunch of extra stuff beyond what’s available via LSP for python now, which is a shame because I’d love to get a full pyright + bells experience in vim.
- tylerscott 6y agoI’ve had great luck using ALE lately. I don’t have much experience with coc but the ALE setup process is very straightforward.
- ashwanidausodia 6y agoCoc has coc-pyright extension. You don't have to use pyls. https://github.com/neoclide/coc.nvim/wiki/Using-coc-extensions https://github.com/neoclide/coc.nvim/wiki/Using-coc-extensio... https://github.com/fannheyward/coc-pyright https://github.com/fannheyward/coc-pyright
- rcarmo 6y agoI've tried all of them, and still prefer vim because it's the least hassle to install/configure anywhere - my dotfile setup installs my plugins automatically, and I'm set. However, I do use VSCode extensively as well, largely because of the language servers. But sometimes it takes so long to start up (and nags me to do so many updates to itself and extensions) that I just toss the window aside and use a native Mac editor (like Textastic) to work while it finishes. Sometimes I don't go back -- it's all a matter of taste, really.
- earthscienceman 6y agoEmacs can also install your packages/plugins automagically via the wonderfully designed use-package combined with MELPA. It's a game changer when it comes to managing an emacs configuration, especially if you work across a range of servers. Just copy the .emacs, install use-package manually and you're off to the races with anything and everything you need. By the time I discovered use-package I couldn't believe that I had been tar-balling a mess of crap around all these years.
- rcarmo 6y agoI used emacs for a while while I was in college, for everything (including reading mail) and gave up because I just didn't find the command keys efficient enough.
- ilaksh 6y agoI use vim frequently. But I think that people should realize and be able to admit that vim and emacs are outdated. They can still be useful especially for people like me who have a sunk cost in learning them. But the honest evaluation is outdated. For example, the core modal interface of vim is related to historical limitations at the time it was created. http://xahlee.info/kbd/keyboard_hardware_and_key_choices.html http://xahlee.info/kbd/keyboard_hardware_and_key_choices.htm... Basically historical happenstance has become part of multiple religions defending dated programs. My current favorites are Jupyter Notebooks and the combination of gedit with fish shell. VSCode is great but a lot of times feels like overkill and a little bloated.
- Jugurtha 6y ago>My current favorites are Jupyter Notebooks and the combination of gedit with fish shell. Do you mind elaborating on what you're doing with notebooks?
- ilaksh 6y agoJust to be clear, those are two separate cases: 1) Jupyter and 2) gedit + fish. Two different types of programming projects. I am using Jupyter Notebooks for what they are normally used for: machine learning experiments. But it might be a good idea to try to expand to other use cases since its such a powerful concept.
- Jugurtha 6y ago>I am using Jupyter Notebooks for what they are normally used for: machine learning experiments. I'm interested to know what kind of problems you may be having doing machine learning. Are you doing that as part of a team or for fun? We're making something in that space[0]. It's our machine learning platform because we've been doing ML projects for many years and are building this to help us. Does the description in that post solve some/all/none of your problems? - [0]: https://news.ycombinator.com/item?id=25802764 https://news.ycombinator.com/item?id=25802764
- the__alchemist 6y agoI'm curious if the userbase of these have tried a Jetbrains IDE (PyCharm, CLion, IntelliJ etc). I've found the Jetbrains IDEs understand the language more thoroughly - this means better code navigation, error-catching, and refactoring. I've also found the implicit project-first focus (as opposed to file-first) to be more practical for most things I work on.
- animal_spirits 6y agoPycharm is fantastic for code navigation. Jumping into a new codebase can be intimidating but I use Pycharm for the preview windows for function definitions, the option+f7 find all usages of a variable, and a few other features. IdeaVim is also the best vim emulator that I've tried in any IDE. But I'm also too deep into neovim to stop using every feature + plugin while writing and editing code, so I usually have Neovim running in the Pycharm terminal and jump back and forth between the Pycharm editor and terminal based on my context (writing or reading)
- kubanczyk 6y agoA small gripe for me was startup time of JetBrain IDEs. Another small one is that they need /dev/null redirection because they spew weird errors to stdout/stderr. A big one: on Windows, do they have a WSL1 or WSL2 integration now, i.e. cam they run/debug the compiled artifact under Linux? Use Linux-based compiler/toolchain?
- Kwpolska 6y agoThe expected workflow is to launch it once — say, when you come to work — and have it running for the rest of the day. The startup time is completely neglible if you do that. And well, running GUI apps from a terminal is likely to flood that terminal with logs (which is why I launch them outside of terminals).
- abhijat 6y agoApart from it's fantastic refactoring and everything else i really like the progressive selection.
- 6y ago
- Ozzie_osman 6y agoThis was really well-written. One thing I'd recommend is to think more about "principles" than "values". The difference, in my mind, is that values are sort of ingrained into us as humans, and we can't change them. They include good beliefs but also a lot of personal baggage. Principles, on the other hand, are things we _choose_ to act on. Ideally they are the same as our values, but when building/designing something, it's best to choose principles.
- InvOfSmallC 6y agoMaybe I'm lazy but I prefer to buy an intellij product.
- brixie 6y agoOn the discussion of values, I'd also like to submit "(expected) longevity" for consideration, which I think is distinct from "stability". I made the switch from Vim to Neovim as soon as I felt confident that (1) the project was going to be around for a while, and (2) it was on track to "overtake" Vim (you may choose to disagree with me on this, I found built-in LSP to be a compelling selling point, but the specifics aren't really related to the point I'm trying to make). That it was almost completely a drop-in replacement, down to the init file, certainly didn't hurt. Under the author's framework, Neovim apparently prefers "progressiveness" while Vim prefers "stability", and those two sound dimetrically at odds based on their descriptions; but both have large, active communities that aren't going anywhere. I'm not sure I can say the same about Kakoune, for example, which is a certainly a promising project but hasn't yet convinced me to jump the fence. [edit for Emacs thoughts]: Now that I think about it, "text centrism" in my mind is also closely related to longevity. I don't care as much about the properties of plain text as I do about the fact that I'll be able to open/view/edit them _even if the application ecosystem dies_. I find Emacs attractive here with org-mode and, to a lesser extent, org-roam (the comparison here would be between e.g. SaaS productivity offerings like Notion).
- moeris 6y ago> I'm not sure I can say the same about Kakoune, for example, which is a certainly a promising project but hasn't yet convinced me to jump the fence. I've made that jump a couple of months ago, and so far I love it. There isn't as large of an ecosystem, but Kakoune just feels better integrated with the environment. Is your hesitancy based on some particular feature, or the ecosystem, or something else? Or is there some default that you dislike? I feel like it doesn't need to have as many maintainers in order to be successful, because its philosophy is much more spartan. The maintainers pretty aggressively keep the project's scope in check.
- brixie 6y agoI haven't tried Kakoune, so I'm not really qualified to speak about its merits or demerits. From a place of limited knowledge, I see nothing wrong with it, and want to reiterate that it seems really interesting and worth keeping an eye on. To add some nuance to my earlier comment: I don't really worry about the existence of Kakoune (or $OPEN_SOURCE_SOFTWARE_PROJECT) in a trivial sense; we'll always be able to find a copy somewhere and compile it from source, modify it, etc. That being said, I think one of the advantages of a large/durable ecosystem is that it lets me worry less about problems I don't yet have. I use (neo)vim daily, but there are certainly still lots of ways I can improve my workflow. Inevitably I'll run into something that goes wrong or doesn't work like I want it to, and a larger and more active community makes it more likely that someone else has already figured out how to fix it. The (relatively small) differences in keybindings are also worth a mention, but I think the vims have a bit of an unfair advantage here; IMO learning vim keybindings is almost unquestionably a good investment because you'll find them everywhere. > Kakoune just feels better integrated with the environment Out of curiosity, is this an argument for enjoyment or productivity? :) (Either is a fine answer! I frankly can't measure the latter so my personal usage of vim is probably motivated by the former.)
- deleted 6y ago[deleted]
- dmortin 6y agoI use Emacs, but I like the polish of VSCode too. Emacs is a portable programming platform and once you learn it, it's so easy to program that it's trivial to create mini applications with a text/keyboard interface to get things done or quickly automate recurring tasks. (Those who can create VScode plugins and don't know emacs, have no idea how convoluted creating a vscode plugin is, and how trivial it is in emacs). Even if I happen to do something via VSCode, I still use Emacs for Org, Magit, etc. and also as the above mentioned programming platform, because I found these mini apps with key/text interface help a lot with everyday tasks.
- ExcavateGrandMa 6y agohttps://github.com/caseykneale/how-to-exit-vim https://github.com/caseykneale/how-to-exit-vim krrkrkrkKRKRkRKRkrkr.
- taeric 6y agoWasn't emacs forked several times in the past? Would be curious to see an exploration of the difference and why they converged back to mainly one offering. (Or are there others still thriving?)
- abhinav22 6y agoVSCode is Slow to me. Emacs is great for lisp programming and I like the TODO feature of org mode, there’s a lot of useful features, however it’s a bit too different from modern UI so I get a bit jarred using it from time to time —> my job is using many programs, of which an editor is one, so I can’t happily stay in emacs 90% of the time. I really like Sublime - fast and clean. Currently I use both sublime and emacs depending on what I’m doing. I wish I discovered emacs 20 years ago! How many years I wasted without it :(
- jimmyvalmer 6y agotldr Neovim is a more actively developed vim. Vscode is a more than good enough editor for all seasons. Emacs is both stymied and celebrated for its adherence to "software freedom." Editorial: No one cares about "software freedom." If it takes [more than 2000 words](https://www.gnu.org/philosophy/free-sw.en.html https://www.gnu.org/philosophy/free-sw.en.html) to describe what "free" means (another bad case of tldr), then forget it.
- auggierose 6y agoI don't like any of the three. I like Xcode, even better now that interface builder is destined for the garbage heap.
- jackcviers3 6y agoUntil an editor comes along that is as extensible and keyboard efficient as emacs with lsp integration, or I get one of those combination mouse/ergonomic keyboard contraptions, I'll stay there. Every other IDE requires mouse usage to accomplish even the most basic commands. With helm in emacs, my hands never have to leave the keyboard. Vocoder comes really close, but still requires you to build a plug in rather than exposing a quick api to do project specific one off tasks with eval or macro recording and repetitive application without using the mouse for anything.
- asdfiuiu77 6y agoVSCode sends your private data to Microsoft servers. Emacs and Vim don't.
- blackrock 6y agoOh snap! Don’t leave us hanging! Do explain in details what VSCode is sending to Microsoft.
- papaf 6y agoShouldn't that be Microsoft's responsibility? Last time I looked the answer was to "read the code".
- nichos 6y agoUse https://vscodium.com/ https://vscodium.com/ it's vs code without any telemetry.
- sitzkrieg 6y agoi just wanna know how anyone still uses emacs insanely bad movement bindings
- b5n 6y agoI find them incredibly ergonomic, another bonus is that it provides the same defaults found in most terminal emulators. Most people try to use pinky for Ctrl, or map to Capslock, but using the side of your palm for Ctrl is really comfortable. I generally run circles around colleagues in a terminal or working with text, especially when utilizing macros, but the learning curve is definitely steeper and took some time to get used to.
- spudlyo 6y agoUniversally. Outside of Emacs, I have those "insanely bad" bindings in GUI text widgets, my shell prompt, when choosing/searching in in fzf, navigating scrollback in tmux, and inside REPLs of all flavors. Basically anywhere text is entered, I edit with those bindings. My Kinesis keyboard has 12 thumb buttons, and for me Control, Meta, Super and Hyper are all easily within reach.
- mbrumlow 6y agoHow was "Editing efficiency" measured. I use emacs and seem to be able to make changes in fewer keystrokes and time than any other editor.
- ithrow 6y agothan any other editor. Does that includes Vim?
- 1MachineElf 6y ago"Maintainability - The degree to which it can be modified without introducing faults" I can see why VS Code might get the Maintainability checkmark in the sense that it's hard to break from a user POV, but I wouldn't consider it "maintainable" in certain aspects as long as it isn't FOSS. Your IDE/editor is subject to the whims of Microsoft's release engineering team. If you do want to build from the open-source version and have the same experience, then you're going to have a bad time: https://www.reddit.com/r/linux/comments/k0s8qw/vs_code_developers_prevent_running_the_new/ https://www.reddit.com/r/linux/comments/k0s8qw/vs_code_devel...
- chii 6y agoThe source code version of vscode (ie, your own binary) is incompatible with one of the extensions microsoft developed (pylance?), which is AI powered python code completion. Microsoft did not open source this extension. Therefore, the fact that it does not work with a non-microsoft build of vscode is not surprising - and in fact, should be perfectly acceptable. To claim that microsoft _should_ be releasing this proprietary extension as open source and free is to claim that a user is entitled to it, without paying the cost (presumably, that being the telemetry that the microsoft build of vscode collects).
- qwerty456127 6y agoThey have wrote such a list of values down but seemingly forgot such values as aesthetics (e.g. Sublime and VSCode look great, at least after you install a theme which suits your taste) and smart context-aware code completion and refactoring facilities (e.g. try IntelliJ once and you are hardly ever going back).
- cjauvin 6y agoThe article discusses it in sections related to Emacs' attitude toward modernization and progressiveness (see the citation from Ahmed Khanzada).
- jasim 6y agodoom-emacs looks wonderful from the get go. https://github.com/hlissner/doom-emacs https://github.com/hlissner/doom-emacs
- qwerty456127 6y agoIndeed! Does it have a light theme also? I have a window behind my back so I mostly prefer to use the ayu-light or alike themes wherever available.
- 0xEFF 6y agoAfter 10+ years with Vim, and 5 on emacs before that I switched to vscode this year and have been pleasantly surprised. I tried vscode in 2018 and it wasn’t there yet. What I like better than vim: Better integration with python. Per-workspace interpreter and linter path settings. Outline view. Integrated terminal. direnv and venv both work well. JSON Schema integration. This is actually what sold it for me. Edit: format
- cjohansson 6y agoI don’t see why everyone needs to have the same opinion and editor, I’m fine with everyone using the editor they like best. It’s a tiresome endless debate
- rauhl 6y agoIn principle, I agree with you. But there is a practical issue: if everyone used the same editor core, then we could all share improvements to it. Kinda like how the explosion of creativity in the Web (for good or for ill — I am still unpersuaded the JavaScript and SPAs are a good thing) was enabled by the common platform of HTTP+HTML+CSS+JavaScript. Instead, we have some people writing extensions in elisp for Emacs, some in Vimscript for vim, some in JavaScript for VSCode, some brilliant madmen in rc for acme, some poor saps in Java for Eclipse. In the end, I wonder if this is not more of a theoretical waste, though. Just like a command economy theoretically has less waste than a free market, but in practice every real-world free market has orders of magnitude less waste than any command economy, I wonder if in practice the profusion of editors has helped keep us from being locked into a local maximum (and argument which can be made against HTTP+HTML+CSS+JavaScript, BTW …). It’s tough to say, it really is. For my part, I wish more folks would give Emacs a fair try, and I also wish that Emacs were a little easier to give a fair try. It is by far the single best editor/IDE/platform/OS out there.
- piazz 6y agoMy daily driver is VSCode with Vim editing and Emacs Spacemacs keybindings. I use a VSCode port of Emacs' Magit client for version control. I'm genuinely curious, from other folks perspectives, what I'm missing with this setup. I've tried standalone Vim, I've tried standalone Emacs (Spaceamacs), and this is by far the best developer experience I've had. I don't know why I would ever switch to another tool, this feels to me like the best of all worlds. VSCode Spacemacs: https://github.com/VSpaceCode/VSpaceCode https://github.com/VSpaceCode/VSpaceCode VSCode Magit: https://marketplace.visualstudio.com/items?itemName=kahole.magit https://marketplace.visualstudio.com/items?itemName=kahole.m...
- atweiden 6y agoI'm more excited about Onivim [1] than I am about Neovim making Lua a first-class language for writing plugins. [1]: Onivim is a VSCode/Vim hybrid in the works (https://onivim.io/ https://onivim.io/)
- himujjal 6y agoStill kinda restrictive with its license. Still uses NodeJS under its hood. 60+mb in size I am surprised nobody talked about https://github.com/rxi/lite https://github.com/rxi/lite Its a really simple Editor. I have recently started working on it. Not very feature rich, but gets the job done. Lua as plugins are also a plus
- alexisread 6y agoFor me, the value of emacs lies in the fact that it works from the cli ie. Ssh, and that I can use it productively from termux on my phone- with a Bluetooth keyboard I can do split-screen working with ease. Vscode would be considerably harder to setup.
- squid_demon 6y agoPerformance should be listed on there too. Without it, none of the other features matter to me. If I type a character I would like, ideally, 0 ms lag. That has to be a starting point. THEN, you can add the additional layers of niceness (while keeping the performance, of course). VSCode certainly does not achieve this (gorilla is being polite).
- Koshkin 6y agoEmacs is a typewriter that comes with a one thousand-page user manual and can also serve as a piano and a chainsaw.
- ReneFroger 6y agoPerhaps this might be interesting to anyone which wants to give Emacs a try: https://emacs.zeef.com https://emacs.zeef.com