4 ms·
Why do we need such things in 2019?
by demee 7y ago
Why do we need such things in 2019?
- YawningAngel 7y agoCommand line vim is one of the most productive editing environments on the planet, why wouldn't we?
- bori5 7y agoLove vim but would hate to use it for Java where I found an IDE such as Eclipse much easier to work with. Back in the day when I used to do that sort of thing.
- maccam94 7y agoLanguage Server Protocol plugins are adding functionality for completion/docs/refactoring these days, and vim-jdb looks pretty decent.
- bori5 7y agoI feel like I need a PhD in configuring vim to do that stuff. The fact vim has been around forever and still hasn’t caught up with an IDE for ease of use doesn’t convince me at this point to use it for coding Java. Eclipse/IntelliJ is simple download and everything ready to go, git integration, all kinds of auto complete , debugger, etc... you hit the ground running pretty much. Can’t say the same about vim for Java, but think it’s fantastic that progress is being made to close the gap. Now where’s the simple one line config command to get me started ;) ....
- h1d 7y agoI don't see there's a reason to use vim locally as other editors are far advanced when vim isn't changing at all. But there's a use on the server side because you only have vim or emacs there.
- oblio 7y agoAs someone who's been doing sysadmin-ing things for a while... (10+ years) I don't think I've ever seen Emacs installed on any server where it wasn't maybe pulled in as a dependency by something else. Emacs is almost never installed by default, you could instead install micro (https://micro-editor.github.io/ https://micro-editor.github.io/) instead, use normal keybindings, and call it a day :-)
- josteink 7y ago> As someone who's been doing sysadmin-ing things for a while... (10+ years) I don't think I've ever seen Emacs installed on any server Chances are the Emacs-users are working on files on that server remotely via TRAMP, from their nicely and 100% personally customized Emacs-installation. Why bother replicating all that setup on a server when you don't have to?
- oblio 7y agoTrue, but that also means that as someone who regularly SSHes into servers, you don't need to learn anything about Emacs. For local stuff on the servers, vi(m) is always there (https://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html https://pubs.opengroup.org/onlinepubs/9699919799/utilities/v...), for remote operation you can use any other editor ranging from Emacs + TRAMP to VS Code + remote extension to ...
- Lio 7y agoSince Vim/NeoVim take a "batteries not included" approach to set up I'm just happy that we've gone from a state of "you have to use an IDE to get code aware features" to "it's hard to set up code aware features in NeoVim". Hopefully other projects such SpaceVim or individual plugins can provide an easier path for those that want it. I think it's on NeoVim's own road map to add LSP support out of the box. Of course it's also worth pointing out that whilst it's nice that NeoVim is learning new tricks nothing about having better CLI based tools available means that you can't still use GUI based IDEs if that suits your use case better.
- brbrodude 7y agoUgh, Eclipse is disgusting. IntelliJ is much better, and also has a very nice VIM-mode plugin(last time I checked Eclipse one's were bad), so, I prefer having it both ways. Comments mocking vim(like the original parent) are really missing it badly, nothing has so much staying power for no reason.
- dmortin 7y agoI'd say language support is the most important for productivity if we talk about programming. Having the whole API under your fingertips, doing safe refactorings easily, etc. are much more important for productivity than simple editing. If you can refactor a class, move functions, rename variables across the whole project safely (string replace is not enough) with a few clicks then you are much faster than when you have to do all of these manually. I'm saying that as an emacs user. I prefer emacs, but if I had to work with a language (e.g. Java) where language support is much more sophisticated in a tool like, for example, IntelliJ, then I'd use that instead, because it would make me much more productive.
- fhennig 7y agoThis. First of all, I don't know about vim/neovim, but I think a lot of the issues apply there as well. When I develop software, I don't need an editor, I need a development environment. I spend 90% of my time reading code, so reading and navigating the codebase should be very straightforward. Most importantly I want to have a tree view of the files in the project, I want to be able to jump to function/class definitions and I want to show usages of functions. Another big thing is debugging. IntelliJ has really good debugging capabilities. Also auto-completion. I think some of these you can get in vim/emacs, but it doesn't come out of the box. I sometimes miss some of my emacs shortcuts/features, but not enough to drop all the amazing things that IntelliJ is offering.
- simias 7y agoI often switch between several programing languages, I often switch between projects, I like being able to dig into the code source of some tarball I found online without configuration. I find that deep editor integration gets in the way more often than not. For navigating the project I use helm on emacs, fzf on vim. I can just fuzzy-match anything I'm looking for instantly. I find filesystem treeviews useless, they use a lot of screen real estate and they're annoying to navigate, I don't see the point. For navigation ripgrep does most of the job complex language engines do and it works across languages without any configuration. For C I sometimes use cscope and ctags but even there I often just call ripgrep because why not? For auto-completion I also find that a very naive algorithm completing words from existing buffers works reliably and efficiently, with zero configuration and tweaking. Sure you don't get context-aware completion but that never bothered me too much to be honest. For debugging I can't really disagree with you, both Vim and Emacs are very limited in that regard (Vim especially so). That being said, maybe if I gave those big IDEs a chance I'd never go back, who knows. Besides I could spend an hour listing things I think Vim and Emacs do wrong so it's not like I think they're perfect editors.
- h1d 7y agoFor server side config file editing. There are plenty of editors to choose from for local GUI environment but not so inside SSH session.
- Lio 7y agoThe terminal is common to many operating systems and keyboard shortcuts leant there are pretty universal. If you prefer a keyboard driven workflow learning to use a terminal and terminal based editor will give you a very portable solution. Vi's commands are somewhat like a language for manipulating text. This is a different philosophy to many non-modal editors. In vi you can say change the next 3 paragraphs to foo or replace the text inside the this tag with bar. When you learn the language it's almost painful to watch someone trying to select text with a mouse. (I realise GUI tools often have vi plugins. I think that only proves that modal editing is useful and ergonomic once you've learnt how to use it). CLI based tools are also very scriptable where that is often not the case for GUI based tools. Vi/Vim/NVim are part of a wider ecosystem of tools. If you learn the Ex commands for things like substitute/replace in Vim you're taking a step along the road of learning sed also.
- fhennig 7y agoI guess it depends on the usecase. You mention a lot of scripting, and also the terminal. Would you also recommend vim for working on large projects with 100+ files? I believe in this case, a full on IDE is suited better. Also I'm not so sure about the portability. Sure, some of the knowledge is reusable, but when all the vim installations are not "batteries included", every installation will be configured differently. Another point: I think with strongly and statically typed languages one shouldn't think about writing code as writing text, but about building a syntax tree that happens to be text.
- Lio 7y agoI think vim with a fuzzy finder plugin like FZF will easily handle 1000s of files not 100s. The project I'm currently working in has 6495 files, I don't regard that as a large number. You would be surprised by what Vim can do out of the box simply by turning features on. It's also very easy to move configs about. I use github for that job but I can use Vi/Vim without a config if needed. However what I really mean by portability is that once set up I have exactly the same shortcuts on both my own mac, client's linux laptop and servers. Currently I use tmux for window management but I could use NeoVim for that now. If I want to open a split terminal window or move an existing one about it's exactly the same short cut on each machine. > Another point: I think with strongly and statically typed languages one shouldn't think about writing code as writing text, but about building a syntax tree that happens to be text. That's in no way tied to a GUI and there's nothing to stop you adding IDE like features to an editor like Vim. The terminal is just another way of representing tooling to the user. However if you prefer a GUI interface then nothing stops you from using that in preference to the terminal either. I only point this out as the grand parent asked why we would bother in 2019.
- drbojingle 7y agoWhat's wrong with it?
- cosmic_quanta 7y agoI didn't get why this was important until I started working on a remote cluster. The only environment was the shell. Being used to VS code, I had a rough time with vim. Learning neo/vim has been interesting in many regards. I now have a more "portable" setup (up to plug-ins)
- nguoi 7y agoIt's a shame English doesn't distinguish between non-inclusive-we (the writer and the writer's peers) and inclusive-we (the reader, the writer and the writer's peers). Non-inclusive-we 'need' it because we want it and will make it ourselves. Inclusive-we do not because your individual needs were never and should never be the concern of a project that you have no investment in.
- 314 7y agoWow. As a native English speaker that is one of those conceptual biases / holes that we are not aware of until it is pointed out.
- NateEag 7y agoAs a native English speaker I have been annoyed at this hole in our language on several occasions. There are lots of other stupid things about it too. I love it dearly, but English is not elegant or concise.
- brbrodude 7y agoMaybe there's a reason people still use everyday, extend, follow, contribute? Maybe..
- Seirdy 7y agoBecause we haven't come up with anything better. Neovim, Vim, or Emacs combined with Unix make a better IDE than an IDE. With a fuzzy finder, Neovim start up in milliseconds and can scale to projects with several thousand files, complete with documentation, symbols, reference jumping, and refactoring. An IDE just turns my laptop into a space heater with minimal configurability and fewer features. In other words, I am investing more battery life for a weaker program. If I need to use someone else's computer (or a container), I can run Vim with my config file right in the terminal and never notice the difference. The features I need: 1. FOSS 2. A reasonable amount of battery, CPU, and memory usage. The editor should not bring a browser/JVM with it. Browsers eat RAM and need to be restarted within a couple days of uptime, and the JVM kills the battery. 3. Cross-platform; should work on Linux and BSD. 4. Should scale to large projects with thousands of files. 5. Should support advanced features with something like the Language Server Protocol. 6. Minimal UI and keyboard-driven; screen space is often limited, and I hate the mouse with a passion. Vim and Emacs are the only editors I have ever used that have all of the above features. Nothing else comes close.