@@anshulkanwar1 Some people just like it I guess. But pretty much, vscode + vim is probably one of the best mixes of productivity + a good code editor in terms of syntax highlight & code complete & a lightweight code editor + as much of an IDE as you want it to be. But everyone has their preferences.
@@matthewlin5484 I just commented the same thing. Halle is not gonna get syntax highlighting in a mac terminal. Its like working backwards is the new in thing. 🤷♂️
Totally get it! I cannot live without vim and tmux! Trying anything else causes me immense frustration. I also liked your explanation about vim being optimised for editing existing text.
If you are editing code on a primitive terminal, Vim (or vi)... works. Older keyboard, or reduced keyboard, with no function keys? Still works. REALLY old keyboard, with no arrow cursor keys? Yep, still works (you just need to learn which keys move the cursor). When you can't always control what interface you'll be using, Vim skills are a good tool to have.
Try doom-emacs or spacemacs as an introduction to emacs, with evil-mode it is basically vim but much more powerful and with much more potential.Try it.
Evil mode is not vim--- it's close but not there. Emacs is more customizable and flexible than vim, but it suffers a bit in terms of speed and simplistic power.
@@ruhnet Customizable, flexible AND powerful you can do things in emacs you could only dream of with vim. I admit the simplicity of vimscript is better than having to learn elisp (even though you don't have to learn elisp to use doom-emacs or spacemacs) but emacs is by no mean slow, even the infamous spacemacs can be considered fast enough if you use the emacs --daemon command to run it as a server.
@Nasreddine Hodja I didn't necessarily mean that Emacs is _slow_, just that it is slower than vim. And I said "simplistic power." No one can argue that vim is more powerful than Emacs (the thought is absurd) but vim gives you plenty of power in a simpler way, without as much customization (in my humble opinion.)
On what operating system? If you're on Linux it's usually either installed already, or you can install it with sudo apt install vim (for debian based distros).
My biggest issue with vim was, as you said, trying to remember the different key bindings. I used to struggle a lot, until I figured out that each keybindings or, I should say, Each command, is just a short form of the sentence going in your head. so you just gotta learn those proper words used in vim, and then you don't need to remember the commands anymore.
My biggest issue with Vim is that, what he showed us took at least twice as long to type as it would using a normal text editor. Too many shortcuts to learn, too much of a learning curve, and AT BEST you're marginally faster than using a keyboard/mouse in something like Notepad. But it will take you ages to get there. The net gains are negative unless you're12 and have plenty of VIM years remaining. lol
@@TrevHolland lol, that's simply not true. Install modern nvim, add a language server with a simple install and voila, you have autocompletion and intellisense for most languages. I use IDEs for my work, but for some editing of files or quick scripts, they are always quicker to do in VIM
@@TrevHollandif u use it like you preparing exam ofc its hard lol. Use ot according tp your need, add command by time. Wtf are u even doimg trying to remember everything when you have to google every shortcut lol. Start with basic and add ypir command by time 😅.
@@TrevHollandages? Either you are slow learner or you learnt it the wrong way. Back then it took me one week to get fully co,fortable with it and after that one week, i cant even live without it. Idk why the hell it took you alone ages.
@@hypnoticlizard9693 you can do both, on Windows I use sharpkeys to easily remap caps to esc in the registry. Then I use dual-key-remap to map esc to ctrl when pressed on combination with another key. I didn't come up with any of this, it's actually the example given in dual-key-remap. I'm sure it's easier in macOS and other *nix based OSes
Yeah.. after watching this video my thoughts are that it could still be done faster in VS Code. Vim is nice but I honestly don't see how people think it increases their productivity. I forced myself to use Neovim for a month when I was writing an OpenGL rendering engine, and even at the end when I felt like I was "Fast" I still missed VS Code and went back. That's only my opinion though, maybe it does work for some people. I'm sure extensions help; I didn't use any.
@@Goalatio You are comparing stock neovim to vscode with extensions, so yeah I expect you did struggle to see the point. If you like vscode stick with it, honestly when I have to use Windows I use vscode. However if you use neovim with plugins, you'll find it's much more productive, bug-free and stable, in my experience, after the initial learning curve.
@@Goalatio Oof, yeah you need to try it with extensions and plugins. A tricked out Neovim is no longer a text editor, it's weird that people keep referring to it as purely a text editor (like this video kinda does at the start...). It's an IDE, with all the bells and whistles, rock solid and fast.
@@Goalatio I use a raspberry pi as main pc, it was so slow to edit code in a normal program.. so I start using it because I need, not want to. With a bunch of plugins is basically the same thing as VS code, beautiful stable and fast.I am used to write and edit in it now. Text editor, distro or programming language isn't a religion, is nothing more than a tool for solving problems.
I use vim when I need to(have to) edit some config files on Linux. When programming, I pick an IDE. "psvm" and "sout" are way faster for that Java demo code.
i love how he explains things, clear and simple ; doesn't waste time and jumps straight into the video and ofcourse a rare breed who also "WORKS OUT" XD good work as always 🙏
Yes basics are good but you might wanna go deeper into vim so here's the best vim tutor video: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-d8XtNXutVto.html ( btw watch his other videos it's a really interesting channel. This guy is an awesome C O N T E N T C R E A T O R). Thank me later.
the extension is not vim, it's an emulator. Some macros don't work well depending on input, I've experimented some crashes, some features are not implemented yet since its an emulator (like the norm command, %! command), there are some missing configuration options... If you are a quite old dog vim user, it is almost certain it won't have a feature you use, so it's ok if you use vscode here and there - I, for example, use it only when I need to run a debugger - but a pain if you use it often for writing text. So there's no reason whatsoever to use it instead of vim, specially because vim is waaay faster than vscode. I remember trying to open a 140k lines CSV in vscode and it just crashed, whereas in vim it works really fast, no lag.
It conflicts with some vscode built in shortcut keys and it is difficult to come out of zen mode while using vim extension in vscode, but vim is really a great tool for writing code
To me this falls into the category when people try to justify using i3 because of "productivity". I compared my time doing some easy refactors which I know how to do in Vim too, and actually having to stop and think what keybind do I really want was more taxing and taking more time compared to when I just used Ctrl / Shift / copy-cut-paste / mouse. Also navigating between a lot of files was a pain in the ass, even with plugins like NerdTree or CtrlP.
@@valroz But typing speed isn’t really adding to your productivity in the software engineering world Most work is done in your head and maybe on a blank paper to design your software When actually coding you still have autocompletion etc
As a laptop user I can definitely justify using a tiling window manager and neovim. It is just more convenient, and I don't have to think which keybinding to use next. It comes automatically
Vim is a great editor to use when you have non-desktop linux servers where you need to edit any file. I wouldn’t use it as my main editor, but it’s nice to see vim pointing out as a powerful tool, because it is:).
1. Make your tabs 4 spaces wide, not 8(in vimrc) 2. Learn to navigate with hjkl 3. Learn about plugins(vim-plug) \_ Learn about code completion plugins 4. Learn about the vim file navigation(or nerdtree, if you use that plugin)
At 3:02, you could use “daw” (delete a word) instead of diw + x. It deletes the word + the surrounding spaces. Also you should remap CapsLock to Espace so your Escape key is on the home row of your keyboard. Lastly, if you didn’t know, you can save and quit with “ZZ” or quit without saving with “ZQ” so you don’t have to use two hands 👌
Is better to use the CapsLock key as a Ctrl modifier and when pressed and released it acts as the Escape key. This two commands on Linux do the job: setxkbmap -option 'caps:ctrl_modifier' xcape -e 'Caps_Lock=Escape' (xcape is a standalone program) ABSOLUTE game changer.
He could've just typed dw - delete word. Halle overuses the letter i in vim. I'm gonna give an example when you should actually use it. There's this text: print("Hello word") If you are somewhere inside the string, you can delete it by typing di" di" stands for delete inside " - delete what is inside quotation marks. If you type da" you delete what is inside the quotation marks and the quotation marks. That's because da" stands for delete around "
Obviously does it exist tons of keybindings. However, I think the best advice is not to focus fully on movement optimization, but also invest time learning vim plugins
one of the great ways to learn the key bindings is to talk them out in your head or as you're using them, like copying the word you have the cursor in is "Yank Inner Word" not just "yiw" and speaking it out lets you see how these things may be changed or combined for different kinds of functionality "Delete Inner Word" diw "Change Inner Word" ciw. etc. there's soooo much to learn with vim, but text motions, (hjkl{}wb) and macros (q) and running terminal commands in the butter `:! echo "hi"` are just the tip of the wonderful iceberg that vim is
I used VIM on Linux as an editor for little more than a year and a half. Its nice and can save a lot of time if you are able to remember the commands, but there's a learning curve and I eventually went back to the normal editor. Also, there's a VIM extension for VSCode for anyone interested.
The shortcuts are so different compared to modern ones that it takes some time to get familiar with the logic. However, after a while you can guess some of the commands without even knowing them. The basic idea is that the commands are basically English words and you can combine them into complex sentences. For example d3w is delete three words.
Vim has kid of a steep learning curve. You remap ALL the muscle memory you built from the arrow keys, but once you're used to it, you can have the same workflow in vscode, jetbrains, atom... It's really pleasant.
I'm sure this will get lost in the comments, but - to get started on a new line within the indented block, instead of pressing O followed by multiple tab presses, you can just do j and Shift+S. It's tab-agnostic, so it will put you in the right place regardless of where you are.
I started my career about 25y ago, and back then we used vi. Even though I’m no longer a full time developer, the vi(m) shortcuts are lasered into my brain and muscle memory
Using Vim because you have to I can understand it's the most likely and most basic tool on a Linux machine. But having to memorize a ton of key bindings to avoid using the mouse hardly seems enticing. And I really don't get how productivity is affected by making edits fractionally faster, the majority of your time is spend figuring out what changes to make or how the code should be but together or trying to figure out what is causing the bug not the actual work of typing out the new code or the changes.
You don't have to memorise really, d for delete, w for word, dw delete word, c for change, cw change word. It just seems alien but it's better than the keyboard shortcuts in most applications. I think arguments for productivity increases by using vim are overblown and exagerated, but so are arguments about vims complexity.
@@not_ever You do. Let's be honest here vim (like it or hate it) is extremely counter intuitive when compared to how people are used to working today. i for insert is not intuitive, people expect to type something and have it show up on screen. w for word almost everyone expects to hold shift and highlight a piece of text to then copy or cut or paste. I understand why it is this way, because it was designed at a time when arrow keys on a keyboard where not a realistic expectation. But it's entire philosophy incredibly anti-pattern in 2020. You can learn it and anyone who code's for a living should probably know the basics because they will need to use it at some point. But as an answer to the "problem" of having to use the mouse ... no.
@@georgemanakanatas1241 I guess you’re intuition is wired differently to vim users or something. I have a shit memory so I can promise you, I’m not going to use a counter intuitive tool that relies on memorisation. For me an ide or gui application is horrendous, their shortcuts don’t make sense and their menus and settings are hidden in stupid right click menus. i for insert does not require memory but yes you need to know vim is a modal editor, if you’re used to a gui that can be alarming for the first time. If you don’t remember i for insert the second or third time that’s understandable, but if the fourth or fifth time you forget how to enter insert mode, that might indicate some sort of cognitive decline. :q!
@@not_ever I don't know what to tell you, it could be just residual trauma from growing up with DOS and then getting access to GUIs for the first time that has made me not want to go back. I can learn vim and have done so because it's of use to me, since I frequently interact with the thing. But to opt to use a modal editor (any modal editor) by choice, no I would not. But I also make very heavy use of the mouse over shortcuts in general so maybe it's just me and I am just wired strange ¯\_(ツ)_/¯
@@georgemanakanatas1241 I learned how to code as child in Notepad if it was even called that then, so I guess we had opposite but equally shit, formative experiences, which I guess explains our current, opposite workflow preferences.
@@localhost4460 actually, line numbers are rarely needed, you can use them to find number with error (just use :number instead), or when you are counting something - it would be better to just enable this option in that case, and not put it into vimrc
Just to add on a few keybindings missed that people might find useful: :x = save and exit (same as :wq just easier). hjkl = left, down, up, right navigation. o = new line below cursor. O = new line above cursor. I = insert at beginning of line. 0 = move cursor to beginning of line. $ = move cursor to end of line. dd = delete current line. ciw = change in word (deletes current word and puts you into insert mode). v = visual mode (can select, move and copy words/lines). V = selects full line (to allow you to do same as above). . = repeat last action. 4j = go down 4 lines ([number][action]). C = change full line (deletes and puts into insert mode). w = move cursor to beginning of next word. e = move cursor to end of next word. f/ = move forward to the next found "/" ([action][text]). b = moves cursor to beginning of previous word. u = undo edit. x = delete 1 character infront of cursor. (same action as the DEL button). gg = move cursor to the top of the file. G = move cursor to end of the file. a = insert mode 1 character after cursor. A = insert mode at the end of the line. dw = delete word. df/ = delete from cursor to the next found "/" ([action][text]). I know I've missed a lot out but I've been using vim for many years now. These are commonly the most used bindings I'd imagine so good luck. Its a major learning process at the beginning- try not to give up before you've even begun. It ends up becoming one of the best decisions you'll ever make when it comes to programming. You'll never go back to any other text editor, hands down. To take it one step further. If you end up loving the whole not taking your hands off the keyboard idea (time waste grabbing that mouse). Look into using a tiling window manager on a linux distro such as i3wm and use a browser such as Qutebrowser made with the vim bindings in mind.
A few useful commands I’ve found when quickly editing multiple files/browsing is ZZ (shift+zz) which is equivalent to :wq and ZQ which is equivalent to :q!
Is there a way to refactor stuff using vim, like adding a parameter to a method? Navigate to declaration? Find usages? This is what you have to do very often on most real projects.
I personally never had an issue with manual transmission since that's how you're taught to drive a car in Europe. hell I had an issue trying to drive a automatic transmission because of the muscle memory
I think VIM it's iteresting, tryied it for a little bit... But there is just no point in spending all that time learning everything about it... Somethings are a pain to setup in Vim, debuging, testing, working with remote interpreters from docker containers.... I understand the appeal, just woldn't recomend it.
Vim is just a really efficent text editor, the IDE is the command-line itself. Comparing the feature-set of vim and VScode is like comparing atom and eclipse.
@@ChrisJones-rd4wb It might be efficient but to set it up for your projects, you have to do so much stuff. Plus, the process becomes harder on Windows since it doesn't come natively there. (P.S. people are allowed to use the text-editor that they prefer) (P.S. 2 : how is comparing vim to vscode like comparing atom to eclipse. Atom is a general purpose text editor which has some extensions for development while vscode is a full fledged ide with a debugger and everything)
@@tanmaydeshpande That's my point, Vim is a extendable general purpose text editor just like atom, its not an IDE. If you want too debug in vim, you open a new terminal and launch gdb.
6:23 are you doing something with smart light or smart outlet? Since the mitm attack is patched there is a different way to get the local key. If anyone would like to know, just ask me.
I just made the switch from vscode to vim like a couple of months ago and I feel like 10x fast. Thank god I made this shift pretty early in my career. Long live vim!
I'm still a noob at vim but it's really sweet for being able to be used in a terminal without requiring an X server or fancy desktop environment. I used it in a few of my programming videos for fun.
I learnt vim basics a few years ago. But at the end of the day I still preferred to use and setup vscode shortcuts to switch files go to lines and so on. Wasn't really my thing, I just use it for quick edits on remote servers
@@DeanG621 Yeah, the example shown in the video just reminds me why I don't use it for my everyday coding. It's cool to share the exp but it would have been really more appealing to show a second example showing how vim could be more useful/productive than a regular editor. I get that the purpose was to show a few shortcuts but I (and most people) would have been a lot faster on any other editor ( add autocomplete and it's done in a blink). So the only argument I keep from this video is: use vim because it's cool and you would look cool. But I would have preferred to see why it could be worth learning more about it than just basics and how it could increase one's productivity instead of just repeating it. Who knows maybe it would have convinced people like us for other use cases than just remote servers :)
@@DJBOOUBA most people that thinks vim is the better code editor definitely haven't fully discovered the features that their ide provided. I've been using VS Code not more than a year and I've been utilising the hot keys,extensions and other tools (live-collab/vcs/etc). I don't even touch my mouse during a 6-hour coding session (my corsair keyboard is also binded with macro functions to open other programs/desktop apps). Most videos I've found explaining why you should use vim is emphasising on the "keyboard navigation" feature as a "factor of productivity". I think most text editor or IDEs have that feature as well, so I don't see the clear benefit but other than to look "more experienced" or "hackerman " in a way.
I think Vs code with the vim extension is the best combination to use! (As already mentioned by a few other comments). 0:03 Also that wallpaper in the back looks cool! 😍 Where can I get it?
@@abhinavchavali1443 we are in 2020, and even if you are running a laptop from 10 years ago you should have 0 problems of smoothness using vscode with extensions.
I tried vim years ago but since I had no good intention to use it I didn't like it. But this month I was trying out vim since I can't use a mouse at work, weird I know. vim is insane, loved it.
It took me literally 1 hour to get used to the key bindings. Once you've got used to them you don't even want to use another text editor ever again. You will realise that the speed is in your fingers and latency comes From using a mouse.
Yeah, I'd say that there isn't really any reason to use vim over neovim anymore. Neovim just allows so much more things, especially since it's a client/server model which allows you to embedd neovim in stuff like your browser while keeping your existing config
im open to vim..but how the hell are you going to build an entire Flutter application...do you guys actually use vim for large scale projects..i.e, dozens and dozens of classes...a dozen different folders...I feel like I need VS code
Next Prediction: I'll be using GIMP from now and do my Editing work in Olive (maybe the best choice for future). I know it's unrealistic. Just predicting for fun.
love this! i was skeptical of vim at first but now i use it in terminal and install all the plugins in my IDE. So it has turned into cross platform keybindings independent of IDE :) macros are awesome for those times you are doing the same few keystrokes to edit a file. They are probably my favorite hit 'qq' then do your keystrokes once then 'q' again. enjoy :) Other favorites which I use a lot: - gg: go to top of the file - G: go to bottom - $: end of line - 0: beginning of line - "+p: paste clipboard - "+y: copy to clipboard - also ci works with anything that is "wrapping punctuation" (i.e. ` ' { [ etc....) These should get you going. i use all these on a day to day basis on top of the ones you used. Hope they help :)
you can use vi in bash and zsh if you put 'set -o vi' in your .bashrc or .zshrc file. By default you are in insert mode. There is no indication if you are in insert or normal mode. Also, it's not vim, it's vi, so e.g. you can't type di" to delete inside quotation marks
I personally still don't really see a reason to use Vim over vscode, I can do all vim actions/shortcuts twice, maybe trice as fast in vscode. I literally only use Vim whenever I'm stuck working in a terminal (e.g configuring things on a Linux server) but other than that it just handicaps my workflow
I mainly code on VS Code and used most of their default hot keys without having the need to touch the mouse (yes, I even use ctrl+arrow for scrolling). Serious question, should I try Vim, or just stick to using VS Code?
can I ask how you set up your vim for web development? I find myself missing stuff like live-server in vscode and stuff like that which is alot of hassle to setup in a terminal environment, but I might be wrong?
Hey Kalle! Why don't you make a Discord server? You have a great community, and it's easier to get help, and chat there, if you're not into moderating it or don't have time, I'm here to help, that is if you will start it in the first place. Maybe later, you could even learn a Discord bot development framework, and develop a bot for your server and make a video about it.
Instead of rebinding caps lock to escape I bound it to control and added ctrl + ; as the escape key in vim :). It's nice having the ctrl key in easy reach
Vim is great because it allows for quick changes from cli, however i wouldnt call it perferct and better than ide, good configured environment can even speed up work more than vim with auto includes, class finders, etc. In top of that vim doesnt allow for code highlights, so in my opionion is great for small quick changes from cli but not for real work
If anyone wants to see a netflix professional use only vim for development. Check out the primeagen on youtube and twitch. Favourite not commonly known keybinding in vim is ZZ - to write changes and exit right away