R.I.P. Bram Moolenaar, creator and "benevolent dictator for life" of Vim. I didn't know he had retired from his day job in Switzerland and moved to a town near me, until I heard he had died of some nasty illness.
for me, using an ide with a vim motions extension is the best balance. vim motions are essential and speed me up significantly. ive given vim/neovim a fair shot since i used them for a 30 day block (and yes, i used extensions, since just using the built-in features isn't much), but i prefer the feel of a standard ide. i use keyboard shortcuts for most things, but i really don't care about keyboard-only elitism. im not intering in spending a lot of time configuring vim/neovim to be perfect since i wouldnt be more productive than in an ide. but if you like vim, go for it
Legit, I used to use IDEs with Vim Extensions before moving to Vim. About the plugins, I don't need more than 2 plugins (for the language server) to be productive since Vim actually has plenty of very powerful built-in features that I constantly use (examples are in my channel playlist "Vim Tips") and some of them are not emulated well on the various Vim extensions (for example window management), and that is one of the main reasons I moved to vanilla Vim.
@@nirlichtman Hi, I found your video interesting, thanks. What extension do you use to develop in C? You mentioned using two specific LSPs, so that would be it?
@guvox1367 thanks! i used to use vim-lsp and vim lsp settings, but this is an older video, so since I have moved to using 0 plugins, there is setup info in my welcome page, I have a playlist called Vim Tips where I talk about my workflow.
My main point in this video is about the fact that Vim is keyboard oriented as compared to most other editors which put the main focus on the mouse (and for the keyboard they expose the functionality mostly through awkward chords). Vim also contains many additional useful and advanced features which I doubt would be found in other editors/IDEs which I talk about on my playlist "Vim Tips". Check out my updated video about this subject for more information and a clearer explanation (link in the pinned comment).
Everything you have shown can be done in Vcode, and the excuse that I have noticed the most is that you do not use the mouse, I suppose it is a skill issue problem when using the mouse
Don't forget 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. I find this tremendously useful. You can also use # to do the search in the reverse order.
Yah I also used various Vim emulator extensions for a certain period of time before moving to Vim, they still lack many handy and powerful Vanilla Vim features which was one of the reasons I decided to move to Vanilla, for more info, I have a video about that.
I've only used Visual Studio and, to me, this video is "I like to use Vim because it has all these awesome features (proceeds to list features that exist in Visual Studio, only more accessible and more useful) and you can just (proceeds to do something much slower and clunkier than in VS) and I don't like (features that speed up your workload by 10 to 100 times). You do you man, but I don't expect people to take me seriously if I say I've used cars for many years and find horses to be much better.
I'm curious about Vim's capabilities and its plugins regarding code refactoring within large codebases. Specifically, how effectively can Vim handle tasks such as moving symbols to their own files, updating imports/usings across all files after file movements, transitioning files into different namespaces with corresponding updates to usages, and swapping out implementations for interfaces with widespread updates to dependencies? The true value of a robust IDE, in my view, extends beyond mere auto-completion or syntax highlighting; it includes deep context awareness that simplifies these complex refactoring tasks. While I acknowledge the points made about avoiding feature bloat and the efficiency gains in typing and code navigation, I find these advantages somewhat overshadowed in large-scale projects. Here, the limitations of basic text operations, including search and replace, become apparent, potentially leading to hours of manual corrections. How does Vim, supplemented by its ecosystem, address these more advanced refactoring needs?
I use a language server plugin (I use vim-lsp but there are more) which enables Vim to connect to language servers which provide smart capabilities which are specific to a given programming language. I also heard that the popular Vim fork called NeoVim has lsp client capabilities built in without requiring any additional plugin, but I haven't tried that yet. Language servers are popular since that protocol is used by Visual Studio Code so you can find them for many programming languages.
can you please share how you have integrated autocomplete and language specific errors into vim? i can't seem to find minimalistic way of achieving this. Good video btw👍
Thanks! I use a plugin called vim-lsp which enables Vim to integrate with Language Servers, I use another plugin to easily install Language Servers directly from Vim for languages I need. I added to my channel description a link to my vimrc, you can check it out and you will see the plugins and configuration over there as well. I plan on making more videos soon about Language Servers and configuring Vim to work with them, so stay tuned :)
So to my understanding many of these features would be available on an IDE either out of the box or through the use of plugins. I don’t know about jumping around text, but visual studio has text searching right out of the box. File management you could argue to be a personal preference though. I don’t fully agree with your evaluation but interesting to see someone’s thoughts on this
I agree on the keyboard shortcuts, but I want a dropdown list of options for auto complete when Im typing something, and I want that auto complete functionality to execute when I press "tab". Until vim doesn't have this features I'm not using it
You can pick up plugins, or program it yourself with Lua. Plus certain functions do use tab to complete, but it doesn't know what words you need in the normal document unless you give it an extension.
I use Codeblocks with plenty of key shortcuts. Vim didn't caught much my attention, except only by its vertical moves, which I admit it has a small advantage. Anyway, I don't feel like being slow, nor in need for another code editor.
The cool thing about the Vim way of commands instead of keyboard shortcut chords in IDEs is that they work very nicely and logically together, kind of like talking english with the editor - for example delete 2 words is d2w, for more information check out my playlist "Vim Tips"
I used codeblocks for the longest time, and although it is serviceable, there are a few issues with the way it handles projects that make it terrible for scaling beyond something small. Maybe sooner or later, something will annoy you enough that you'll have to move on to something easier; some sell their souls and go to visual studio. Others go to vim/etc I still use GCC though even as a windows user, since I feel like the compiler will always be better than MSVC,
I use nerd tree in neovim because it is still the best way to get a feel of how a project is structured. And it's also useful when I forget both where I placed something and what I named it. Even more so when I didn't write the code myself. I agree that marks are incredible when hopping back and forth, I just dont really see it as a replacement for the file tree.
Actually didn't talk about marks on this video though they are also good, do you mean tags? Legit, I heard nerd tree is good, my workflow is mostly jumping between functions/classes or just searching text so I less find my self navigating the actual tree and if I do need sometimes I just use the :terminal or press tab on the :new file paths
"Take away features people are used to" - looking forward to your next video about switching to ed instead of vim. Probably along the lines of "I wasted half my screen space with text I already knew, now I just have the documentation window almost full screen with a couple of lines for ed" Mostly jest of course, but I did use ed for a while out of curiosity, and I do think I became better in using the s/g/v commands
Personally I love the file tree and tabs. Tabs allow me to set up multiple complex arrangements of windows, and easily switch between them. (Actually I love tabs in general, and that is the main reason on I use Konsole/Windows Terminal over Alacritty). Inside the file tree, you can use / and ? like in any other buffer, which is a killer feature over the file tree in VS Code.
Any editor can be configured to use VIM but it will take you a long time to configure vim to be an IDE. I have found that it is much easier to configure VScode to use vim and be an IDE than to try to configure neovim to be an IDE. I have spent too many hours fixing my neovim configuration so that I can use it as an IDE. I hate being dependent on so many OS repos that break on every other upgrade. The good part about VIM is the keybindings, everything else is shit, so just use the keybindings in an IDE that doesn't give you headaches.
That video is pretty old, I now use 0 plugins :) I do debugging externally with an external program which I choose according to the programming language and operating system (e.g. GDB for Linux C/C++/Assembly, WinDbg for Windows, Delve for Golang, etc). I consider debugging to be a separate process than writing code, I have a video about this which explains more in depth.
@@nirlichtman wow. I can't imagine myself working like you. Renaming variables, showing git diffs, seeing parameters as I'm writing code without having to switch to the function are daily use cases for me. I also work with large code bases which makes it impossible to learn & remember everything. I'd be interested in a dev workflow if you have a video of it.
@canmetan670 a lot of my older videos are about my workflow, they can be found in my Vim tips playlist (stuff like tags, multiple windows and Vim terminal, git grep, etc). Perhaps i'll make sometime an updated video which will describe it all more generally
So instead of learning broadly applicable features, that most IDE's have, and are used borderline identically in each (like text find, and global text find) you learned the specific features of vim that only apply to vim, but do the same thing w/o a gui? This seems like just trading some time customizing for tech debt.
I actually used IDEs a lot before moving to Vim so I learned both worlds. Both indeed contain the basic features like simple text search and such but the thing that is strong in Vim is that it contains much more advanced and useful features that flow nicely with each other through the keyboard, for more information checkout my playlist "Vim Tips"
In my experience, Vim is more of a headache, i.e., a distraction than an effective editing and coding tool, with all those commands to remember, configs and plugins to make it a comfortable workspace, and most importantly the requirement to remember pressing the Allmighty I key... Although I do appreciate all the hard work put into it to enrich Vim with new features, making it a favorite tool among its fans. Just a personal thing, never mind...
@@husseinyoussef6998 Frankly, I've been on Linux editing with Vim for years. Perhaps as yourself, I often find myself having been seriously caught up with elaborating the logic of the program I'm working on, with no tolerance for distraction, which is the opposite with Vim, alas. I finally gave up with the advent of VSCode, particularly its Vim extension. Now I use the best of the two worlds, with Vim mainly used for quick selections, jumps, searches and quote insertions. And no more starts with the Insert mode on :o)
I think some points of your's may come from not using the features IDEs offers. For example, in VS Code, about the file system, in monolithic projects I never use the clickable system, it's not practical. But that's were CTRL+P comes in. - It can find the files easily - It can be used to execute scripts in VS Code I create Also, the debugging in VS Code - I can make programmable debugging. This is great if you have 300 apis in the project, that have command line specific tasks, and you want to have default values for it so you can test it anytime. (And this isn't something you can just create a test for, that takes too much time and something doesn't make sense) Also, let's say you want to ssh into a machine. The infrastructure the IDE created is perfect for this. Coding C++ professionally without a good integrated infrastructure such as Visual Studio, I'm not convinced Vim offers this. You can have both a good coding experience and value a good IDE. It just seems to me like every feature vim seems to offer, it could simply be implemented in an IDE. But the opposite doesn't seem to be true.
I have used IDEs for a long time so I used a lot of the advanced features/chords in various IDEs including CTRL+P in VSCode and it still does not compare to the experience of coding on Vim which is much better since instead of IDEs having random chords and keybindings for various features the Vim commands works much more nicely and logically together, kind of like talking english with the editor, for example if I want to delete 2 words I use d2w. I think of debugging as a separate stage as compared to writing code so just as Vim is my favorite editor for writing code I use my favorite external debugger for each programming language I use when I need to debug. C/C++ coding works great on Vim using the clangd language server. More information about these on my playlist "Vim Tips"
Thanks! I use only two plugins both are for the language server (vim-lsp and vim-lsp-extensions). Welcome to check out my (short) vimrc, I put a link in the channel description
Also a suggestion for retar... sorry for microsoft. While entering search mode (either by pressing f or ctrl-f) you are always in a single line, so pg up and pg down SHOULD NOT work as page up and down. Make them quick search up and down. Wake up you are programmers, think as programmers. Up and down keys, the same. Use common logic, you are interacting with a human.
Checkout my additional video on this topic: ruclips.net/video/kWvyWXDFitk/видео.html For more Vim tips check out my playlist: ruclips.net/p/PL0tgH22U2S3GN7MdobsdWV44qw-P5g7RJ
Personally, I just can't love the abstraction required to make something like vim. I hate abstractions on simple things. I wish I could love it and I'm trying but it feels cumbersome to do everything the "right" way that someone has decided for me. That said, I'm still trying to learn it, I don't want to hate it just because it's abstract nature. But at time same time I feel as if just getting over that will take more time than it will ever save.
😂 my point was that people use search differently in IDEs and in Vim, in IDEs people are used to grab the mouse and scroll or click through the code which is time consuming while in Vim one of the many useful code navigations is through search (which actually is a lot more comfortable than IDE search imo)
@@nirlichtman "In IDEs people are used to grab the mouse and scroll" I don't agree with that at all. Sure some people do, but I sure don't. I use keyboard shortcuts to do everything you showed in the video in vscode. I use find-jump to go to a specific place/character in the code. I also extensively use local or global search to find files. I tried vim in the past and honestly found the learning curve too time consuming considering that I rather spend the time learning a new programming language or programming concept that will benefit my career more
It almost feels like a waste of brain allocation, macos shortcuts remind me of this too, just randomly clicking lambda command then a random number to be able to screenshot
I think of debugging as a separate process as compared to writing code, just as Vim is my favorite editor for editing text/code I choose for each programming language my favorite external debugger. for more information check out my video about why Vim doesn't need built in debuggers.
Meh. Been there, done that. Modal editing kinda sucks for me. Also, epic fail when you need a serious debugger capabilities or working with graphical assets... Plus autocompletion is so good in IDEs these days, that I'm only pressing tab repeatedly to write boilerplate... Unless I copy it from ChatGPT... Vim is still cool for config files though. For anything else, sorry.... nope
Why can't Vim startup already in input mode? As far as I can tell, it is nothing but obstinacy. I see *no* other reason. Maybe some kind of retentative obsession.
When using Vim you are most of the time in normal mode since that is mode where you use most of the commands to navigate/modify the code, so it makes sense to startup in normal mode since most of the time when starting to work you want to first navigate the code and find where you want to actually insert text.
I have always hate heavy IDEs, but I still don't find VIM appealing at all. Using a code editors like VSCode / Sublime / atom etc instead of IDEs and VIM makes much more sense in every aspect. If you want VIM-like shortcuts, just install a simple extension, and you're good to go. You can shape your own experience the way you want. I'm especially thinking, for instance, you join a new team or a different project is handed over to your team, and the codebase is a mess. It seems quite absurd to use something like VIM while trying to understand the project and get to working. For instance, recently our team took over a project developed by another team, and its a quite mess. Thousands lines of code not organized/splitted, inconsistent naming, meaningless decisions everywhere, and different approaches for similar problems. What they did doesn't match what they intended. If we compare code editors to VIM (not IDEs), I believe the issue lies with the person. With VIM, you need to learn those new techniques to be efficient, whereas in editors, you don't have to. It's optional, but if you want to, you can.
Indeed Vim has a learning curve (especially in the beginning) but in the end it pays off very well. The most complicated thing when I started using Vim was remembering the basic commands, and the cool thing is that operation commands actually have a pattern (I talk about it on my video about remembering vim commands). Once you understand this, it can make it much more easy to begin using Vim. For the rest, see my answer for @samuelgunter
new people could understand that vim motion is much more powerful than a mouse, but 90% mouse is very fast and accurate. we don't like mouse, because we didn't want to release the hands from the keyboard go to the mouse and return back, it is very bad. if i have 3 hands i will use the mouse for moving 😂
Actually, in my opinion even with 3 hands a mouse would still be less efficient in most cases since working with the keyboard enables moving with the speed of thought while working with the mouse is more mechanical.
Try visual studio code with vim plugin. I often switch between VSCode and vim. I also catch myself to type ":wq" when sending a mail or editing ex. pull request. The ":ls" is useful but I have not tried yet to step away from directories tree. Though it seems a good idea (try to scroll over node_modules...). Especially as recently I use copilot chat more often than the files tree (and it is using same space). Tabs... while I am using buffers/tabs quite often, I find the vscode tabs to be a bit messy and I often end in "close other tabs" or "close all tabs" option. Huge disadvantage of vim is the lack of solid terminal that would support all the features (curly underline, double overline, etc.). Also performance of vim is quite poor - this is where you should switch to neovim (I hate lua though). Atom is cool but it in my eyes just lost with vscode. IntelliJ is great but except java/kotlin/groovy I find no justification to pay its immense price for features I can have for free from vscode.
Check out my video about why I prefer vanilla vim over emulator extensions for additional information about my opinion on this subject. I disagree about the performance of Vim, out of all the editors/IDEs I have used Vim is definitely the snappiest and most enjoyable to use.
@@nirlichtman "Why I Prefer Real Vim Over Fake IDE Extensions"? Same for "compatible mode". When I connect to remote machine I never know what options were used to compile the vim. Sometimes there is no text folding and no syntax. That is why I am trying to stick with some minimal set of commands. Oh.. and what I hated the most was lack of vertical block selection in one server (how is it even possible ?!?). Lucky this works almost fine in VSCode vim plugin and you could type in multiple lines at once :) Oh... and recently copilot is replacing many complex vim shortcuts for me as remembering all those shortcuts is challenging.
You can get the same features on IDEs too either out of the box or with plugins. Also, what if you encounter a function and you don't know what that function does? The function may be implemented in other file and you want to look at its description or implementation. I often need this when I work on a code base with approx 100kLOC. What about breakpoints and other debugging features in Vim? Bloat is not a good argument for using Vim in 2023. Vscode isn't slow even on my computer from 2011 which has 2nd gen i5. Support for other programming languages and features which you don't use may come in handy because at some point you may need them. E.g. I use C++ and C# but sometimes (very rarely) I have to do changes in Python and Javascript code and in Bash scripts.
As I mentioned in other answers, Vim plugins for IDEs do not emulate Vim very well so they lack many handy Vim features. Using language servers with Vim enable you to install support for just what you need :) Out of the box you can jump to definitions with Vim using tags in a very comfortable and powerful way (I have a vid on that on my channel) You can also jump using the language server which is also useful in some cases
sure, for web dev vim is ok, but when working with languages like C# you will need tools provided by IDEs that an old terminal editor can't compete with... and the stuff you've mentioned in the video I can also do them in VSCode but I'm using SublimeText key bindings since that's what I learned: CTRL + M to jump to the next bracket, it works even with HTML tags Home/End to jump to the start/end of the line, CTRL+Home/End to jump to the start/end of the file CTRL+Delete deletes the next whole word, CTRL+Backspace deletes the previous whole word CTRL+SHIFT+Delete deletes everything from cursor to the end of the line CTRL+SHIFT+Backspace deletes everything from cursor to start of line SHIFT+Home/End to select everything from cursor to beginning/end of line CTRL+SHIFT+Home/End to select everything from cursor to beginning/end of file CTRL+G to jump to a specific line CTRL+SHIFT+D to duplicate the current line CTRL+D on a text selection to select the next occurrence and many more... you make it sound like vim is unique with all these actions but it seems like you haven't even open a keybindings options menu to see what you can do with a modern editor...
@@IncomingLegend It just feels odd. C# is very restrictive for multi platform development... It's fine for legacy projects but other than that I'd just use more modern languages
@@IncomingLegendGo currently looks very promising, especially with everything being web apps nowadays. Other than that I just use Typescript. Writing a little Rust on the side by building with Tauri. In the end all languages are fine, was just thinking about the cons of using C# over some other OOP lang like Java
הכוונה נאו ווים? זה גם אחלה מבחינתי זה כמעט כמו ווים הרגיל, עד עכשיו פשוט העדפתי את המקורי כי אהבתי את הכיוון של בראם שהוא מי שיצר ותיחזק את ווים ונאו ווים נוטים להכניס פ'יצרים בלי לחשוב יותר מידי על התמונה הכוללת. עכשיו אחרי החדשות לגבי בראם לא ברור מה יהיה הכיוון לגבי ווים ויכול להיות שבסוף אני יעבור לנאו ווים אם אני אראה שלא מתחזקים יותר את המקורי
good luck explaining to the team that their cl.exe is not correct and you should delete a few words, but pathetic is more important than built-in profiling. but then everyone can write their own in a notepad.
Absolutely pathetic..Let me tell you something..Vim do not need a computer or a screen !!!! We do not need java or python only assembler...All productivity studies lead to a simple answer..IDE are boosting productivity massively...With your 30 lines bash script you do not need IDE but what about a 10 millions lines software using Scala programming ? The is worse...Emacs...or nano... Vim or Emacs for the last 5 years tried to follow massive changes in the field of software development...following or trying....:)
I read IED... Ngl, changes the whooole situation
☠️
improvised explosive devices?
R.I.P. Bram Moolenaar, creator and "benevolent dictator for life" of Vim. I didn't know he had retired from his day job in Switzerland and moved to a town near me, until I heard he had died of some nasty illness.
for me, using an ide with a vim motions extension is the best balance. vim motions are essential and speed me up significantly. ive given vim/neovim a fair shot since i used them for a 30 day block (and yes, i used extensions, since just using the built-in features isn't much), but i prefer the feel of a standard ide. i use keyboard shortcuts for most things, but i really don't care about keyboard-only elitism. im not intering in spending a lot of time configuring vim/neovim to be perfect since i wouldnt be more productive than in an ide. but if you like vim, go for it
Legit, I used to use IDEs with Vim Extensions before moving to Vim.
About the plugins, I don't need more than 2 plugins (for the language server) to be productive since Vim actually has plenty of very powerful built-in features that I constantly use (examples are in my channel playlist "Vim Tips") and some of them are not emulated well on the various Vim extensions (for example window management), and that is one of the main reasons I moved to vanilla Vim.
30 days are not fair :) Do it 6 months and you can't leave it anymore😊
Typecraft does a good video on turning it into an IDE, you can search trees, teaches the basics on customizing nVim to your specifications.
@@nirlichtman Hi, I found your video interesting, thanks. What extension do you use to develop in C? You mentioned using two specific LSPs, so that would be it?
@guvox1367 thanks! i used to use vim-lsp and vim lsp settings, but this is an older video, so since I have moved to using 0 plugins, there is setup info in my welcome page, I have a playlist called Vim Tips where I talk about my workflow.
Vim and Emacs speed can be achieved by learning keybindings. You don't need to use mouse except only for multi courser selecting.
the bad thing is that they are not context indepedent
Pretty much all of the functionality you mentioned can be done in most modern IDEs, so not sure what your point is.
My main point in this video is about the fact that Vim is keyboard oriented as compared to most other editors which put the main focus on the mouse (and for the keyboard they expose the functionality mostly through awkward chords). Vim also contains many additional useful and advanced features which I doubt would be found in other editors/IDEs which I talk about on my playlist "Vim Tips". Check out my updated video about this subject for more information and a clearer explanation (link in the pinned comment).
Everything you have shown can be done in Vcode, and the excuse that I have noticed the most is that you do not use the mouse, I suppose it is a skill issue problem when using the mouse
Don't forget 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. I find this tremendously useful.
You can also use # to do the search in the reverse order.
In both Visual Studio Code and Jetbrains IDEs you can easily configure keyboard use like in Vim.
Yah I also used various Vim emulator extensions for a certain period of time before moving to Vim, they still lack many handy and powerful Vanilla Vim features which was one of the reasons I decided to move to Vanilla, for more info, I have a video about that.
I've only used Visual Studio and, to me, this video is "I like to use Vim because it has all these awesome features (proceeds to list features that exist in Visual Studio, only more accessible and more useful) and you can just (proceeds to do something much slower and clunkier than in VS) and I don't like (features that speed up your workload by 10 to 100 times). You do you man, but I don't expect people to take me seriously if I say I've used cars for many years and find horses to be much better.
I have an updated version of this video which better explains why I prefer Vim (link in the pinned comment)
I'm curious about Vim's capabilities and its plugins regarding code refactoring within large codebases. Specifically, how effectively can Vim handle tasks such as moving symbols to their own files, updating imports/usings across all files after file movements, transitioning files into different namespaces with corresponding updates to usages, and swapping out implementations for interfaces with widespread updates to dependencies? The true value of a robust IDE, in my view, extends beyond mere auto-completion or syntax highlighting; it includes deep context awareness that simplifies these complex refactoring tasks. While I acknowledge the points made about avoiding feature bloat and the efficiency gains in typing and code navigation, I find these advantages somewhat overshadowed in large-scale projects. Here, the limitations of basic text operations, including search and replace, become apparent, potentially leading to hours of manual corrections. How does Vim, supplemented by its ecosystem, address these more advanced refactoring needs?
I use a language server plugin (I use vim-lsp but there are more) which enables Vim to connect to language servers which provide smart capabilities which are specific to a given programming language. I also heard that the popular Vim fork called NeoVim has lsp client capabilities built in without requiring any additional plugin, but I haven't tried that yet. Language servers are popular since that protocol is used by Visual Studio Code so you can find them for many programming languages.
can you please share how you have integrated autocomplete and language specific errors into vim? i can't seem to find minimalistic way of achieving this. Good video btw👍
Thanks! I use a plugin called vim-lsp which enables Vim to integrate with Language Servers, I use another plugin to easily install Language Servers directly from Vim for languages I need.
I added to my channel description a link to my vimrc, you can check it out and you will see the plugins and configuration over there as well.
I plan on making more videos soon about Language Servers and configuring Vim to work with them, so stay tuned :)
@@nirlichtman Thankyou !👏
So to my understanding many of these features would be available on an IDE either out of the box or through the use of plugins. I don’t know about jumping around text, but visual studio has text searching right out of the box. File management you could argue to be a personal preference though. I don’t fully agree with your evaluation but interesting to see someone’s thoughts on this
Thanks for watching! Answered some of these in the other comments :)
I agree on the keyboard shortcuts, but I want a dropdown list of options for auto complete when Im typing something, and I want that auto complete functionality to execute when I press "tab".
Until vim doesn't have this features I'm not using it
You can pick up plugins, or program it yourself with Lua. Plus certain functions do use tab to complete, but it doesn't know what words you need in the normal document unless you give it an extension.
i just stick with nano
I use Codeblocks with plenty of key shortcuts. Vim didn't caught much my attention, except only by its vertical moves, which I admit it has a small advantage. Anyway, I don't feel like being slow, nor in need for another code editor.
The cool thing about the Vim way of commands instead of keyboard shortcut chords in IDEs is that they work very nicely and logically together, kind of like talking english with the editor - for example delete 2 words is d2w, for more information check out my playlist "Vim Tips"
@@nirlichtmanNice.
I used codeblocks for the longest time, and although it is serviceable, there are a few issues with the way it handles projects that make it terrible for scaling beyond something small. Maybe sooner or later, something will annoy you enough that you'll have to move on to something easier; some sell their souls and go to visual studio. Others go to vim/etc
I still use GCC though even as a windows user, since I feel like the compiler will always be better than MSVC,
I use nerd tree in neovim because it is still the best way to get a feel of how a project is structured. And it's also useful when I forget both where I placed something and what I named it. Even more so when I didn't write the code myself.
I agree that marks are incredible when hopping back and forth, I just dont really see it as a replacement for the file tree.
Actually didn't talk about marks on this video though they are also good, do you mean tags?
Legit, I heard nerd tree is good, my workflow is mostly jumping between functions/classes or just searching text so I less find my self navigating the actual tree and if I do need sometimes I just use the :terminal or press tab on the :new file paths
"Take away features people are used to" - looking forward to your next video about switching to ed instead of vim. Probably along the lines of "I wasted half my screen space with text I already knew, now I just have the documentation window almost full screen with a couple of lines for ed"
Mostly jest of course, but I did use ed for a while out of curiosity, and I do think I became better in using the s/g/v commands
Personally I love the file tree and tabs. Tabs allow me to set up multiple complex arrangements of windows, and easily switch between them. (Actually I love tabs in general, and that is the main reason on I use Konsole/Windows Terminal over Alacritty). Inside the file tree, you can use / and ? like in any other buffer, which is a killer feature over the file tree in VS Code.
Any editor can be configured to use VIM but it will take you a long time to configure vim to be an IDE. I have found that it is much easier to configure VScode to use vim and be an IDE than to try to configure neovim to be an IDE. I have spent too many hours fixing my neovim configuration so that I can use it as an IDE. I hate being dependent on so many OS repos that break on every other upgrade. The good part about VIM is the keybindings, everything else is shit, so just use the keybindings in an IDE that doesn't give you headaches.
You've said you use only 2 plugins. How do you even debug stuff without any extra plugins?
That video is pretty old, I now use 0 plugins :) I do debugging externally with an external program which I choose according to the programming language and operating system (e.g. GDB for Linux C/C++/Assembly, WinDbg for Windows, Delve for Golang, etc). I consider debugging to be a separate process than writing code, I have a video about this which explains more in depth.
@@nirlichtman wow. I can't imagine myself working like you. Renaming variables, showing git diffs, seeing parameters as I'm writing code without having to switch to the function are daily use cases for me. I also work with large code bases which makes it impossible to learn & remember everything. I'd be interested in a dev workflow if you have a video of it.
@canmetan670 a lot of my older videos are about my workflow, they can be found in my Vim tips playlist (stuff like tags, multiple windows and Vim terminal, git grep, etc). Perhaps i'll make sometime an updated video which will describe it all more generally
So instead of learning broadly applicable features, that most IDE's have, and are used borderline identically in each (like text find, and global text find) you learned the specific features of vim that only apply to vim, but do the same thing w/o a gui? This seems like just trading some time customizing for tech debt.
I actually used IDEs a lot before moving to Vim so I learned both worlds. Both indeed contain the basic features like simple text search and such but the thing that is strong in Vim is that it contains much more advanced and useful features that flow nicely with each other through the keyboard, for more information checkout my playlist "Vim Tips"
In my experience, Vim is more of a headache, i.e., a distraction than an effective editing and coding tool, with all those commands to remember, configs and plugins to make it a comfortable workspace, and most importantly the requirement to remember pressing the Allmighty I key... Although I do appreciate all the hard work put into it to enrich Vim with new features, making it a favorite tool among its fans. Just a personal thing, never mind...
This is the exact opposite of my experience and I suggest you give it a fair shot, if you have time ofc
@@husseinyoussef6998 Frankly, I've been on Linux editing with Vim for years. Perhaps as yourself, I often find myself having been seriously caught up with elaborating the logic of the program I'm working on, with no tolerance for distraction, which is the opposite with Vim, alas. I finally gave up with the advent of VSCode, particularly its Vim extension. Now I use the best of the two worlds, with Vim mainly used for quick selections, jumps, searches and quote insertions. And no more starts with the Insert mode on :o)
I think some points of your's may come from not using the features IDEs offers.
For example, in VS Code, about the file system, in monolithic projects I never use the clickable system, it's not practical. But that's were CTRL+P comes in.
- It can find the files easily
- It can be used to execute scripts in VS Code I create
Also, the debugging in VS Code
- I can make programmable debugging. This is great if you have 300 apis in the project, that have command line specific tasks, and you want to have default values for it so you can test it anytime. (And this isn't something you can just create a test for, that takes too much time and something doesn't make sense)
Also, let's say you want to ssh into a machine. The infrastructure the IDE created is perfect for this.
Coding C++ professionally without a good integrated infrastructure such as Visual Studio, I'm not convinced Vim offers this.
You can have both a good coding experience and value a good IDE. It just seems to me like every feature vim seems to offer, it could simply be implemented in an IDE. But the opposite doesn't seem to be true.
I have used IDEs for a long time so I used a lot of the advanced features/chords in various IDEs including CTRL+P in VSCode and it still does not compare to the experience of coding on Vim which is much better since instead of IDEs having random chords and keybindings for various features the Vim commands works much more nicely and logically together, kind of like talking english with the editor, for example if I want to delete 2 words I use d2w.
I think of debugging as a separate stage as compared to writing code so just as Vim is my favorite editor for writing code I use my favorite external debugger for each programming language I use when I need to debug.
C/C++ coding works great on Vim using the clangd language server.
More information about these on my playlist "Vim Tips"
@@nirlichtman ctrl+p ? you're a dunce. Switch careers please
I just discoverd this channel (suscribed). Which plugins do you use ?
Thanks! I use only two plugins both are for the language server (vim-lsp and vim-lsp-extensions). Welcome to check out my (short) vimrc, I put a link in the channel description
Also a suggestion for retar... sorry for microsoft. While entering search mode (either by pressing f or ctrl-f) you are always in a single line, so pg up and pg down SHOULD NOT work as page up and down. Make them quick search up and down. Wake up you are programmers, think as programmers. Up and down keys, the same. Use common logic, you are interacting with a human.
What about its capabilities for frontend part??
Check out my video about language servers on Vim, I use Vim a lot for frontend dev (with the typescript language server), it works great
Just don't use the "useless" features
I have made a second version of this video which better explains why I prefer Vim over other editors, link in the pinned comment.
neovim is the best editor for sure. You just need a few really good plugins and lsp-zero and you're set.
I actually prefer the original Vim but neovim is also good :)
Knowing about auto correct was a big relief for me😂😂😂😅
Checkout my additional video on this topic: ruclips.net/video/kWvyWXDFitk/видео.html
For more Vim tips check out my playlist: ruclips.net/p/PL0tgH22U2S3GN7MdobsdWV44qw-P5g7RJ
Or... just learn to use a mouse properly.
Also tabs.
sure buddy sure, try develop an android app with vim
Debugging tools in IDEs. Why is that considered an advantage? If you need to use a debugger ... I have nothing more to say.
Personally, I just can't love the abstraction required to make something like vim. I hate abstractions on simple things. I wish I could love it and I'm trying but it feels cumbersome to do everything the "right" way that someone has decided for me. That said, I'm still trying to learn it, I don't want to hate it just because it's abstract nature. But at time same time I feel as if just getting over that will take more time than it will ever save.
this man acts like IDEs don't have search
😂 my point was that people use search differently in IDEs and in Vim, in IDEs people are used to grab the mouse and scroll or click through the code which is time consuming while in Vim one of the many useful code navigations is through search (which actually is a lot more comfortable than IDE search imo)
@@nirlichtman "In IDEs people are used to grab the mouse and scroll" I don't agree with that at all. Sure some people do, but I sure don't. I use keyboard shortcuts to do everything you showed in the video in vscode. I use find-jump to go to a specific place/character in the code. I also extensively use local or global search to find files. I tried vim in the past and honestly found the learning curve too time consuming considering that I rather spend the time learning a new programming language or programming concept that will benefit my career more
Once you learn Vim mnemonics, take a look at the VSCode keyboard shortcuts. What a mess.
It almost feels like a waste of brain allocation, macos shortcuts remind me of this too, just randomly clicking lambda command then a random number to be able to screenshot
For me Vim ends when I need to debug code. For a javascript is ok.
I think of debugging as a separate process as compared to writing code, just as Vim is my favorite editor for editing text/code I choose for each programming language my favorite external debugger. for more information check out my video about why Vim doesn't need built in debuggers.
thx
Meh. Been there, done that. Modal editing kinda sucks for me. Also, epic fail when you need a serious debugger capabilities or working with graphical assets... Plus autocompletion is so good in IDEs these days, that I'm only pressing tab repeatedly to write boilerplate... Unless I copy it from ChatGPT... Vim is still cool for config files though. For anything else, sorry.... nope
Why can't Vim startup already in input mode? As far as I can tell, it is nothing but obstinacy. I see *no* other reason. Maybe some kind of retentative obsession.
When using Vim you are most of the time in normal mode since that is mode where you use most of the commands to navigate/modify the code, so it makes sense to startup in normal mode since most of the time when starting to work you want to first navigate the code and find where you want to actually insert text.
When you are programming, most of the time you are reading code, not writing code.
I have always hate heavy IDEs, but I still don't find VIM appealing at all. Using a code editors like VSCode / Sublime / atom etc instead of IDEs and VIM makes much more sense in every aspect. If you want VIM-like shortcuts, just install a simple extension, and you're good to go. You can shape your own experience the way you want.
I'm especially thinking, for instance, you join a new team or a different project is handed over to your team, and the codebase is a mess. It seems quite absurd to use something like VIM while trying to understand the project and get to working. For instance, recently our team took over a project developed by another team, and its a quite mess. Thousands lines of code not organized/splitted, inconsistent naming, meaningless decisions everywhere, and different approaches for similar problems. What they did doesn't match what they intended.
If we compare code editors to VIM (not IDEs), I believe the issue lies with the person. With VIM, you need to learn those new techniques to be efficient, whereas in editors, you don't have to. It's optional, but if you want to, you can.
Indeed Vim has a learning curve (especially in the beginning) but in the end it pays off very well.
The most complicated thing when I started using Vim was remembering the basic commands, and the cool thing is that operation commands actually have a pattern (I talk about it on my video about remembering vim commands).
Once you understand this, it can make it much more easy to begin using Vim.
For the rest, see my answer for @samuelgunter
new people could understand that vim motion is much more powerful than a mouse, but 90% mouse is very fast and accurate.
we don't like mouse, because we didn't want to release the hands from the keyboard go to the mouse and return back, it is very bad.
if i have 3 hands i will use the mouse for moving 😂
Actually, in my opinion even with 3 hands a mouse would still be less efficient in most cases since working with the keyboard enables moving with the speed of thought while working with the mouse is more mechanical.
Try visual studio code with vim plugin. I often switch between VSCode and vim. I also catch myself to type ":wq" when sending a mail or editing ex. pull request. The ":ls" is useful but I have not tried yet to step away from directories tree. Though it seems a good idea (try to scroll over node_modules...). Especially as recently I use copilot chat more often than the files tree (and it is using same space). Tabs... while I am using buffers/tabs quite often, I find the vscode tabs to be a bit messy and I often end in "close other tabs" or "close all tabs" option. Huge disadvantage of vim is the lack of solid terminal that would support all the features (curly underline, double overline, etc.). Also performance of vim is quite poor - this is where you should switch to neovim (I hate lua though). Atom is cool but it in my eyes just lost with vscode. IntelliJ is great but except java/kotlin/groovy I find no justification to pay its immense price for features I can have for free from vscode.
Check out my video about why I prefer vanilla vim over emulator extensions for additional information about my opinion on this subject. I disagree about the performance of Vim, out of all the editors/IDEs I have used Vim is definitely the snappiest and most enjoyable to use.
@@nirlichtman "Why I Prefer Real Vim Over Fake IDE Extensions"? Same for "compatible mode". When I connect to remote machine I never know what options were used to compile the vim. Sometimes there is no text folding and no syntax. That is why I am trying to stick with some minimal set of commands. Oh.. and what I hated the most was lack of vertical block selection in one server (how is it even possible ?!?). Lucky this works almost fine in VSCode vim plugin and you could type in multiple lines at once :) Oh... and recently copilot is replacing many complex vim shortcuts for me as remembering all those shortcuts is challenging.
You can get the same features on IDEs too either out of the box or with plugins. Also, what if you encounter a function and you don't know what that function does? The function may be implemented in other file and you want to look at its description or implementation. I often need this when I work on a code base with approx 100kLOC. What about breakpoints and other debugging features in Vim?
Bloat is not a good argument for using Vim in 2023. Vscode isn't slow even on my computer from 2011 which has 2nd gen i5. Support for other programming languages and features which you don't use may come in handy because at some point you may need them. E.g. I use C++ and C# but sometimes (very rarely) I have to do changes in Python and Javascript code and in Bash scripts.
yeah
we can get all features on other ide's like vs code
As I mentioned in other answers, Vim plugins for IDEs do not emulate Vim very well so they lack many handy Vim features.
Using language servers with Vim enable you to install support for just what you need :)
Out of the box you can jump to definitions with Vim using tags in a very comfortable and powerful way (I have a vid on that on my channel)
You can also jump using the language server which is also useful in some cases
sure, for web dev vim is ok, but when working with languages like C# you will need tools provided by IDEs that an old terminal editor can't compete with... and the stuff you've mentioned in the video I can also do them in VSCode but I'm using SublimeText key bindings since that's what I learned:
CTRL + M to jump to the next bracket, it works even with HTML tags
Home/End to jump to the start/end of the line, CTRL+Home/End to jump to the start/end of the file
CTRL+Delete deletes the next whole word, CTRL+Backspace deletes the previous whole word
CTRL+SHIFT+Delete deletes everything from cursor to the end of the line
CTRL+SHIFT+Backspace deletes everything from cursor to start of line
SHIFT+Home/End to select everything from cursor to beginning/end of line
CTRL+SHIFT+Home/End to select everything from cursor to beginning/end of file
CTRL+G to jump to a specific line
CTRL+SHIFT+D to duplicate the current line
CTRL+D on a text selection to select the next occurrence
and many more...
you make it sound like vim is unique with all these actions but it seems like you haven't even open a keybindings options menu to see what you can do with a modern editor...
Why would you build applications with C# nowadays tho
@@sven-o not sure what you mean, can you elaborate on that question? is something wrong with C#?
@@IncomingLegend It just feels odd. C# is very restrictive for multi platform development... It's fine for legacy projects but other than that I'd just use more modern languages
@@sven-o what other languages would you use?
@@IncomingLegendGo currently looks very promising, especially with everything being web apps nowadays. Other than that I just use Typescript. Writing a little Rust on the side by building with Tauri. In the end all languages are fine, was just thinking about the cons of using C# over some other OOP lang like Java
Am gonna usevim from now on😂😂
Excellently explained.
notepad ftw
למה לא nvim
הכוונה נאו ווים? זה גם אחלה מבחינתי זה כמעט כמו ווים הרגיל, עד עכשיו פשוט העדפתי את המקורי כי אהבתי את הכיוון של בראם שהוא מי שיצר ותיחזק את ווים ונאו ווים נוטים להכניס פ'יצרים בלי לחשוב יותר מידי על התמונה הכוללת. עכשיו אחרי החדשות לגבי בראם לא ברור מה יהיה הכיוון לגבי ווים ויכול להיות שבסוף אני יעבור לנאו ווים אם אני אראה שלא מתחזקים יותר את המקורי
good luck explaining to the team that their cl.exe is not correct and you should delete a few words, but pathetic is more important than built-in profiling. but then everyone can write their own in a notepad.
Absolutely pathetic..Let me tell you something..Vim do not need a computer or a screen !!!! We do not need java or python only assembler...All productivity studies lead to a simple answer..IDE are boosting productivity massively...With your 30 lines bash script you do not need IDE but what about a 10 millions lines software using Scala programming ?
The is worse...Emacs...or nano...
Vim or Emacs for the last 5 years tried to follow massive changes in the field of software development...following or trying....:)
In Jesus' Name Amen ✝️. God bless you abundantly!
VSCode
xd
Am gonna usevim from now on😂😂