8 ms·
100% concur with this. I learnt Vim many years ago and I genuinely don't know what I'd do without it. It's always just there when I ssh into a new server. And t
by reactchain 6y ago
100% concur with this. I learnt Vim many years ago and I genuinely don't know what I'd do without it. It's always just there when I ssh into a new server. And the JetBrains suite has an awesome vim mode meaning I can use most (but not all) vim shortcuts with an actual IDE. I don't think vim itself works well as an IDE substitute, and wouldn't use it for hardcore web dev for example - but for quickly editing random files there's nothing that comes close.
- kamaal 6y ago>>I don't think vim itself works well as an IDE substitute, and wouldn't use it for hardcore web dev for example - but for quickly editing random files there's nothing that comes close. Exactly my thoughts, you need vim and emacs these days if you want to munge through large amounts of text. The thing is in these days of Kibana and Elastic search. You don't do much of this kind of work anymore. Code is text. But it's not that kind of text where you need your fingers and macros to do much work. Your tool needs to be at least to some extent aware and intelligent of code you are working with, or you end up doing too much work for nothing. If your language doesn't have this kind of tooling and you wish to maintain your application for long, you need to use a better commonly used language. Much of the vim macro work I could put to use is done by black these days. If you are writing too much repeated code, you need to learn to write reusable code. Navigation is one more of those things which could improve if you use intellisense. Bulk of modern day dev work requires working with 2 - 3 tech stacks. The use case for vim, which is writing few key stroke in one attempt to transmit them over super slow internet connections, doesn't exist anymore.
- RMPR 6y agoI'll argue that the IDE is Unix, not vim, I recently started and endeavour to vanilla Vim and I was baffled by what is possible even without plugins, granted I mostly work with C and a bit of Python, but one thing to consider is that most people using Vim come from an IDE background, so horse for course I guess. https://sanctum.geek.nz/arabesque/series/unix-as-ide/ https://sanctum.geek.nz/arabesque/series/unix-as-ide/ Edit: Link
- imtringued 6y agoUnix is not an IDE. The I stands for integrated. Unix is just a good old development environment...
- RMPR 6y agoFair enough
- cyberdrunk 6y agoIDE has syntactic understanding of your code, which allows you to navigate your whole codebase as if it's one big hypertext document (invalueable especially when learning new code). Also, the syntactic understanding allows you to do one-click fairly complex refactorings with guarantees that nothing will get broken (at least it works for sane languages, like Java. I don't know how well it works for C/C++, where preprocessor macros complicate things). I don't see how "UNIX as an IDE" delivers this.
- RMPR 6y ago> at least it works for sane languages, like Java. You lost me here. > I don't see how "UNIX as an IDE" delivers this. Have you read the linked series of articles? The author explains and provide examples with C and Perl, Iirc there's a book about working with Makefiles in Java, so it's totally doable, painful, but doable.
- urxvtcd 6y agoYeah, UNIX doesn't do that on its own. You can grep, or run find and do a bash loop and so on, which is cool. But it's language servers that give semantic understanding of your code. You can easily refactor, or go to definition from vim. So UNIX is a development environment, very flexible, yes, just not that integrated.
- mmkos 6y agoI have mainly used vim for development and I can navigate my codebase just as seamlessly with ctags-generated indexes. I'd agree on vim being of limited utility when it comes to automated refactoring (it's a text editor after all), but beyond changing the names or extracting functions what can an IDE do for you in this respect?
- the_gipsy 6y agoThe use case of vim is not using an insane amount amount of arrows/ctrl/shift for everything. It's like a mechanic using just one adjustable spanner and one screwdriver to e.g. replace a clutch. It's ok if you really don't have anything else, but any good mechanic will use a set of good tools. (sorry in advance for the car analogy). BTW a modern vim setup with CoC is not very short of an IDE, but at lightspeed.
- karolsputo 6y agoIf one wants to do web dev on vim I strongly recommend neovim setup with coc.nvim. I know some people strongly disagree with transforming vim into and IDE, but this is a really productive setup for creating code (works like a charm for my current React project) Personally I’ll sometimes use VSCode to browse big files or explore the codebase, but when it comes to editing them neovim with coc, fzf and a language pack is all you need.
- mahaganapati 6y agoYep, neovim, coc and fzf has made me really productive in vim lately. After years of vim I was tempted to use VS Code until I found out about coc.
- majewsky 6y agoFWIW coc.nvim does not require the NeoVim fork, it also works with vanilla Vim 8.
- Lio 6y agoI’m always interested in this opinion. What IDE features do you think vim is missing that aren’t available via LSP plugins?
- arcturus17 6y agoI tried getting vim to match my favorite features in VSCode / Jetbrains IDEs and almost went crazy. Rather simple things like code completion or syntax highlighting were already moderately complex to set up. The command palette present in both Jetbrains and VSCode also has thousands of actions easily searchable in plain language, the most simple of which can be replicated with vim (ex: open file) but many of which would likely require some heavy extra configuration. I never even got into replicating things like live templates which are a massive productivity booster for me - I simply gave up. For me it’s much easier to install the vim plugin in my IDE or editor of choice. I get the modal editing goodness of vim with a supercharged layer of utilities that work out of the box.
- Lio 6y agoI'm not going to argue with your personal choice or that you should spend time configuring vim. I'll just point out that the things you've discussed are possible in Vim if you want them. E.g. live-templates (snippets) https://github.com/neoclide/coc-snippets https://github.com/neoclide/coc-snippets and that if you don't want to spend the time configuring yourself projects like https://spacevim.org/ https://spacevim.org/ exist. Now there probably are some IDE features that vim can't replicate with plugins but it's very rare to see someone actually provide an example of one. Something like a profiler with flame graph might be an example. Things like refactoring, completion or fast command search probably aren't.
- The_Colonel 6y agoThere are things like refactoring which technically are supported by vim extensions, but are just utterly inferior to the dedicated IDEs. For example - you know "extract method" refactoring. Pretty basic thing and I assume vim can do that. But on top of that when you extract the method, Intellij will go through rest of your code and try to figure out if some other parts could be automatically refactored to use this new extracted method as well. It will offer to change the method signature if needed to do that as well. Intellij will - as you type - notify that the code you're writing is structurally duplicating an existing code and offer an intention to automatically refactor the code to remove the duplication. Intellij offers an integration with databases - in my code I use a lot of SQL queries - intellij can connect to the data source and scan the schema. When you then type queries into strings, Intellij recognizes them as such, offers autocomplete to the tables/column and validates the query for correctness (also allows you to click through to the actual data view). It understands like 20 SQL dialects and things like JPQL as well. Another example is the deep flow analysis which can point out logical mistakes as you type (things like NPEs). This is very helpful in daily programming, extreme example of that is shown here: https://blog.jetbrains.com/idea/2019/11/intellij-ideas-static-analysis-vs-the-human-brain/ https://blog.jetbrains.com/idea/2019/11/intellij-ideas-stati... Most of the time when people showed me a "vim IDE", it looked like IDE from the 90s - highlight was that it showed you the list of class members, had a snippet manager and could sort of rename a variable. State of the art is much farther since the 90s though ...