All of his arguments boil down to "I was too lazy to learn shortcuts in the IDE, but i forced myself to learn the same shortcuts in VIM, therefore VIM is better"
@@insydian ignoring the fact that you can reassign the shortcut and they are usually managed with simple text files, and also ignoring that, at least in my experience, people usually aren’t switching rapidly from language to language in their daily workflow for the moment. that argument doesn’t really apply to the two leading IDEs, IntelliJ and vscode
Not dissing Vim, it seems powerful as fuck and most importantly light-weight, but in terms of navigation most modern IDEs can do what was shown in this video and people are just too lazy to actually set and/or learn the shortcuts. Same reason they dont start using Vim. I use Webstorm daily for work, because we are TS-only: Fuzzysearch files: double-shift Go to last file selected: ctrl+tab --> hold tab and hit tab to go further back the files you last visited Got to line: ctrl+l Go to matching brace (in my case): ctrl+shift+m While on a brace select its content: ctrl+(2*w) Select word: ctrl+w --> Hold ctrl and progressively select more elements connected to the word in syntactic priority by repeatedly pressing w Select line: ctrl+c Replace by regex: just like regular replace (ctrl+r) but activate regex once Duplicate line/selected block: ctrl+d Or delete with ctrl+shift+d Find next instance of x: ctrl+f Hit Enter to move forward, shift+enter to go back Esc to stop search. And manymanymany more, seriously the keymap is huuuge! Oh and properly use home/end, pg-up/pg-down, and Esc, and set the shortcuts for entering the integrated terminal. I'm sure all of this can be set in VSCode too. The only thing Vim really does better in this regard is sticking to the homerow principle and that is honestly the only reason why I consider learning it. The speed of my IDE has never bothered me.
Yup, I use PHPStorm, and I have those, with some modifications. I also have many more set that I use religiously. I just noticed how much I rely on them when I was helping new colleagues that didn't have my key bindings - I kept hitting them and nothing happened or something else happened. It felt like a limb was missing, it felt so slow and powerless coding like that. In no particular order: Ctrl+Shift+up/down to move the line(s) up and down a line (useful for switching order of lines). Ctrl(+shift)+left/right/up/down/end/home go(+select to) next word/camel case boundary, line start/end Ctrl+backspace/del - delete to next boundary left/right Ctrl+shift+backspace/del - delete to next camel case boundary left/right Ctrl+shift+f or r search/replace in all files Ctrl + - and Ctrl + +, or the prev/next buttons on the mouse -> move caret in history back and forward, even across files Ctrl+e toggle quotes/doublequotes Ctrl+q toggle comment lines Ctrl+click on something - goes to its definition Ctrl + right click on something - goes to where it's used or if there's more than one place, then it goes to a list of places where it's used so I can pick one (up/down to move through list) Ctrl+~/tilde - rename(+refactor) everywhere - renames variable/function/etc everywhere (can even rename in comments if wanted), also renames files/namespaces/use statements if it's a class, etc. Some hotkey I forgot for Zen mode where it hides everything (like menus/sidebars/etc.) except the text. I think it's Ctrl+F5. Ctrl+1 toggle show/hide file tree, Ctrl+2 toggle open/go to last terminal, Ctrl+3 toggle commit sidebar, Ctrl+4 toggle sidebar menus, Ctrl+5 toggle git log/branches/remotes tree Ctrl+w close tab/window Ctrl+shift+tab open last tab And some more that I can't remember right now. I also edited the interface of PHPStorm and removed more than half of the options in menus and right click context menus, so they're much shorter and cleaner now, and they contain only what I need. It's so much easier to use them like that now.
As a compromise, I highly recommend the vim plugin. Its really nice to be able to use the modal tricks you get with vim within a full ide env like intellij et al
The language specific IDEs from JB are basically IntelliJ Ultimate with a streamlined UI and plugins for that language (except CLion and Rider). I think there is also a difference between the debuggers between CLion, Rider and IntelliJ. Webstorm is included in most of them. Neovim is great and I loved it, but real talk the JB IDEs are *very fast * to work in with hotkeys and Ideavim.
CLion is my go-to, and I work primarily in C & C++. Despite some weaknesses, it's an indispensable tool for me. I can't imagine trying to configure vim to achieve similar capabilities... I don't have time for that.
JetBrains IDEs just rock, they have really improved them during the past 3 or 4 years or so.
10 місяців тому
I agree, I don't find that vim is particularly faster than PHPStorm + Ideavim. Also I find PHP LSPs kind of lackluster compared to PS's intents. I use Alt + Enter all the time to do things like invert and split if statements, search for the correct imports and updating deprecated constructs to the new implementation (an example is strpos() === false which can be changed to str_contains()). I like and use vim a lot, but there are so many things I end up missing for PHP specifically.
Agreed, I use nvim for absolutely except php plugins/extensions, there the PHPStorm is godsent. The fact you can load classes from outside the plugin folder, and not even from a live install or docker instance is so convenient. You can make the hints also straddle a range of PHP versions, which is amazing when updating embedded code to be php 8.2 compatible without breaking 7.3. JetBrains knows how to make an LSP and static analysis and Ideavim is pretty good too. If they ever made a sub just for their LSP's which I could pipe into vim, they have my money for life.
The big thing for me is all the refactoring and structural search and replace capabilities in JetBrains stuff. Being able to refactor 17 files with a new interface in Java, for example, is only a few keystrokes.
i have my vscode setup with: - custom shortcuts to traverse files / code without mouse extremely fast, but the shortcuts are way more intuitive and contextual than vim's - fuzzy finder for files - minimal extensions it's fast, responsive, and powerful AF with zero clutter, and I never touch the mouse. people acting like you can't recreate most of this experience in vscode are no better than those that think VIM is only for showing off. both are great.
How do you do large scale refactorings like symbol name changes or abstractions? Do you just do them manually? Search+replace kinda works but you have to be super diligent since you have no help from VS code that they are actually the same symbol. Abstractions are also a chore to do, albeit something I do less often.
Personally I don't think the choice of editor matters, my limiting factor in productivity is not how many characters I have time to insert/edit, its more about motivation
I mean I suppose it's hard to refute that you're feeling unmotivated? Maybe you'd be more motivated if modifying code was less painful? I'd certainly say I got much better at programming after my attention got freed up from the problem of making changes to what the changes should be. And then I got worse at programming again when I started working somewhere the dev env is hyper borked 😅 Maybe you're onto something
@@CaptainWumbopeople like this would legit spend two minutes "learning" an ancient tech and would immediately be unmotivated and neither learn that garbage, nor get any coding done. Congrats.
Ctrl+p and ctrl+r are a standard in most editors/ide-s for years now. As well as many other shortcuts that do almost all that you two said. I get it why you two are so excited about vim, but a bit of balance should be.
@@Xe054 Ctrl + p is trash compares to the tons of fuzzy finding options in neo(vim) like Telescope fzf-vim fzf-lua leaderf and so on. It's like a bicycle vs a car
There are 2 things about PyCharm that I like: 1. Renaming modules: You can refactor the name of a module and it will automatically rename the folders, py files and imports 2. Requirements management: When you add have a library in the requirements.txt file that is not installed in the environment, it will detect it and give you the option to automatically install it by clicking a button I do not know if those are possible with (n)vim, but they would be nice functionality to have there.
@@anon_y_mousse yeah, the question is just why would i hunt down vim packages (which are often broken, hard to install or unmaintained (or just require a degree in lua script development)) when i can just use pycharm which has all of this bundled in? i personally use pycharm with Vim mode for editing and it is a perfect combo.
Neovim's built in LSP can definitely do refactoring, I use it a bunch, and you can also set up code-actions and such pretty easily. As for requirements, I'm not sure this needs to be something that the text editor needs to do, you could probably just have a bash script that installs your requirements.
@@bernardcrnkovic3769 There are Neovim "IDEs" or distributions like LunarVim, AstroVim, LazyVim, and NvChad that bundle a bunch of plugins and set default configs for an out of the box experience. These are still just Neovim, so everything is still configurable and open source, and is generally good for beginners to just start using Neovim.
I mainly work with Java, and do some devops work too. For the infra and config stuff, I'm totally sold for vim. But for Java there is really no fucking way that Nvim can be nearly as good as IntelliJ. The amount of things you can do on IntelliJ is unmatched. The super intelligent auto complete, super easy refactoring and the best debugger of probably any language out there. There is really no way for nvim to win, no matter how much gigabytes of plugin you install on it. I can get that nvim can be the best ide for any other language that is not Java or Kotlin. But for these two, you got take the L man, its a lost battle
Agreed, IntelliJ is awesome! Though I'd say this is mostly due to Java having such fat dev environment. It is indeed challenging to work with without a proper IDE
@@anon_y_mousse haha I wish it was possible to write perfect code the first time. But I don't use debug only to fix bugs. I use it as a development tool too. I always run my code with a debug the first time to make sure it is doing what it should. Almost like a repl development that clojure devs use, but with a debugger, and even the evaluate code that intellij provides
Yeah when I was doing Java I simply couldn't use neovim. Especially since it was Java 8, and the neovim plugins for Java only work like above 14 or 17 something like that... plus yeah IntelliJ is a very good product. But the fact that you absolutely NEED it because otherwise you simply can't work with Java speaks enough about what a shitty language it is and why I never want to touch it again.
In vscode you can so "Ctrl + p", and type the name of the file in the current workspace that you want to open, then press Enter to open. You dont need to use the file tree or your mouse. 🤷♂️
Yeah i even went as far as to bind it to shift shift bc i find it even easier to use, as well as ctrl ctrl for opening command palette, which i far prefer over the approach the bloated IDE’s take with a billion buttons and menus. Also having the extension commands work through the command palette is also a major W. I also mapped alt alt to symbol search. Whats also cool with the drop down dialog is it is actually the same dialog for all 3 actions, just > prefix == command, # prefix == symbol, and no prefix is a file search. Super awesome, also love how vsc has ctrl f dialog per “tab” so you can do a plaintext search in the terminal and in your file, and ctrl shift f for entire project. Much better user experience then the billion button and menu ides
@@UrzaRage778 Or, maybe if you don't have such keys on your keybaoard, it doesn't hurt to learn a few keybindings. Macbooks do not have the majority of keys, so its a must for me since I love my macbook to death for how much better of a development device it is compared to my windows laptop. Also, macros are powerful as fuck, and I don't know if those keys are qualified as macro movements. Even if they are, they are not home row keys, and require you to look down or maybe misclick. Vim was created for power users that wanted to never leave the keyboard for a mouse, and instead manage everything. And considering how much serverless tech we use today, or cloud linux machines, good luck navigating the terminal with vscode when ssh'ing in. Are you going to go ahead and install vs code on your remote machine just so you can edit a couple config files? More over switching and managing tabs for terminal commands and performing parallel operations that require the terminal. Not everyone is going to make a GUI for all your needs. I'm not saying you gotta switch, but you should be more comfortable to change, and considering your probably in the software industry, it's disappointing that you have such negativity towards such a powerful and useful tool. When i spin up VS code, i don't need all 100 of my extensions running in order to edit a file.
@@UrzaRage778learning those 'nonsensical' commands actually works because your keyboard wasnt created for programming. So any efficient keybind will seem 'nonsensical' to a normie.
@@askeladden450 is using HJKL for navigation in 2024 an example of something "designed for programming"? Seems more of an example of something nonsensical to me Is a random mixture of lowercase and uppercase letters as well as crap like $ and ^ an example of efficient keybinds? What about the colon, is having to press Shift+; more efficient than just pressing ; or something else? Oh, that's right, there's a good reason for it: this beatiful system of keybinds is designed for some god forsaken terminals from 1970s, and we have to be compatible with those to be true programmers, apparently Well, it's a shame you still need to learn the keyboard navigation with Home, End etc because vi keybinds don't work once you need to use a program that wasn't designed for keyboards from half a century ago lul
1. "IDEs are tied to that specific language." --> Yes, so? Use VSCode, which natively supports JS and TS, and install extensions to suit your workflow. 2. "IDEs are slow to boot up." --> What do you program on, a toaster? Plus, if you take the time to only enable extensions and tasks that are really necessary in your workflow, I don't think it takes that much time to load. And I use a 5+ year old laptop. 3. You took the time to learn Vim but not the time to appreciate shortcuts and GUI facilities made specifically to enhance your productivity from the get go? I'm an embedded developer and I know Vim and have been using it for a long time, but I just think this guy is a show off. Plus, if you have to use extensions and tweak files to enhance vanilla Vim, why not use an IDE that officially supports and indeed encourages you to customise your experience?
There are things I can't stand about IDEs now that I use vim. And there are things I can't stand about nvim because I'm too bad to figure it out (like getting a solid html lsp configured and working always). So I get the best of both worlds: both have things I can't stand
I use nvim for rust basically, and its awesome. Used CLION for about 2 years, but the bloat was killing me. But for frontend stuff, VSCode is my go to.
_ as an operator is actually a whole line operator, so essentially doing dd or cc or yy is an alias for doing d_ y_ and c_, this is why in that example with ^ it didnt delete the line c:
Used to use vim/NeoVim switched over to VSCode and have now been trying NeoVim and it's amazing just how good it is. I remember how much of a pain it was trying to get autocomplete and LSPs up and running and how buggy it was, now it just works. But still I feel VSCode is just so much easier to use, I can just use the same 10 actions for 99.99% of the things I do while in Vim I need to remember 100s of different actions/movements. I don't have the braincells to spare to have 50% of them remembering 100s of vim movements.
An advantage of VSCode is that most of the features are accessible via the mouse, and most actions can be searched using CTRL+P. Personally, I find this workflow slow for me because I am slow at using the mouse and I feel that the search lacks features. An advantage of Neovim is that most of the features are accessible using only the keyboard, but with a possible disadvantage for some, which is there's a lot of possible key combinations to do stuff
Which 10 common actions do you use? Are you talking about vs code shortcuts? I use the emmet shortcuts built into vs code, but I often wonder if there's a better way to navigate inside my files. This video showed me a glimpse of what nvim can do that vs code can't. For example, can you jump inside a function's parameters or to an opening and closing tag easily? In my experience, you have to hit the arrow keys too many times to jump around the file the way you want.
Been using PyCharm Professional for years and I'm sure everything he highlighted in Vim can be done in Pycharm. I'm fullstack Django dev so write Python, JS, HTMX, HTML, etc and never had any issues writing in Pycharm. Can't recommend it enough for my use case.
Yes "you're sure", while even the most basic plugin wouldn't be available. Yes you can do things, just less efficiently, you could've have added css and SQL to the list that it wouldn't have changed much
back in the early 2000 I started using VIM because I was a gentoo and then arch tryhard, so it was part of the cult, then I started working and was basically programming php and C into the servers directly, vim was the only editor that had code highlighting built in. I still miss the simpler times when you could get away with just code highlighting, a tags file and grep/sed
The first of your videos that I've stumbled upon. Very cool stuff and it's great to see someone as passionate about efficient keystrokes as I am. It's like a drug : ) I'm already loving those vim jump shortcuts. Thanks a bunch.
Over last couple of months I have incorporated tabs (:vsplit and mostly just two) to my frontend vim workflow. It's really useful to make changes to HTML and CSS. The trick here is I use to swich between the splits and trigger the actual :vsplit using ''.
I think I use tabs like you use Harpoon: I keep up to 4 tabs open for the files I'm working on, then "cmd/alt/ctrl" + "1-4" to switch to the one I want with a single keystroke. Being able to see the tabs at all times helps me remember what I'm working on. (Though I want give Harpoon another try to see if I could get used to it)
At 11:37, part of the mind-blowing experience this kind of tips provide is that those motions were since the start of your Vim/Nvim journey, just around three keystrokes away from you.
Using IDE: 1. commands are grouped logically and you use the mouse and menu if you are just starting 2. Use the search command 3. when you see that you use the same command multiple times a hour, it is time to learn the keyboard shortcut for that command So it's up to you if you want to use certain key shortcuts or not Using VIM: You have to use keyboard commands
Infinity scroll mouse wheels are incredible. They're on a super smooth ball bearing and they spend forever so you send it flying once in a direction it'll keep scrolling that way for quite some ways
Or just use "autoscrolling". Hold the middle mouse button and offset the cursor. Zoooooooom. Oh no wait you only get that on Firefox or Windows everywhere outside of almost all IDEs (or have to hand code it yourself for chromium if you want it in a non FF browser on Mac or Linux).
Good luck creating mobile application in text editor only. I do agree that vim is faster than writing same code in Android Studio for example (or Xcode) but those tools provide GUI for creating and debugging UI, handling localization, project configurations, certificates and much more than just writing code. You have so many things already created for you just click away, you can inspect database or preview assets or any kind right there without need for using other tools. Whole package preparing and publishing is done using wizard like solution where you just keep clicking and choosing your preferred options. It's just not the same. To me it's fine to compare Vim with VS Code or Notepad++ or Sublime, but you can't compare it with mentioned Xcode.
Im a flutter dev that uses neovim. I do all of this from vim and the cli. Most of what you think vscode is doing for you is actually being done by the lsp and project config folders interacting with the cli under the hood. Vim can replace vscode as the client to handle all of this. For instance, flutter-tools.nvim handles all of flutters auto refactoring functionality in vim, the same way the flutter extension does in vscode. The flutter cli handles all of the same emulator running and hot reload functionality as vscode does. Vscode is simply a client which has servers underhood that any other client can use, such as vim or emacs. Theses nothing vscode has that is proprietary and not also used by the vim community.
@@hamm8934 The OP is talking about using Android Studio for Android development which has tools built-in and wonderfully integrated together in ways VSCode and NeoVim can't.
This. Xcode is dogshit and is painful to use, but it would still beat out nvim in a long run because of the things mentioned + it's completely impossible to dev for ios/android without ui debugging tools. Webdevs are lucky in this regard because they have this functionality built into the browser.
Most modern IDEs can be used totally with keyboards. No one's forcing you to use a mouse. In fact, JerBrains / VSCode both have Vi modes. Where IDEs shine is with deep integration with 3rd party services and SQL servers, AWS/Azure, even object storage services. A lot of it can be mimicked with tmux, cli tools and vim but let's be honest, all that is cluncky and not as flawless.
These arguments always fail to convince me. IDEs have those things called "shortcuts" that let you quickly navigate your code. And guess what they're also customizable. You can also press Home or End to get to the beginning or end of the line, do people not know this? You can combine that with shift to select as well. This works on every single text box that isn't a terminal on both Windows and Linux, not just IDEs. This video was acting like only vim has this functionality. Yeah, sure, IDEs take a while to boot. How many times do people start their IDE in a single day? I just open it once and let it run, and don't even bother closing it most of the time as I go on to browse the internet. Edit: Yeah I forgot to mention, I'm using JetBrains IDEs which are superior to any other IDEs in terms of built-in functionality and customization.
Press Home and End? Lol. You might as well use your mouse if you want to move your hand that much . The whole point of vim is HOME ROW. And you have 0 idea what shortcuts in vim can do if you are comparing them with ide shortcuts. Literally 0 idea.
@XGD5layer you can still map the "home" and "end" key behaviours to other keystrokes, at least in JetBrains IDEs. Personally I mapped it to Caps Lock (CL + Left = Home, CL + Right = End, etc) because that's closer to Home and End, but I did that on the OS level not the IDE. You can also enable Vim mode in most IDEs if you want more of that functionality, though I've never used that.
I mean the vim motions are pretty great in Jetbrains IDEs too. If you use the mouse in Jetbrains IDEs thats a definite skill issue not a tool issue. They highly recommend keybinds, and also encourage not using tabs, to instead use the recent files feature. There may be good reasons to use Vim over Jetbrains, but there was very little substance here I feel. The startup is indeed in comparison slow, but a multi million line project takes in the area of 10 seconds after its been indexed the first time. Its only realistically a gain if swapping project multiple times every hour. You can also hide almost all deep integration bloat if you want and just see the editor (esp with for example Zen-mode).
10 місяців тому+1
Startup time is also kind of a non-issue once you have a single instance running. I hop around between several projects many times in a day. I just launch the project with dmenu and it takes a couple of seconds at worst, which isn't enough for me to care. It'd be worse if it was my terminal which I spawn and close hundreds of times per day.
@ Still important when you want to do quick edits while retaining the power of a complete environment, in few seconds I've already opened a file by using zoxide fzf and nvim while the jetbrain IDE isn't even loaded and responsive, dmenu/rofi being blazingly fast won't help those IDEs opening faster
@@heroe1486 its only when opening a new project though. Swapping through files within a project is as fast as in Vim. Idk about you but Im not swapping projects often enough for those few seconds to matter.
@@heroe1486 i do agree about ”most” IDEs but not specifically the jetbrains IdeaVim plug. I’ve used nvim for personal projects for a long time, definitely not a brginner and I rarely find things missing, and the ones that have been are easilly configured through built-in features. In the other direction vim relatively often lacks things I use that Jetbrains offer in terms of editing. Refactoring (technically has it but doesnt work in large projects)/live templates/postfix/extracting methods to name a few.
Primes examples were kinda cool but the video was dumb Text and code search are very standard features in IDEs and has hotkeys too It's on him for not being able to press ctrl-f
@@XGD5layer not on all layouts its not, on my standard ass nordic layous cftrl f is much simpler than /, in fact i need two hands for / aditionally prime uses custom mapping so thats not even a factor for him
I was always wonder how VIM could be compared to IDEs. For me when you speak about VIM and navigation it could be solved in my case with Resharper with all refactoring and search functionality in it. But what I like most is NCrunch functionality of live testing with lines highlights. So I change a line of code and within 1-2 minutes see failed tests and in the code, then I can see red highlights and from here to get to failed tests. As for code organization - trying to avoid huge functions and had no need to scroll function code. As for huge classes - search for functions by function name is good enough for navigation (all IDEs allows it - search by variable, function, class). So what is reason to configure VIM from scratch to support all this functions and hope that it will work from first attempt. I agree with Thiago - VIM fine for small files edit configs and etc especially on remote server. But huge app with a lot of refactoring e.g. move file/class and change it namespace and correct all code where it was mentioned e.g. import required libs and namespaces/packages. After all IMHO IDE is the way to go on huge project. VIM more likely more efficient in editing. Could please someone explain to me is it worse to configure VIM as IDEs or just bare minimum and use it for editing? Will be there boost (in future after 1-2 years) if I will try to replace IDE with VIM?
I enabled vim-mode in Rider and I find it as a the best solution from both worlds. InteliJ is more than fast enough to keep up with my typing (I even work through RDP from my laptop into work workstation in the office). You keep all the IDE goodies (like proper search in the whole codebase, auto-eclude of node_modules etc), while you get the power of VIM-like editing of the actual texts. It felt a bit weird in the begining, but now it feels wrong when I disable vim-mode. Also, vim-mode has plugins! So you can get almost all of the most important ones - that includes Harpoon. As long as your IDE of choice has a good vim-mode, just enable it and stick to the IDE. I found Neovim lacking - for example using the fuzzy file-search would also search node_modules. It would also not pre-index the files (bercause fast startup!!!!!), so it was way slower than Rider in that regard. in Neovim LSP for Vue.js would not work with in-line JS for some reason, and the code block had no syntax highlight.
agree on the java front - every so often i try to make myself a workable neovim setup for java with jdtls, and every time i get just a little bit closer before going straight back to intellij with ideavim.
man, is it really good? tried neovim for like an hour and hate it so much. I'm also a Java dev and intellij has been my daily driver for years now and there are so many tools integrated with intellij (sonar, docker, the whole spring boot config, tests config, gitlab config) that took quite a long time to get right. Going trough all of that again on top of neovim seems like a huge amount of work for something I don't see that will return that much value. But hey just my opinion, I'm really willing to hear people from a java dev perspective on this subject
I used vim for over 10 years (intermediate skill level). Ever since I used VsCode, I never looked back. The cold hard truth is that all these minutiae vim tricks don’t actually improve productivity in a substantial way. Vim keybindings are all you need. Sorry not sorry.
I started on vscode and moved over to Neovim. I have no idea how anyone prefers it. A its significantly slower everything has noticeable delay, B it everything works worse and C it didnt teach me about my tools. The first two, might just be my computer or is just personal preference but the last one you cannot deny. I learnt so much about my tools from Neovim. I could never go back to Vscode its terrible
If VsCode’s vim emulator wasnt so dang slow and had better jumplist and mark emulation, i would agree. But until it does these things, i just cant leave vim. Ive tried.
Have been using Vim + i3 for the last 5 years. Rarely any need to take your hands of the keyboard, no need to have different navigation commands in your os and editor, consistent interfaces and pretty much as minimal amount of clutter as possible.
Hey Prime just wanted to say you're saving my life with your DSA course on Frontend Masters. I'm interviewing with a fairly large company next next week and they said I'd be doing DSA for one portion. I'm self taught so I was slightly concerned ngl but it's super fun so far! Besides interviewing, I'm really excited to make my code more efficient. I feel like things are really coming together now, so *thank you* :)
How did the course go? I have recently passed my DSA course but I still think that I need a good course to fully grasp it tbh Anything you found missing in the course that you needed extra resources for?
the one thing i will say about mouse scrolling or even using mouse to select something into visual mode is that when I'm sharing my screen with coworkers it helps them not get immediately lost in the code, otherwise i never really use it
I’m going to say something crazy but don’t you think that your harpoon is a try to replace missed tabs in vim? Like I mean, tabs are just opened files in a current moment of the time which is definitely the same what the harpoon does P.S. I use the harpoon by the way 😂
I am using PyCharm as the main tool, and refactoring, debugging, and general code is just in place. Also it has a good simple support for other languages out of the box. So I see no reason for my switch to any other tool. None of arguments in the video is my argument for it =)
You should to like a VIM commercial video showing off specific use cases where you find it more practical, pragmatic or better in any way than VSCode. I tried VIM for a few years trying to get deep into customizations, but in the end I decided to leave it for SSH-emergency editing because as main editor I simply didn't find a workflow that actually allowed me to be more efficient than with VSCode....
The biggest problem here, is that every optimization you learn and setup you do in an IDE is locked into that IDE. If you want to change IDE, you need to learn and setup once again. With vim, you can iterate your setup as you learn.
I am sorry man, but if you ask this question it means you really never used a good IDE, and especially a debugger. I feel the vibe of a JavaScript developer.@@adam29334
I grapple with this. I bounce between nvim and jetbrains. nvim is incredible and paired with tmux or zellij you can get some speedy workflow and jump between different projects in different language instantaneously. That's awesome. BUT, I don't like editing code all day in the terminal. After a while it just annoys me. On the other hand. Jetbrains is beautiful with the minimal gui. Nice text rendering and scrolling and great search features, vim emulation is really nice too. BUT try having multiple projects open at the same time and in different languages? Brutal.
I keep wanting to use the vim integration in jetbrains, but for some reason the delay doing anything (even just opening the recent files popup) makes it so uncomfortable for me that I end up using the mouse instead
@@hrmny_ Jetbrains IDE are insanely slow, compared to vim/nvim/helix or even VScode which tells a lot, and apart from the debugger I really don't understand what's good with them.
@@pierreollivier1if you were to forget for a second that the intellij platform is slow as frozen molasses, it's a pretty decent experience actually. Of course, it can be pretty damn difficult after you experience the snappiness of nvim or even vs code
@@warpspeedscp I mean surely it's probably not that bad, but I just don't understand the workflow, because I'm constantly switching tabs, moving from file to file, greping left and right, It did actually bothered me a lot that the syntax highlighting wasn't instant despite running a very good computer, on top of that a very simple project in C (about 10k lines) took like about 10/20 second to fully load, this to me was insane, everything is instantaneous in the terminal, and with support for lsp, you basically have the same kind of functionalities that an IDE can provide without all the bloat. But in the end it probably is just personal taste
Ah, more programmer gate keeping. Having started on mainframes in college, the Emacs vs Vim wars were Emacs users flexing on how many features they had vs Vim users going on about the efficiency. This isn't a new discussion nor is it even interesting. It is depressing that we have so many "you aren't a real programmer if you don't do it my way" posts *still*, 40 years later. I would say "grow up", but realistically if 40 years don't get us there, it isn't going to happen.
Nothing do to with gatekeeping, they are just not very good tools that's it. They are just insanely slow, and no one can explain to me why CLion takes 3gig of Ram doing nothing, where 20y ago most of the features of CLion were Running on 2000's computer no problem. Yet today we need basically supercomputer to just draw font on a screen, that's shameful, it's not even capable of doing the most basic things it's supposed to do, despite running on a supercomputer. That's why people give their opinions about them to encourage people to strive for improvement, and using better tools make you better at your job that's easy to understand.
Can you do refactorings across all project files in vim? I use that feature maybe like 100 times each day in Rider. And since it understands exactly all the usages it'll rename things perfectly, including highlighting naming clashes, even making suggestions as to what else to rename to keep things consistent. I could never use anything that doesn't have that. It's also not just renames, but refactorings like moving classes to outer / inner scope, creating interfaces, etc. Autocomplete is like 5% of the solution for me.
Theoretically language server's should be able to provide this functionality, but I think currently the IntelliJ family of IDEs still has the leg up when it comes to refactorings. They have their own "language server" kind of implementation. But I think as language servers mature and gain functionality IntelliJ will lose this advantage more and more.
I was a RubyMine user and thought I needed this. Turns out that once I could no longer change a class name throughout a whole project on a whim, I actually thought about the class names I was using before settling on one. Now I don’t miss the project wide refactoring tools 🤷♂️ they’re definitely nice to have but also quite easy to live without
I like vim for C development or for writing BASH scripts on Linux, but for most of my work I use the IDEs for the environment. If I am writing PL/SQL for Oracle then I am using SqlDeveloper and SSMS for T-Sql for Sql Server, PyCharm for Python and VS or VSCode for C#.
6:46 Well, with the mouse I use I don't have that problem of overly long scrolling, as it's what I'd call "the perfect office computer mouse". Among other functions it has kinda "throw the wheel" functionality. Middle click is a seperate button and pressing on the scroll wheel toggles the ratchet. Also the wheel is quite heavy, so if you throw it it just keeps going for quite a while at break-neck speeds. Even with the ratchet enabled, throwing the wheel gets you quite far. And the mouse also has horizontal scrolling by pressing the wheel to the left/right and history navigation buttons (small buttons to the left of left click), making it the perfect mouse for me.
Oooooh! in VIM you can navigate to the beginning or end of a line?! Im sold. Oh, wait...what's this? A beginning and end line key on my keyboard? Shoot, i was almost sold.
@@gianlucaspitzer5165 If you think the bottleneck to your productivity is your pinky reaching past the enter key, you're either writing trivial shit, or you're living in a fantasy world. Nobody says "enter is too far", it's what, 2" past that? Maybe? Once you know where it is you can do it blind.
Hey, no mention of the "*" key! If you're on an identifier, press * and it'll search for the next occurrence of that identifier. Then just keep pressing "n" to go to the next one. You can also use # to do the search in the reverse order.
I like VSCode because it is the only software that allows me to have 100% custom vim motions the day i will be able to easily fully remap vim motions [ ALL OF IT ] then I will consider vim
@@pencilcheck I like vim motions, I don't like vim mapping of vim motions. I really tried hard searching for a way to fully map the keybindings from scratch, and the only answer that came up is that I need to modify the vim source code... I looked for plugins, none as well.
@@0oShwavyo0 Feels like I am getting banned from replying to your comment since I tried to send in the comment an imgur link of my keyboard keymap I want to use, but basically I want to map everything by myself from scratch because I want to have the keybindings for moving around, selecting and editing ther way I like them and feel intuitive. From my understanding you can't do that unless you modify the source code
vim can't detect key-up actions. If you hold shift, hold space, press P, and release space, that is interpreted the same as if you hold shift, press and release space, and press P.
I use IntelliJ and I actually use a ton of its features. I couldn't imagine doing all that shit in an editor. His criticism of IDEs is just weak. It's not bloat if you actually use it. Startup time is irrelevant because you only startup once a day if at all. And Jetbrains makes makes very high quality software. I very rarely encounter bugs.
To be honest at this point the word “bloated” in combination with persuasive writing is, for me at least, a keyword for completely ignoring what someone is trying to persuade me of. Like yes there are software projects that are bloated and specifically suffer from it. Windows might be an example of being bloated to the point of suffering under the weight of its own requirements. But almost all the time, it’s someone repeating a buzzword they read in a medium article to describe software they don’t like for other reasons. If people were clearer and more specific with their criticisms, like saying something is not very responsive, the design lacks coherence, it’s missing necessary features or sacrifices necessary features for unnecessary features, then I’d take them more seriously
"Bloat" is a stupid meme linux elitists use to cope with the fact that they have to wrangle with stuff other OSes/software do out of the box. (I know it because I was one of these people)
Key VIM was no mouse needed, your hand stay on one psychical location (including navigating files). IDE made developer don’t know what they just codes faster (faster bug introduction)
Fuzzy finding part is based, I have been using visual studio for c# lastly and yesterday came back to emacs, not only for the vim/emacs bindings but fuzzy project search is 100 times better than having to search in a project tree with small text (and a dozen UI icons on top). Also, Compiling with a command in bash is just perfect for compiling, running tests and moving files to a folder all after pressing 3 keys in less than a sec, It's just the perfect workflow.
I've been using Visual Studio for C++ for years and almost never used the solution explorer to find files (nor any UI icons on top). Ctrl + comma opens code/file search with fuzzy matching.
This seems to make writing/navigating code faster. But I'm already spending way more time reading code or thinking about problems than actually writing/navigating. So learning a complicated editor seems like trying to save on the wrong end. And oh my god I guess I would have to learn to use an english keyboard layout to make this work. The horror. I don't know. In my job I usually use whatever IDE my colleagues are using, because it makes it easier to communicate and teach to each other. I usually don't have strong feelings about the tools I'm using. I have like 2 functions I can't do without: auto formatting and being able to drag-and-drop text around. I like to use the mouse for things, especially scrolling. Maybe because I'm working with 3D modelling software a lot. And I have this problem where I tend to loose orientation when scrolling with the keyboard. So. Like. I guess people are individuals and tend to prefer different tools. or something like that.
I've tested a few languages. Zig, Go, JS, TS, Rust all great in vim! Java - IntelliJ is so superior I just use it with vim motions. C# is not something I've touched since I didnt know how to program at all, but I guess visual studio is better since its so much like java?
ngl even though I probably would will never take the time to learn vim or nvim, prime has convinced me to try learning vim motions and honestly its great, would definitely recommend
I've been using vim for 20 years. I just went through vimtutorial, and started using it. It's better to learn all the advanced things, but not required at all. From time to time, I learn something new, it's enough for me.
Vim cultists: You scroll with a mouse 😱 Yes and I use ctr + f to search as well as colorized brackets that get highlighted. It's much easier to set up than vim. It's like trying to convince us that we can't be productive without 2+ years of experience with and outdated code editor 🤣
As someone who writes bug-prone code, i find the debugging environment an IDE affords me is very helpful in debugging work. And I'm not talking about an ineptness at reading documentation or how the standard library works, but prototyping on the fly in a dynamic language
I like to use bufferline, a plugin to limit the number of open buffers and bind next/previous buffer to tab/shift+tab seems to be more optimal. The current set of files are visible and switching is a single key press. Downside is there is another plugin or config needed to be able to close tabs without losing the window configuration (it basically emulates how I would work in VSCode before)
Tabs in Vim are awesome. gt and gT cycle through tabs, or a number and gt (3gt) takes you to that tab. You can configure tabs to show the entire filename while truncating the path. And if you need to open a closed buffer, just ':tab sbuf filename' does the trick. ':tabe filename' opens an unopened file. Finally, instead of Ctrl-C to exit insert mode, I use Alt-[motion key]. So, Alt-l (lowercase L) exits insert mode and moves the cursor to the right one char, etc.
All of the things listed (except for startup time) are just editor things that many other editors (including vscode) can do as well, it's just shortcuts involving modifier keys instead of regular keypresses. The advantage of the other editors is that you're never accidentally entering control sequences into the text or trigger control sequences when you wanted to enter text (which happens to me all the time when I use vim).
Personally I usually stay with fairly lightweight editors, but for languages I don't frequent that have more details about how to run it, I use IDEs specific to those languages.
@@stefangarces499 On windows I use Sublime Text 3 as a text editor for things that are not in my project, but notepad++ is fine too. I use my ide when developing a project. For Linux ssh, I use nano if I have to edit some small details, but otherwise I use my windows setup and just git pull on the server
Vim, nvim and others are just tech masturbation. Writing code and navigating a file is the least of my problems. In VS you can actually drag a debugger to a certain point, write additional code, and test it on the fly. VScode has extensions for live scripting environments for many languages. It's 1000x more valuable than fast typing and editing.
Prime, I’ve never seen someone demo a good NVim/Vim project-wide search & replace comparable to VSCode but would love to see it. It’s the #1 reason I’m stuck in vim motion land. The context is a large refactor of a code base. How would you approach such a problem?
I program since about 15 years now, I use nvim, vs, vscode. Honestly, nowadays IDEs have shortcuts for everything mentioned in the vid and more, and if you are used to them you get 95% of everyday tasks easily and productivly done.
I'm a fully self taught python developer.and I can honestly say that the time I invested in learning vim was as valuable to my programming as the actual programming language.
Vim is like using an iPhone. Everyone who is saying that's not "so much" is people who haven't tried vim, they haven't done the effort or broken the barrier of learning the vim shortcuts efficiently, but they are comfortable using their editor/IDE's. In the other hand we have vim users who did the job of beating the learning curve process, people who don't mess about what other developers are using and people who knows that vim is actually better than others IDE's.
I love vim. But something I like about UI editors is renaming var names within a certain scope... without worrying about renaming the name var in the whole file. Also finding vars in the whole project sucks. Not sure if there is a solution in vim.
IDE actually contains many advanced technologies than regular text editors. These IDEs will truly parse the program text before starting to analyze the structure inside. Their "jump to definition" is generally a very precise jump, rather than guessing blindly like a text editor. This kind of operation targeting programming languages can greatly improve people's thinking efficiency. It frees the programmer's mind from trivial details, so they can focus more on the semantics and algorithms of the program itself, so they can write more beautiful and reliable programs.
All navigation/edit tricks are present in Jetbrains products, and most IDEs - I don't get the point. Plus you can add vim editing features in IDE, turning this whole argument nonsense.
@@XGD5layer Glad to see people who love to reinvent the wheel, always with the same arguments or excuses. I'm always laughing at people who say they can do anything with VIm but actually never do, with poor dev flows most of the time. But that's OK, fantasy is a strong driver for creativity.
For me it honestly depends on the language or the scale of the project. If I gotta do Java, NetBeans (because it'd what my uni uses lol) or IntelliJ Idea are the go-to, hands down. But for stuff like C, Go, Python (unless it's Jupyter-related) and Rust, Neovim is just more than perfect for me :)
PyCharm is the IntelliJ for Python. CLion is the IntelliJ for C/C++, Rust Rover is the IntelliJ for Rust. If you're all about IntelliJ for Java, take all of the reasons you are and imagine a world where you have same amazing experience and power with every language in the same hyper focused way.
I would love to see a vim user drag and drop a C# file from one folder to another and have the editor automatically rename the namespace for you the way rider does. That’s just one small quality of life feature - I could name dozens though.
My go to was Geany, when it came to Lua. Only until I wanted to do some C and all of a sudden signs kept pointing that my build commands wasn't correct. I was only using x11/xlib and other std headers and it kept coming out errors. Gave up after awhile and started using Vim and it became the best day of my life. It compiled with no mistake and I was so happy.
Exactly! I think that Vim is good with code analysis, but not exactly ideal for crafting your project codebase that requires dealing with filters or subdirectories. I'm talking about design, not configuration or cyber analysis
I started programming without any IDE on ZX Spectrum, then I had to use QuickBasic's "IDE" and then Turbo Vision C/C++... then RHIDE which was never near to experience of TV... then SciTE, then Sublime, then VSCode and to this days neovim... whatever whoever thinks about it, if somebody created IDE like TurboVision I'm totally in... if it's configurable with lua as nvim is and has windows like TV had I would't be able to resist... If I found way to force nvim behave like TV, I'm totally in... love your content btw. ;)
this is the exact same way i thought about it as well i had this thought because i was ignorant of what vim offers and just made my snap judgements based on little to no knowledge. after giving it a full ass effort for one month i realized how wrong i was (i used IdeaVim (intellij)). it was amazing and i have never gone back
IMO, it's about memorization, because after a week or two one gets used to motions, which paves the road for remembering shortcuts to do stuff and eventually becoming a lot faster without the mouse
I didn't know the benefits of vim, I use vim just to try to be difficult and show off
Haha I just leave vim as a desktop shortcut 😂 everyone goes fuuuuuq
I only use Vim to prove to myself I'm a real LinuxMR Chad hacker kid... then I just use micro when I'm being serious...
@@2BluntsLater 😅
@@Username-d2v6y “you a vim boy”
Yes I touch everything 😉
Including your mom
At least you're honest
All of his arguments boil down to "I was too lazy to learn shortcuts in the IDE, but i forced myself to learn the same shortcuts in VIM, therefore VIM is better"
Vim is language agnostic. Shortcuts in ides are very ide specific
@@insydian ignoring the fact that you can reassign the shortcut and they are usually managed with simple text files, and also ignoring that, at least in my experience, people usually aren’t switching rapidly from language to language in their daily workflow for the moment.
that argument doesn’t really apply to the two leading IDEs, IntelliJ and vscode
Pretty much sums it up,trying to be elitist at all costs
They are brainwashed elitists, most of these people are average programmers trying to flex with a text editor 😂.
Shortcuts are trash, modes are much better
Not dissing Vim, it seems powerful as fuck and most importantly light-weight, but in terms of navigation most modern IDEs can do what was shown in this video and people are just too lazy to actually set and/or learn the shortcuts. Same reason they dont start using Vim.
I use Webstorm daily for work, because we are TS-only:
Fuzzysearch files: double-shift
Go to last file selected: ctrl+tab --> hold tab and hit tab to go further back the files you last visited
Got to line: ctrl+l
Go to matching brace (in my case): ctrl+shift+m
While on a brace select its content: ctrl+(2*w)
Select word: ctrl+w
--> Hold ctrl and progressively select more elements connected to the word in syntactic priority by repeatedly pressing w
Select line: ctrl+c
Replace by regex: just like regular replace (ctrl+r) but activate regex once
Duplicate line/selected block: ctrl+d
Or delete with ctrl+shift+d
Find next instance of x: ctrl+f
Hit Enter to move forward, shift+enter to go back
Esc to stop search.
And manymanymany more, seriously the keymap is huuuge!
Oh and properly use home/end, pg-up/pg-down, and Esc, and set the shortcuts for entering the integrated terminal.
I'm sure all of this can be set in VSCode too.
The only thing Vim really does better in this regard is sticking to the homerow principle and that is honestly the only reason why I consider learning it. The speed of my IDE has never bothered me.
Yup, I use PHPStorm, and I have those, with some modifications. I also have many more set that I use religiously. I just noticed how much I rely on them when I was helping new colleagues that didn't have my key bindings - I kept hitting them and nothing happened or something else happened. It felt like a limb was missing, it felt so slow and powerless coding like that. In no particular order:
Ctrl+Shift+up/down to move the line(s) up and down a line (useful for switching order of lines).
Ctrl(+shift)+left/right/up/down/end/home go(+select to) next word/camel case boundary, line start/end
Ctrl+backspace/del - delete to next boundary left/right
Ctrl+shift+backspace/del - delete to next camel case boundary left/right
Ctrl+shift+f or r search/replace in all files
Ctrl + - and Ctrl + +, or the prev/next buttons on the mouse -> move caret in history back and forward, even across files
Ctrl+e toggle quotes/doublequotes
Ctrl+q toggle comment lines
Ctrl+click on something - goes to its definition
Ctrl + right click on something - goes to where it's used or if there's more than one place, then it goes to a list of places where it's used so I can pick one (up/down to move through list)
Ctrl+~/tilde - rename(+refactor) everywhere - renames variable/function/etc everywhere (can even rename in comments if wanted), also renames files/namespaces/use statements if it's a class, etc.
Some hotkey I forgot for Zen mode where it hides everything (like menus/sidebars/etc.) except the text. I think it's Ctrl+F5.
Ctrl+1 toggle show/hide file tree, Ctrl+2 toggle open/go to last terminal, Ctrl+3 toggle commit sidebar, Ctrl+4 toggle sidebar menus, Ctrl+5 toggle git log/branches/remotes tree
Ctrl+w close tab/window
Ctrl+shift+tab open last tab
And some more that I can't remember right now.
I also edited the interface of PHPStorm and removed more than half of the options in menus and right click context menus, so they're much shorter and cleaner now, and they contain only what I need. It's so much easier to use them like that now.
@@ivanjelenic5627haha, yeah, using someone elses IDE setup feels so strange!
I really have to look into modifying the interface, thanks for the tip!
most of those are defaults in jetbrains ides @@Rohinthas
yeah webstorm is great, as are pretty much all jet brains IDEs.
As a compromise, I highly recommend the vim plugin. Its really nice to be able to use the modal tricks you get with vim within a full ide env like intellij et al
The language specific IDEs from JB are basically IntelliJ Ultimate with a streamlined UI and plugins for that language (except CLion and Rider). I think there is also a difference between the debuggers between CLion, Rider and IntelliJ. Webstorm is included in most of them. Neovim is great and I loved it, but real talk the JB IDEs are *very fast * to work in with hotkeys and Ideavim.
CLion is my go-to, and I work primarily in C & C++. Despite some weaknesses, it's an indispensable tool for me. I can't imagine trying to configure vim to achieve similar capabilities... I don't have time for that.
JetBrains IDEs just rock, they have really improved them during the past 3 or 4 years or so.
I agree, I don't find that vim is particularly faster than PHPStorm + Ideavim. Also I find PHP LSPs kind of lackluster compared to PS's intents. I use Alt + Enter all the time to do things like invert and split if statements, search for the correct imports and updating deprecated constructs to the new implementation (an example is strpos() === false which can be changed to str_contains()).
I like and use vim a lot, but there are so many things I end up missing for PHP specifically.
Agreed, I use nvim for absolutely except php plugins/extensions, there the PHPStorm is godsent. The fact you can load classes from outside the plugin folder, and not even from a live install or docker instance is so convenient. You can make the hints also straddle a range of PHP versions, which is amazing when updating embedded code to be php 8.2 compatible without breaking 7.3.
JetBrains knows how to make an LSP and static analysis and Ideavim is pretty good too. If they ever made a sub just for their LSP's which I could pipe into vim, they have my money for life.
The big thing for me is all the refactoring and structural search and replace capabilities in JetBrains stuff. Being able to refactor 17 files with a new interface in Java, for example, is only a few keystrokes.
i have my vscode setup with:
- custom shortcuts to traverse files / code without mouse extremely fast, but the shortcuts are way more intuitive and contextual than vim's
- fuzzy finder for files
- minimal extensions
it's fast, responsive, and powerful AF with zero clutter, and I never touch the mouse.
people acting like you can't recreate most of this experience in vscode are no better than those that think VIM is only for showing off. both are great.
How do you do large scale refactorings like symbol name changes or abstractions? Do you just do them manually? Search+replace kinda works but you have to be super diligent since you have no help from VS code that they are actually the same symbol. Abstractions are also a chore to do, albeit something I do less often.
Personally I don't think the choice of editor matters, my limiting factor in productivity is not how many characters I have time to insert/edit, its more about motivation
I mean I suppose it's hard to refute that you're feeling unmotivated? Maybe you'd be more motivated if modifying code was less painful? I'd certainly say I got much better at programming after my attention got freed up from the problem of making changes to what the changes should be. And then I got worse at programming again when I started working somewhere the dev env is hyper borked 😅 Maybe you're onto something
Yeah man dont tie your personality into one IDE or editor or whatever that is a tool to help you create great software.
@@CaptainWumbopeople like this would legit spend two minutes "learning" an ancient tech and would immediately be unmotivated and neither learn that garbage, nor get any coding done. Congrats.
sometimes a fun editor to write in enhances motivation :)
@@tiberiui4027100% for me
Ctrl+p and ctrl+r are a standard in most editors/ide-s for years now. As well as many other shortcuts that do almost all that you two said. I get it why you two are so excited about vim, but a bit of balance should be.
Great point. Ctrl + p allows you to navigate to any file without using your mouse, and you can map tab focus to any key in the settings.
It's almost as if having a single button command interpreter in an editor is a brilliant idea to accumulate any and all functionality under ;)
@@Xe054 Ctrl + p is trash compares to the tons of fuzzy finding options in neo(vim) like Telescope fzf-vim fzf-lua leaderf and so on. It's like a bicycle vs a car
@heroe1486 congrats you saved 0.12 seconds. You've saved the entire project deadline with that speed efficiency.
@@heroe1486what are the options, what make them better?
For navigating old places I love and to jump to next/prev cursor position and gv gi to select/visual spans.
There are 2 things about PyCharm that I like:
1. Renaming modules: You can refactor the name of a module and it will automatically rename the folders, py files and imports
2. Requirements management: When you add have a library in the requirements.txt file that is not installed in the environment, it will detect it and give you the option to automatically install it by clicking a button
I do not know if those are possible with (n)vim, but they would be nice functionality to have there.
@@anon_y_mousse yeah, the question is just why would i hunt down vim packages (which are often broken, hard to install or unmaintained (or just require a degree in lua script development)) when i can just use pycharm which has all of this bundled in? i personally use pycharm with Vim mode for editing and it is a perfect combo.
I like the support for pytest and especially parameterized tests
Neovim's built in LSP can definitely do refactoring, I use it a bunch, and you can also set up code-actions and such pretty easily. As for requirements, I'm not sure this needs to be something that the text editor needs to do, you could probably just have a bash script that installs your requirements.
@@bernardcrnkovic3769 There are Neovim "IDEs" or distributions like LunarVim, AstroVim, LazyVim, and NvChad that bundle a bunch of plugins and set default configs for an out of the box experience. These are still just Neovim, so everything is still configurable and open source, and is generally good for beginners to just start using Neovim.
Vsc does it as well 4 you with python plugin
You got 20 digits and you are only using 10 of them to code? Get on my level and learn to use your feet.
Don't you mean 21?
Foot pedals? Found the emacs user.
@@FaZekiller-qe3ufthe 21th is actually only for men and I'm feminist so I don't use it
Frontal tail works at specific times only
@kahnfatman lust seeks rust
I mainly work with Java, and do some devops work too.
For the infra and config stuff, I'm totally sold for vim. But for Java there is really no fucking way that Nvim can be nearly as good as IntelliJ.
The amount of things you can do on IntelliJ is unmatched. The super intelligent auto complete, super easy refactoring and the best debugger of probably any language out there. There is really no way for nvim to win, no matter how much gigabytes of plugin you install on it.
I can get that nvim can be the best ide for any other language that is not Java or Kotlin. But for these two, you got take the L man, its a lost battle
same for Scala
Agreed, IntelliJ is awesome! Though I'd say this is mostly due to Java having such fat dev environment. It is indeed challenging to work with without a proper IDE
@@anon_y_mousse haha I wish it was possible to write perfect code the first time.
But I don't use debug only to fix bugs. I use it as a development tool too. I always run my code with a debug the first time to make sure it is doing what it should. Almost like a repl development that clojure devs use, but with a debugger, and even the evaluate code that intellij provides
Yeah when I was doing Java I simply couldn't use neovim. Especially since it was Java 8, and the neovim plugins for Java only work like above 14 or 17 something like that... plus yeah IntelliJ is a very good product. But the fact that you absolutely NEED it because otherwise you simply can't work with Java speaks enough about what a shitty language it is and why I never want to touch it again.
@@thiagomiranda3 I use tests for that :)
In vscode you can so "Ctrl + p", and type the name of the file in the current workspace that you want to open, then press Enter to open. You dont need to use the file tree or your mouse. 🤷♂️
Yeah i even went as far as to bind it to shift shift bc i find it even easier to use, as well as ctrl ctrl for opening command palette, which i far prefer over the approach the bloated IDE’s take with a billion buttons and menus. Also having the extension commands work through the command palette is also a major W. I also mapped alt alt to symbol search. Whats also cool with the drop down dialog is it is actually the same dialog for all 3 actions, just > prefix == command, # prefix == symbol, and no prefix is a file search. Super awesome, also love how vsc has ctrl f dialog per “tab” so you can do a plaintext search in the terminal and in your file, and ctrl shift f for entire project.
Much better user experience then the billion button and menu ides
VSCode is not an IDE, so I have no clue how it's related to the topic of the video. Visual Studio also has fuzzy code/file search using Ctrl + comma.
how do you map double ctrl to ketmaop in vscode@@wolfeygamedev1688
@@019bc3if not ide that what is it? It has debugger, linters, analyzers and millions of other tools.
Yeah I was a mostly competent vim user and recently switched to vs code and have been really happy
The various combinations of CTRL, SHIFT, HOME, END, PGUP, PGDN, DEL, BS, and the arrow keys work great for me.
Nah, instead of using the built-in keys on your keyboard, you should learn a bunch of random nonsensical commands to navigate your document.
@@UrzaRage778 Or, maybe if you don't have such keys on your keybaoard, it doesn't hurt to learn a few keybindings. Macbooks do not have the majority of keys, so its a must for me since I love my macbook to death for how much better of a development device it is compared to my windows laptop. Also, macros are powerful as fuck, and I don't know if those keys are qualified as macro movements. Even if they are, they are not home row keys, and require you to look down or maybe misclick. Vim was created for power users that wanted to never leave the keyboard for a mouse, and instead manage everything. And considering how much serverless tech we use today, or cloud linux machines, good luck navigating the terminal with vscode when ssh'ing in. Are you going to go ahead and install vs code on your remote machine just so you can edit a couple config files? More over switching and managing tabs for terminal commands and performing parallel operations that require the terminal. Not everyone is going to make a GUI for all your needs. I'm not saying you gotta switch, but you should be more comfortable to change, and considering your probably in the software industry, it's disappointing that you have such negativity towards such a powerful and useful tool. When i spin up VS code, i don't need all 100 of my extensions running in order to edit a file.
@@UrzaRage778no one is forcing you to do anything lmao, if you don’t like vim the just don’t use it
@@UrzaRage778learning those 'nonsensical' commands actually works because your keyboard wasnt created for programming. So any efficient keybind will seem 'nonsensical' to a normie.
@@askeladden450 is using HJKL for navigation in 2024 an example of something "designed for programming"? Seems more of an example of something nonsensical to me
Is a random mixture of lowercase and uppercase letters as well as crap like $ and ^ an example of efficient keybinds? What about the colon, is having to press Shift+; more efficient than just pressing ; or something else? Oh, that's right, there's a good reason for it: this beatiful system of keybinds is designed for some god forsaken terminals from 1970s, and we have to be compatible with those to be true programmers, apparently
Well, it's a shame you still need to learn the keyboard navigation with Home, End etc because vi keybinds don't work once you need to use a program that wasn't designed for keyboards from half a century ago lul
1. "IDEs are tied to that specific language." --> Yes, so? Use VSCode, which natively supports JS and TS, and install extensions to suit your workflow.
2. "IDEs are slow to boot up." --> What do you program on, a toaster? Plus, if you take the time to only enable extensions and tasks that are really necessary in your workflow, I don't think it takes that much time to load. And I use a 5+ year old laptop.
3. You took the time to learn Vim but not the time to appreciate shortcuts and GUI facilities made specifically to enhance your productivity from the get go?
I'm an embedded developer and I know Vim and have been using it for a long time, but I just think this guy is a show off. Plus, if you have to use extensions and tweak files to enhance vanilla Vim, why not use an IDE that officially supports and indeed encourages you to customise your experience?
Because IDEs are goddam slow. You can run Vim in a toaster like a breeze but VScode just crashes in decent PCs (i9/32g) with heavy projects
The hat ^ and dollar sign $ come from regex, meaning begin and end.
There are things I can't stand about IDEs now that I use vim. And there are things I can't stand about nvim because I'm too bad to figure it out (like getting a solid html lsp configured and working always).
So I get the best of both worlds: both have things I can't stand
probably the fairest take
I use nvim for rust basically, and its awesome. Used CLION for about 2 years, but the bloat was killing me. But for frontend stuff, VSCode is my go to.
Yep. I still have no idea how to configure .sass formatter in nvim. Not even prettier seems to support it.
_ as an operator is actually a whole line operator, so essentially doing dd or cc or yy is an alias for doing d_ y_ and c_, this is why in that example with ^ it didnt delete the line c:
I wrote a whole book in vim. The amount of decluttering and focus you get there with a couple of plugins is astounding.
Somewhere in another universe: "Why I can't stand VIM after using IDE's"
I have decided to search for this video
@@owensofcode Did you find it yet?
Used to use vim/NeoVim switched over to VSCode and have now been trying NeoVim and it's amazing just how good it is.
I remember how much of a pain it was trying to get autocomplete and LSPs up and running and how buggy it was, now it just works.
But still I feel VSCode is just so much easier to use, I can just use the same 10 actions for 99.99% of the things I do while in Vim I need to remember 100s of different actions/movements.
I don't have the braincells to spare to have 50% of them remembering 100s of vim movements.
Exactly. I think a lot of the vim and neovim talk is bragging or showing off
muscle memory you will build in time young padawan
An advantage of VSCode is that most of the features are accessible via the mouse, and most actions can be searched using CTRL+P.
Personally, I find this workflow slow for me because I am slow at using the mouse and I feel that the search lacks features.
An advantage of Neovim is that most of the features are accessible using only the keyboard, but with a possible disadvantage for some, which is there's a lot of possible key combinations to do stuff
Which 10 common actions do you use? Are you talking about vs code shortcuts? I use the emmet shortcuts built into vs code, but I often wonder if there's a better way to navigate inside my files. This video showed me a glimpse of what nvim can do that vs code can't. For example, can you jump inside a function's parameters or to an opening and closing tag easily? In my experience, you have to hit the arrow keys too many times to jump around the file the way you want.
@@Xe054use the mouse. There's nothing wrong with using the mouse. Heresy, I know...
Been using PyCharm Professional for years and I'm sure everything he highlighted in Vim can be done in Pycharm. I'm fullstack Django dev so write Python, JS, HTMX, HTML, etc and never had any issues writing in Pycharm. Can't recommend it enough for my use case.
Yes "you're sure", while even the most basic plugin wouldn't be available. Yes you can do things, just less efficiently, you could've have added css and SQL to the list that it wouldn't have changed much
back in the early 2000 I started using VIM because I was a gentoo and then arch tryhard, so it was part of the cult, then I started working and was basically programming php and C into the servers directly, vim was the only editor that had code highlighting built in. I still miss the simpler times when you could get away with just code highlighting, a tags file and grep/sed
The first of your videos that I've stumbled upon. Very cool stuff and it's great to see someone as passionate about efficient keystrokes as I am. It's like a drug : )
I'm already loving those vim jump shortcuts. Thanks a bunch.
Over last couple of months I have incorporated tabs (:vsplit and mostly just two) to my frontend vim workflow. It's really useful to make changes to HTML and CSS.
The trick here is I use to swich between the splits and trigger the actual :vsplit using ''.
I think I use tabs like you use Harpoon: I keep up to 4 tabs open for the files I'm working on, then "cmd/alt/ctrl" + "1-4" to switch to the one I want with a single keystroke.
Being able to see the tabs at all times helps me remember what I'm working on. (Though I want give Harpoon another try to see if I could get used to it)
At 11:37, part of the mind-blowing experience this kind of tips provide is that those motions were since the start of your Vim/Nvim journey, just around three keystrokes away from you.
Using IDE:
1. commands are grouped logically and you use the mouse and menu if you are just starting
2. Use the search command
3. when you see that you use the same command multiple times a hour, it is time to learn the keyboard shortcut for that command
So it's up to you if you want to use certain key shortcuts or not
Using VIM:
You have to use keyboard commands
Infinity scroll mouse wheels are incredible. They're on a super smooth ball bearing and they spend forever so you send it flying once in a direction it'll keep scrolling that way for quite some ways
It takes 1s to move your hand from keyboard to the mouse and 1s to move back. With 80WPM you could've typed 2.5 words in that time span.
@@ivanjermakovit takes you 2 seconds just to touch your mouse? Is it in another room?
@@georgehelyarlol
@@georgehelyarhe's gotta warm his arm up
Or just use "autoscrolling". Hold the middle mouse button and offset the cursor. Zoooooooom. Oh no wait you only get that on Firefox or Windows everywhere outside of almost all IDEs (or have to hand code it yourself for chromium if you want it in a non FF browser on Mac or Linux).
Good luck creating mobile application in text editor only. I do agree that vim is faster than writing same code in Android Studio for example (or Xcode) but those tools provide GUI for creating and debugging UI, handling localization, project configurations, certificates and much more than just writing code. You have so many things already created for you just click away, you can inspect database or preview assets or any kind right there without need for using other tools. Whole package preparing and publishing is done using wizard like solution where you just keep clicking and choosing your preferred options. It's just not the same. To me it's fine to compare Vim with VS Code or Notepad++ or Sublime, but you can't compare it with mentioned Xcode.
Freakin' thank you! I don't understand why this knowledge isn't ever discussed.
Im a flutter dev that uses neovim. I do all of this from vim and the cli. Most of what you think vscode is doing for you is actually being done by the lsp and project config folders interacting with the cli under the hood. Vim can replace vscode as the client to handle all of this.
For instance, flutter-tools.nvim handles all of flutters auto refactoring functionality in vim, the same way the flutter extension does in vscode. The flutter cli handles all of the same emulator running and hot reload functionality as vscode does.
Vscode is simply a client which has servers underhood that any other client can use, such as vim or emacs.
Theses nothing vscode has that is proprietary and not also used by the vim community.
@@hamm8934 The OP is talking about using Android Studio for Android development which has tools built-in and wonderfully integrated together in ways VSCode and NeoVim can't.
This. Xcode is dogshit and is painful to use, but it would still beat out nvim in a long run because of the things mentioned + it's completely impossible to dev for ios/android without ui debugging tools. Webdevs are lucky in this regard because they have this functionality built into the browser.
@@Fakheet youd be surprised. I have a colleague that does native ios work in neovim and debugs with dap and a simulator
Most modern IDEs can be used totally with keyboards. No one's forcing you to use a mouse. In fact, JerBrains / VSCode both have Vi modes.
Where IDEs shine is with deep integration with 3rd party services and SQL servers, AWS/Azure, even object storage services.
A lot of it can be mimicked with tmux, cli tools and vim but let's be honest, all that is cluncky and not as flawless.
These arguments always fail to convince me. IDEs have those things called "shortcuts" that let you quickly navigate your code. And guess what they're also customizable.
You can also press Home or End to get to the beginning or end of the line, do people not know this? You can combine that with shift to select as well. This works on every single text box that isn't a terminal on both Windows and Linux, not just IDEs. This video was acting like only vim has this functionality.
Yeah, sure, IDEs take a while to boot. How many times do people start their IDE in a single day? I just open it once and let it run, and don't even bother closing it most of the time as I go on to browse the internet.
Edit: Yeah I forgot to mention, I'm using JetBrains IDEs which are superior to any other IDEs in terms of built-in functionality and customization.
Press Home and End? Lol. You might as well use your mouse if you want to move your hand that much . The whole point of vim is HOME ROW. And you have 0 idea what shortcuts in vim can do if you are comparing them with ide shortcuts. Literally 0 idea.
Some keyboards don't have home/end buttons. And shortcuts in vim can execute arbitrary code, I'm not aware of any IDE which allows that
@XGD5layer you can still map the "home" and "end" key behaviours to other keystrokes, at least in JetBrains IDEs. Personally I mapped it to Caps Lock (CL + Left = Home, CL + Right = End, etc) because that's closer to Home and End, but I did that on the OS level not the IDE.
You can also enable Vim mode in most IDEs if you want more of that functionality, though I've never used that.
I mean the vim motions are pretty great in Jetbrains IDEs too.
If you use the mouse in Jetbrains IDEs thats a definite skill issue not a tool issue. They highly recommend keybinds, and also encourage not using tabs, to instead use the recent files feature.
There may be good reasons to use Vim over Jetbrains, but there was very little substance here I feel. The startup is indeed in comparison slow, but a multi million line project takes in the area of 10 seconds after its been indexed the first time. Its only realistically a gain if swapping project multiple times every hour. You can also hide almost all deep integration bloat if you want and just see the editor (esp with for example Zen-mode).
Startup time is also kind of a non-issue once you have a single instance running. I hop around between several projects many times in a day. I just launch the project with dmenu and it takes a couple of seconds at worst, which isn't enough for me to care. It'd be worse if it was my terminal which I spawn and close hundreds of times per day.
Vim key bindings in most IDEs are only good if you're a vim beginner, otherwise it's quickly limiting.
@ Still important when you want to do quick edits while retaining the power of a complete environment, in few seconds I've already opened a file by using zoxide fzf and nvim while the jetbrain IDE isn't even loaded and responsive, dmenu/rofi being blazingly fast won't help those IDEs opening faster
@@heroe1486 its only when opening a new project though. Swapping through files within a project is as fast as in Vim. Idk about you but Im not swapping projects often enough for those few seconds to matter.
@@heroe1486 i do agree about ”most” IDEs but not specifically the jetbrains IdeaVim plug. I’ve used nvim for personal projects for a long time, definitely not a brginner and I rarely find things missing, and the ones that have been are easilly configured through built-in features. In the other direction vim relatively often lacks things I use that Jetbrains offer in terms of editing. Refactoring (technically has it but doesnt work in large projects)/live templates/postfix/extracting methods to name a few.
Primes examples were kinda cool but the video was dumb
Text and code search are very standard features in IDEs and has hotkeys too
It's on him for not being able to press ctrl-f
Tbf ctrl+f is a much bigger bother than simply / or whatever you've keybound it to
@@XGD5layer not on all layouts its not, on my standard ass nordic layous cftrl f is much simpler than /, in fact i need two hands for /
aditionally prime uses custom mapping so thats not even a factor for him
@@LiveErrors true, I'm also on a nordic keyboard so I mapped it to , instead
I was always wonder how VIM could be compared to IDEs. For me when you speak about VIM and navigation it could be solved in my case with Resharper with all refactoring and search functionality in it. But what I like most is NCrunch functionality of live testing with lines highlights. So I change a line of code and within 1-2 minutes see failed tests and in the code, then I can see red highlights and from here to get to failed tests. As for code organization - trying to avoid huge functions and had no need to scroll function code. As for huge classes - search for functions by function name is good enough for navigation (all IDEs allows it - search by variable, function, class). So what is reason to configure VIM from scratch to support all this functions and hope that it will work from first attempt. I agree with Thiago - VIM fine for small files edit configs and etc especially on remote server. But huge app with a lot of refactoring e.g. move file/class and change it namespace and correct all code where it was mentioned e.g. import required libs and namespaces/packages. After all IMHO IDE is the way to go on huge project. VIM more likely more efficient in editing. Could please someone explain to me is it worse to configure VIM as IDEs or just bare minimum and use it for editing? Will be there boost (in future after 1-2 years) if I will try to replace IDE with VIM?
I enabled vim-mode in Rider and I find it as a the best solution from both worlds. InteliJ is more than fast enough to keep up with my typing (I even work through RDP from my laptop into work workstation in the office). You keep all the IDE goodies (like proper search in the whole codebase, auto-eclude of node_modules etc), while you get the power of VIM-like editing of the actual texts.
It felt a bit weird in the begining, but now it feels wrong when I disable vim-mode. Also, vim-mode has plugins! So you can get almost all of the most important ones - that includes Harpoon.
As long as your IDE of choice has a good vim-mode, just enable it and stick to the IDE. I found Neovim lacking - for example using the fuzzy file-search would also search node_modules. It would also not pre-index the files (bercause fast startup!!!!!), so it was way slower than Rider in that regard. in Neovim LSP for Vue.js would not work with in-line JS for some reason, and the code block had no syntax highlight.
agree on the java front - every so often i try to make myself a workable neovim setup for java with jdtls, and every time i get just a little bit closer before going straight back to intellij with ideavim.
man, is it really good? tried neovim for like an hour and hate it so much. I'm also a Java dev and intellij has been my daily driver for years now and there are so many tools integrated with intellij (sonar, docker, the whole spring boot config, tests config, gitlab config) that took quite a long time to get right. Going trough all of that again on top of neovim seems like a huge amount of work for something I don't see that will return that much value. But hey just my opinion, I'm really willing to hear people from a java dev perspective on this subject
@@LuisM_Santana it's really not, hence why i keep going back to intellij :)
I used vim for over 10 years (intermediate skill level). Ever since I used VsCode, I never looked back. The cold hard truth is that all these minutiae vim tricks don’t actually improve productivity in a substantial way. Vim keybindings are all you need. Sorry not sorry.
L
I started on vscode and moved over to Neovim. I have no idea how anyone prefers it. A its significantly slower everything has noticeable delay, B it everything works worse and C it didnt teach me about my tools. The first two, might just be my computer or is just personal preference but the last one you cannot deny. I learnt so much about my tools from Neovim. I could never go back to Vscode its terrible
If VsCode’s vim emulator wasnt so dang slow and had better jumplist and mark emulation, i would agree. But until it does these things, i just cant leave vim. Ive tried.
you don't even need vim keybindings to do all the things demonstrated in the video. vscode has all of that built-in.
So, VScode is good when you make it reproduce vim's behavior?
Have been using Vim + i3 for the last 5 years.
Rarely any need to take your hands of the keyboard, no need to have different navigation commands in your os and editor, consistent interfaces and pretty much as minimal amount of clutter as possible.
Hey Prime just wanted to say you're saving my life with your DSA course on Frontend Masters. I'm interviewing with a fairly large company next next week and they said I'd be doing DSA for one portion. I'm self taught so I was slightly concerned ngl but it's super fun so far! Besides interviewing, I'm really excited to make my code more efficient. I feel like things are really coming together now, so *thank you* :)
How did the course go? I have recently passed my DSA course but I still think that I need a good course to fully grasp it tbh
Anything you found missing in the course that you needed extra resources for?
the one thing i will say about mouse scrolling or even using mouse to select something into visual mode is that when I'm sharing my screen with coworkers it helps them not get immediately lost in the code, otherwise i never really use it
Good point. The mouse cursor was original called a "pointer", and that's still a valid use for it.
Been using and IDE from 1991. It was turbo pascal, then turbo C++, then Borland C/C++ then Borland C++ Builder and now Embarcadero C++ Builder.
I’m going to say something crazy but don’t you think that your harpoon is a try to replace missed tabs in vim?
Like I mean, tabs are just opened files in a current moment of the time which is definitely the same what the harpoon does
P.S. I use the harpoon by the way 😂
Thanks for covering my video Prime :)
I am using PyCharm as the main tool, and refactoring, debugging, and general code is just in place.
Also it has a good simple support for other languages out of the box.
So I see no reason for my switch to any other tool.
None of arguments in the video is my argument for it =)
You should to like a VIM commercial video showing off specific use cases where you find it more practical, pragmatic or better in any way than VSCode. I tried VIM for a few years trying to get deep into customizations, but in the end I decided to leave it for SSH-emergency editing because as main editor I simply didn't find a workflow that actually allowed me to be more efficient than with VSCode....
Most of the features here could be used in IDE's if you are persistent enough to learn the "bloat" and how to be efficient with it.
yes, you can get an ide to the point where you do everything with shortcuts (but with a vim plugin) but why not just use vim at that point?
Or you can use the vim bindings. If you are used to vim.
The biggest problem here, is that every optimization you learn and setup you do in an IDE is locked into that IDE. If you want to change IDE, you need to learn and setup once again. With vim, you can iterate your setup as you learn.
I am sorry man, but if you ask this question it means you really never used a good IDE, and especially a debugger. I feel the vibe of a JavaScript developer.@@adam29334
@@adam29334because coding is more than using shorcuts
I appreciate Prime dropping this after November has ended
every single one of your videos contribute to my impostor syndrome
I grapple with this. I bounce between nvim and jetbrains. nvim is incredible and paired with tmux or zellij you can get some speedy workflow and jump between different projects in different language instantaneously. That's awesome. BUT, I don't like editing code all day in the terminal. After a while it just annoys me. On the other hand. Jetbrains is beautiful with the minimal gui. Nice text rendering and scrolling and great search features, vim emulation is really nice too. BUT try having multiple projects open at the same time and in different languages? Brutal.
I keep wanting to use the vim integration in jetbrains, but for some reason the delay doing anything (even just opening the recent files popup) makes it so uncomfortable for me that I end up using the mouse instead
@@hrmny_really, I've never had that problem. If I did that would be unusable for sure
@@hrmny_ Jetbrains IDE are insanely slow, compared to vim/nvim/helix or even VScode which tells a lot, and apart from the debugger I really don't understand what's good with them.
@@pierreollivier1if you were to forget for a second that the intellij platform is slow as frozen molasses, it's a pretty decent experience actually. Of course, it can be pretty damn difficult after you experience the snappiness of nvim or even vs code
@@warpspeedscp I mean surely it's probably not that bad, but I just don't understand the workflow, because I'm constantly switching tabs, moving from file to file, greping left and right, It did actually bothered me a lot that the syntax highlighting wasn't instant despite running a very good computer, on top of that a very simple project in C (about 10k lines) took like about 10/20 second to fully load, this to me was insane, everything is instantaneous in the terminal, and with support for lsp, you basically have the same kind of functionalities that an IDE can provide without all the bloat. But in the end it probably is just personal taste
Ah, more programmer gate keeping.
Having started on mainframes in college, the Emacs vs Vim wars were Emacs users flexing on how many features they had vs Vim users going on about the efficiency. This isn't a new discussion nor is it even interesting. It is depressing that we have so many "you aren't a real programmer if you don't do it my way" posts *still*, 40 years later.
I would say "grow up", but realistically if 40 years don't get us there, it isn't going to happen.
Nothing do to with gatekeeping, they are just not very good tools that's it. They are just insanely slow, and no one can explain to me why CLion takes 3gig of Ram doing nothing, where 20y ago most of the features of CLion were Running on 2000's computer no problem. Yet today we need basically supercomputer to just draw font on a screen, that's shameful, it's not even capable of doing the most basic things it's supposed to do, despite running on a supercomputer. That's why people give their opinions about them to encourage people to strive for improvement, and using better tools make you better at your job that's easy to understand.
Can you do refactorings across all project files in vim? I use that feature maybe like 100 times each day in Rider. And since it understands exactly all the usages it'll rename things perfectly, including highlighting naming clashes, even making suggestions as to what else to rename to keep things consistent. I could never use anything that doesn't have that. It's also not just renames, but refactorings like moving classes to outer / inner scope, creating interfaces, etc. Autocomplete is like 5% of the solution for me.
Theoretically language server's should be able to provide this functionality, but I think currently the IntelliJ family of IDEs still has the leg up when it comes to refactorings. They have their own "language server" kind of implementation. But I think as language servers mature and gain functionality IntelliJ will lose this advantage more and more.
I'm with you here
refactoring with jetbrains ide are top notch, I use ideavim with jetbrains and it's the best quality/cost setup
I was a RubyMine user and thought I needed this. Turns out that once I could no longer change a class name throughout a whole project on a whim, I actually thought about the class names I was using before settling on one. Now I don’t miss the project wide refactoring tools 🤷♂️ they’re definitely nice to have but also quite easy to live without
Sounds like a language or design problem
I like vim for C development or for writing BASH scripts on Linux, but for most of my work I use the IDEs for the environment. If I am writing PL/SQL for Oracle then I am using SqlDeveloper and SSMS for T-Sql for Sql Server, PyCharm for Python and VS or VSCode for C#.
absolutely, using the best tool for the job is the way to go.
6:46 Well, with the mouse I use I don't have that problem of overly long scrolling, as it's what I'd call "the perfect office computer mouse". Among other functions it has kinda "throw the wheel" functionality. Middle click is a seperate button and pressing on the scroll wheel toggles the ratchet. Also the wheel is quite heavy, so if you throw it it just keeps going for quite a while at break-neck speeds. Even with the ratchet enabled, throwing the wheel gets you quite far.
And the mouse also has horizontal scrolling by pressing the wheel to the left/right and history navigation buttons (small buttons to the left of left click), making it the perfect mouse for me.
Oooooh! in VIM you can navigate to the beginning or end of a line?!
Im sold.
Oh, wait...what's this? A beginning and end line key on my keyboard?
Shoot, i was almost sold.
But how far do you have to move your hand to actually use those? On vim it's "I" and "A".
@@gianlucaspitzer5165 not far enough to make a difference.
@@gianlucaspitzer5165 takes the same amount of time to quickly move the hand as it does to raise a finger
@@gianlucaspitzer5165 not far enough to matter
@@gianlucaspitzer5165 If you think the bottleneck to your productivity is your pinky reaching past the enter key, you're either writing trivial shit, or you're living in a fantasy world. Nobody says "enter is too far", it's what, 2" past that? Maybe? Once you know where it is you can do it blind.
Hey, no mention of the "*" key! If you're on an identifier, press * and it'll search for the next occurrence of that identifier. Then just keep pressing "n" to go to the next one.
You can also use # to do the search in the reverse order.
That's why VSCode is the best, because you don't have the bloat and you tailor it to your specific needs
huh?
I like VSCode because it is the only software that allows me to have 100% custom vim motions
the day i will be able to easily fully remap vim motions [ ALL OF IT ] then I will consider vim
excuses, just start using vim and then you will never look back (jk, you do you, not everyone is suited for vim)
Just curious, what do you want to customize that you can’t customize in vim?
@@pencilcheck I like vim motions, I don't like vim mapping of vim motions.
I really tried hard searching for a way to fully map the keybindings from scratch, and the only answer that came up is that I need to modify the vim source code... I looked for plugins, none as well.
@@0oShwavyo0 Feels like I am getting banned from replying to your comment since I tried to send in the comment an imgur link of my keyboard keymap I want to use, but basically I want to map everything by myself from scratch because I want to have the keybindings for moving around, selecting and editing ther way I like them and feel intuitive. From my understanding you can't do that unless you modify the source code
vim can't detect key-up actions. If you hold shift, hold space, press P, and release space, that is interpreted the same as if you hold shift, press and release space, and press P.
I use IntelliJ and I actually use a ton of its features. I couldn't imagine doing all that shit in an editor.
His criticism of IDEs is just weak. It's not bloat if you actually use it. Startup time is irrelevant because you only startup once a day if at all.
And Jetbrains makes makes very high quality software. I very rarely encounter bugs.
I don't scroll and think I should continue. I always feel my finger hurt, both middle and ring, then I do Ctrl+F or / depending where I am.
To be honest at this point the word “bloated” in combination with persuasive writing is, for me at least, a keyword for completely ignoring what someone is trying to persuade me of.
Like yes there are software projects that are bloated and specifically suffer from it. Windows might be an example of being bloated to the point of suffering under the weight of its own requirements. But almost all the time, it’s someone repeating a buzzword they read in a medium article to describe software they don’t like for other reasons. If people were clearer and more specific with their criticisms, like saying something is not very responsive, the design lacks coherence, it’s missing necessary features or sacrifices necessary features for unnecessary features, then I’d take them more seriously
Funny thing is, he then proceeds to install hundreds of plugins, bloating his vim as well. Makes no sense.
"Bloat" is a stupid meme linux elitists use to cope with the fact that they have to wrangle with stuff other OSes/software do out of the box.
(I know it because I was one of these people)
Key VIM was no mouse needed, your hand stay on one psychical location (including navigating files). IDE made developer don’t know what they just codes faster (faster bug introduction)
Fuzzy finding part is based, I have been using visual studio for c# lastly and yesterday came back to emacs, not only for the vim/emacs bindings but fuzzy project search is 100 times better than having to search in a project tree with small text (and a dozen UI icons on top). Also, Compiling with a command in bash is just perfect for compiling, running tests and moving files to a folder all after pressing 3 keys in less than a sec, It's just the perfect workflow.
Intellij hs a very similar way of showing project wide results!
visual studio for C# ? Hahaah, look at him
I've been using Visual Studio for C++ for years and almost never used the solution explorer to find files (nor any UI icons on top). Ctrl + comma opens code/file search with fuzzy matching.
You can literally do everything you do in VIM, in CS & VS Code. Stop pretending like you can't 😂
I really enjoy using vim the past few weeks and dont see a reason not to use it yet
This seems to make writing/navigating code faster. But I'm already spending way more time reading code or thinking about problems than actually writing/navigating. So learning a complicated editor seems like trying to save on the wrong end. And oh my god I guess I would have to learn to use an english keyboard layout to make this work. The horror.
I don't know. In my job I usually use whatever IDE my colleagues are using, because it makes it easier to communicate and teach to each other. I usually don't have strong feelings about the tools I'm using. I have like 2 functions I can't do without: auto formatting and being able to drag-and-drop text around.
I like to use the mouse for things, especially scrolling. Maybe because I'm working with 3D modelling software a lot. And I have this problem where I tend to loose orientation when scrolling with the keyboard.
So. Like. I guess people are individuals and tend to prefer different tools.
or something like that.
The guy:
"IDE's are bloated. "
The same guy:
"Let me install 79 plugins to make vim look and work like an IDE"
I've tested a few languages. Zig, Go, JS, TS, Rust all great in vim!
Java - IntelliJ is so superior I just use it with vim motions.
C# is not something I've touched since I didnt know how to program at all, but I guess visual studio is better since its so much like java?
ngl even though I probably would will never take the time to learn vim or nvim, prime has convinced me to try learning vim motions and honestly its great, would definitely recommend
I've been using vim for 20 years. I just went through vimtutorial, and started using it. It's better to learn all the advanced things, but not required at all. From time to time, I learn something new, it's enough for me.
Vim cultists: You scroll with a mouse 😱
Yes and I use ctr + f to search as well as colorized brackets that get highlighted. It's much easier to set up than vim.
It's like trying to convince us that we can't be productive without 2+ years of experience with and outdated code editor 🤣
As someone who writes bug-prone code, i find the debugging environment an IDE affords me is very helpful in debugging work. And I'm not talking about an ineptness at reading documentation or how the standard library works, but prototyping on the fly in a dynamic language
I like to use bufferline, a plugin to limit the number of open buffers and bind next/previous buffer to tab/shift+tab seems to be more optimal. The current set of files are visible and switching is a single key press. Downside is there is another plugin or config needed to be able to close tabs without losing the window configuration (it basically emulates how I would work in VSCode before)
Tabs in Vim are awesome. gt and gT cycle through tabs, or a number and gt (3gt) takes you to that tab. You can configure tabs to show the entire filename while truncating the path. And if you need to open a closed buffer, just ':tab sbuf filename' does the trick. ':tabe filename' opens an unopened file. Finally, instead of Ctrl-C to exit insert mode, I use Alt-[motion key]. So, Alt-l (lowercase L) exits insert mode and moves the cursor to the right one char, etc.
All of the things listed (except for startup time) are just editor things that many other editors (including vscode) can do as well, it's just shortcuts involving modifier keys instead of regular keypresses. The advantage of the other editors is that you're never accidentally entering control sequences into the text or trigger control sequences when you wanted to enter text (which happens to me all the time when I use vim).
There are pros and cons to Vim but to me, this is not one of them.
I hate vim. Started to use vi when I was 16. 40 years later I still hate it. The insert mode is rubbish. I feel you.
@@biomorphic rubbish how?
The sunk cost for C-d is also real for me in large files. I know I could just search the thing but I've hit C-d 8 times and I'm not stopping now!
Personally I usually stay with fairly lightweight editors, but for languages I don't frequent that have more details about how to run it, I use IDEs specific to those languages.
Name one lightweight editor
VScode @@stefangarces499
Kakoune @@stefangarces499
@@stefangarces499 On windows I use Sublime Text 3 as a text editor for things that are not in my project, but notepad++ is fine too. I use my ide when developing a project.
For Linux ssh, I use nano if I have to edit some small details, but otherwise I use my windows setup and just git pull on the server
Vim, nvim and others are just tech masturbation. Writing code and navigating a file is the least of my problems. In VS you can actually drag a debugger to a certain point, write additional code, and test it on the fly. VScode has extensions for live scripting environments for many languages. It's 1000x more valuable than fast typing and editing.
Prime, I’ve never seen someone demo a good NVim/Vim project-wide search & replace comparable to VSCode but would love to see it. It’s the #1 reason I’m stuck in vim motion land. The context is a large refactor of a code base. How would you approach such a problem?
I use spectre plugin in nvim or just a plain telescope search, send to qflist and apply a macro to replace
Grep then cfdo on the resulting quickfix list
I program since about 15 years now, I use nvim, vs, vscode.
Honestly, nowadays IDEs have shortcuts for everything mentioned in the vid and more, and if you are used to them you get 95% of everyday tasks easily and productivly done.
I'm a fully self taught python developer.and I can honestly say that the time I invested in learning vim was as valuable to my programming as the actual programming language.
that's sad. sorry you lost all that time to a nerd snipe
Vim is like using an iPhone. Everyone who is saying that's not "so much" is people who haven't tried vim, they haven't done the effort or broken the barrier of learning the vim shortcuts efficiently, but they are comfortable using their editor/IDE's. In the other hand we have vim users who did the job of beating the learning curve process, people who don't mess about what other developers are using and people who knows that vim is actually better than others IDE's.
I love vim. But something I like about UI editors is renaming var names within a certain scope... without worrying about renaming the name var in the whole file. Also finding vars in the whole project sucks. Not sure if there is a solution in vim.
You need to learn ed... (Unix line editor, precursor to vi).😊
There is - language servers, on my setup in the video I use only two plugins, both are related to language servers :)
IDE actually contains many advanced technologies than regular text editors. These IDEs will truly parse the program text before starting to analyze the structure inside. Their "jump to definition" is generally a very precise jump, rather than guessing blindly like a text editor.
This kind of operation targeting programming languages can greatly improve people's thinking efficiency. It frees the programmer's mind from trivial details, so they can focus more on the semantics and algorithms of the program itself, so they can write more beautiful and reliable programs.
In eclipse if you double click the curly braces it will bring you to the matching pair.
do vim users really think a mouse can't be efficient?
It **is** just a flex, even if the video says its not.
The vim philosophy is that swapping away from the writing position is inefficient
The first 3 seconds I didn't realize Rick Sanchez couldn't stand IDE's after using VIM
HELIX the superior Vim !!!
change my mind!
Helix is the best text editor ever made.
thanks guy who made a harpoon package for emacs
All navigation/edit tricks are present in Jetbrains products, and most IDEs - I don't get the point.
Plus you can add vim editing features in IDE, turning this whole argument nonsense.
You can't add vim scripts or plugins to IDEs
@@XGD5layer cause they are already installed, that's the point.
Setup getting into your dev flow is just white noise.
@@RuiLopesFR "they" don't always exist before you think of them. Sometimes all that's needed is a simple few lines
@@XGD5layer Glad to see people who love to reinvent the wheel, always with the same arguments or excuses.
I'm always laughing at people who say they can do anything with VIm but actually never do, with poor dev flows most of the time.
But that's OK, fantasy is a strong driver for creativity.
@@RuiLopesFR agree that it's stupid not to use capabilities to their full extent
Literally all my IDEs to date in the thumbnail 🤣 I feel personally attacked.
For me it honestly depends on the language or the scale of the project. If I gotta do Java, NetBeans (because it'd what my uni uses lol) or IntelliJ Idea are the go-to, hands down. But for stuff like C, Go, Python (unless it's Jupyter-related) and Rust, Neovim is just more than perfect for me :)
PyCharm is the IntelliJ for Python. CLion is the IntelliJ for C/C++, Rust Rover is the IntelliJ for Rust. If you're all about IntelliJ for Java, take all of the reasons you are and imagine a world where you have same amazing experience and power with every language in the same hyper focused way.
I mean.. every feature he mentioned is available in modern IDEs lol
Anybody who think JetBrains IDEs are useless is not worth listening to
I would love to see a vim user drag and drop a C# file from one folder to another and have the editor automatically rename the namespace for you the way rider does. That’s just one small quality of life feature - I could name dozens though.
Imagine spending hours of your time configuring your editor only for it to be inferior to all the off the shelf ones out there.
My go to was Geany, when it came to Lua. Only until I wanted to do some C and all of a sudden signs kept pointing that my build commands wasn't correct. I was only using x11/xlib and other std headers and it kept coming out errors. Gave up after awhile and started using Vim and it became the best day of my life. It compiled with no mistake and I was so happy.
Using Vim for everything is like learning to be extremely good at coding with only one arm, and suggesting the other one was just bloat.
It’s the opposite really. It’s IDEots using only arm because the other one’s busy clicking buttons & moving the cursor with the mouse
Your second arm is one your mouse or maybe somewhere else while you're waiting for your bloatware to become responsive
Exactly! I think that Vim is good with code analysis, but not exactly ideal for crafting your project codebase that requires dealing with filters or subdirectories. I'm talking about design, not configuration or cyber analysis
i use the second arm to constantly cuddle my balls
What? That’s literally the OPPOSITE of what Vim is. Have you never heard of CCM?
I just love this guy. Came to know wtf is Vim, stayed for the laughs.
So he criticized other IDE bloat and went ahead to glorify VIM bloat.
My preferred IDE has equivalent to every single thing shown here. Granted, vim is a beast. It takes quite a lot of time to tame the beast, though.
helix better
Helix is the best text editor ever made
I started programming without any IDE on ZX Spectrum, then I had to use QuickBasic's "IDE" and then Turbo Vision C/C++... then RHIDE which was never near to experience of TV... then SciTE, then Sublime, then VSCode and to this days neovim... whatever whoever thinks about it, if somebody created IDE like TurboVision I'm totally in... if it's configurable with lua as nvim is and has windows like TV had I would't be able to resist... If I found way to force nvim behave like TV, I'm totally in...
love your content btw. ;)
Are you kidding me? Having to type a zillion different chars to do stuff in an editor is ridiculous. Vi was a disaster. Vim is how much better?
this is the exact same way i thought about it as well
i had this thought because i was ignorant of what vim offers and just made my snap judgements based on little to no knowledge.
after giving it a full ass effort for one month i realized how wrong i was (i used IdeaVim (intellij)). it was amazing and i have never gone back
IMO, it's about memorization, because after a week or two one gets used to motions, which paves the road for remembering shortcuts to do stuff and eventually becoming a lot faster without the mouse
May I introduce the concept of the scroll bar 🤣