@@radioactivebob1 You're not required to use 100/100 of vim key bindings and commands. You're still be more productive with the basics than nothing. + Taking some time to learn something that will save you time/gives you advantages afterward is an investment, that's what you've probably done when switching from windows/macOs to GNU/Linux or from a DE to a minimal tiling windows manager
You can also use most, if not all, of the existing GUI-based editors and IDEs without touching the mouse: most of them support a large, powerful and configurable set of keyboard shortcuts (that I do not use...).
@@woouinluigh Well unless you have a bluetooth keyboard paired with a tablet or smartphone. Which I've used with tmux / vim a great deal. Actually Mosh + iOS Blink works very well with an unstable cellular connection while on a train. Mosh replaces SSH and provides a much more responsive feel on poor connections. mosh.org simple roaming with session state sync with extremely low latency and local echo so you are not waiting on SSH to catch up.
@@peterjansen4826 Graphical text editors and ide's have been feature equal with Vim and Emacs for decades. There's no feature reason to use Vim over Sublime, Atom, Geany or Kwrite.
Of all the examples that were given, I’d either never use it, or I can do it faster in sublime. I used Vim for 6 months and I still went back to Sublime. I think it just comes down to personal workflow preference
I think a mix of vim and Sublime could actually be a very good workflow. I do that with VSCode and I know there's a vim extension for Sublime. Why don't you give it a try
That's what I was going to say. Each time someone gives me an example supposed to show me Vim's superiority, I can come up with a simpler way to do the same thing in Sublime without having to memorize tons of keybindings and switch mode a bunch of times, and often it happens to be faster.
11:22 At that point you can just hit I" and that will do the job. Similarly, to add to the end of each line select in block visual mode, then hit $ and A". No need for all that command mode then normal mode trickery.
How have I been using Vim keybindings for almost 2 years and i didn't know about :ab that would have been beyond useful many times. Amazing video DT keep up the amazing content.
A few notes: - `g;` goes back to the last modification, while `` would be the last cursor position - to indent a paragraph, you can use `>ap` (`ap` is the paragraph text object) - to remove the `"` in this context : `vap :s/"//g` (select around paragraph then replace '"' with nothing, `g` to get every match in the line) Good work though, looking forward for more Vim vids !
Clouldn't agree more. Just discovered diff-mode editing, visual-block editing, macros, built-in functions like strchars() and getline() in custom mappings and the power of "very" magic regular expressions during the recent decade. For example, removing/adding those quote marks would be one thing I'd use regexp's for, rather than macros.
Hi ! A few more tips : Going back to the last cursor place - g; - but you can also browse your location stack with - C^O - (backward) and - C^I - (forward) Indent a whole paragraph (in your case here) : - >ip - (no need to count, and you can stay in normal mode - even less painful !) Adding quotes for each line : select lines, go in command mode and type - norm yss" - (which relies on tpope's vim-surround plugin) (6 less seconds wasted !) For the sudo trick, if you can't remeber it there's chrisbra's SudoEdit plugin which does this great - :SudoWrite - You can edit multiple files (vim file2 file2 file3), record macro like DT did here and apply it to each file ( - w | n - in command mode to write and go to the next file) With a shell you also can record your macro and do this : # for i in file1 file2 file3; do vim $i -c "norm @o" -c "wq"; done # (o is the name of my macro here) Thank's DT for these tips ! I hope mine are helping you too !
There is no need to reselect the same block again if you want to perform another command, '< and '> will remember the last selected region. And if you really want to select the same region again, just type gv and for changing the `o`ther end of the selection to fine-tune it, just press o If there was whitespace after the last character and you wanted to move the cursor there instead of the very end, there is also g_
I'm a relatively new vim user. I've passed the initial shock (that's my first modal editor) and the more I use it, the more I like it. On the positive side I love the combination between the vim + vimv in the case of bulk renaming. On the negative side I have a lot more to learn in order to properly use it with another keyboard layouts, which is not very easy if not configured correctly.
i’ve been using vim for years on a dvorak layout pretty much stock. by sheer nature of using vim as long as i have my vimrc has ballooned to be probably a couple hundred lines long but i try not to mess with the default bindings too much!
I feel so comfortable using Vim and I realized that I know only 0.01% of its features. To delete ending " instead of macros I prefer %s/"$//g, and I instead of doing "norm" in block mode I use "I", or "A" directly, I don't know if what I do works in all cases. Great vid!
That's why I don't understand why guys spend all this time learning Vim when they're never going to use most of it's features. It obvious most are just following the heard and doing what's cool. It's like the sudden popularity of tiling widow managers, it's a fad that will fade.
@@phillipmartin3910 Vim will be 30 years old this year, and vi goes back to the 70s. That's a pretty long fad. I've been using it as my main editor now for 6 years.
@@umka7536 Ah yes. I so hate when VS Code makes me press End to move all my cursors to the end of the line. Typing in %s/"$//g is so much faster and makes so much more sense.
Honestly the IDE's I'm using are all capable of selecting multiple rows, replacing words and swapping lines. If you're comparing Windows Editor to vim, it's obviously more capable of doing stuff. Haven't yet found a feature convincing me to learn vim.
I mainly just like vim's keybinds, they're quick and easy to access. Often you have the same editing power in your IDE of choice with vim bindings as in vim itself (some extensions even use vim as a backend).
You can define more robust keybind and commands with vim than any other editor. IDEs are only more useful when you're using their features like debugging with realtime memory information graphs. If you're just editing code then there's literally no reason to use an IDE.
I use just vim, but everytime I see someone speaking of advantages of vim, clearly they haven't spend a second loooking up the documentation of other editors. Every code editor has a lot of features like those of vim.
I mean not really. I use neovim on a daily basis as part of my school classes. I've run macros more times than I can count and features like that are simply unavailable in other editors. Sure there are extensions to do stuff like that but then the other editors are already so painfully slow in starting up
@@tanmaydeshpande Yeah, I mean, "a lot" of features, not all. Like, all (or most of) the stuff showed in this video can easily be done in vscode or sublime. But, for example, the integration between vim and the shell is something unique. Vim is awesome for a lot of reasons, but not because you can jump to a line or delete 3 words with a few keystrokes.
@@rogerpenrose1368 eh I think vim is powerful for that as well. Like in normal editors, you can scroll using the mouse or the pgup or pgdn buttons. In vim you don't need to touch anything apart from your home row for navigation. Simply press number+j or k and you jump so many lines at once. And with relative numbering it's even more easy to do stuff like that
Vs code can do cutting/pasting lines, moving lines up/down, navigating to the end/beginning of the document, selecting multiple lines at once, and regex search/replace. All without the mouse... I knew VIM had a hardcore following. It's good to know I'm not missing out with these specific examples of why it's so powerful.
He didn't seem to touch on text objects, which is a very powerful vim feature. The power of vim is also in its ubiquity; its gonna be there on any machine you ssh into and any container you enter into. VScode is excellent but I think the main advantages it has over pure vim is the built in debugger and some of the refactoring tools. You can pimp out vim to do pretty much everything vscode does, but the lack of the debugger is an issue
Sorry man but that's not the case . He's just showing a few percentage of vim capabilities on this video, he would need 10 hours to show what you can do with vim. It's not still one of the most popular text editor along devs ( 25/100 according to SO ) for nothing even in the GUI age. With coc.nvim we don't even need vscode anymore.
Hi Derek, love your work. I am fully sold on 'vim', however, I think its a bit disingenuous suggesting that find-replace can take minutes or hours. Even the most basic text editors provide find/replace. The macros feature is definitely a time-saver though. Good vid.
I've used Vim for a couple year, now using VSCode. Vim is great for navigating, selecting and manipulating text. Deep configuration and extending Vim was hard, even after a couple years. VSCode is very comfortable. Extensions mostly "just work". I really love the command palette.
coc.nvim make things "just works" ( even if I don't like that expression) too, without abandoning all the vim goodness not present on vscode ( even with VscodeVim )
What I love the most about VIM, is that is has unlimited depth. Literally every video I saw on VIM has this minor tips and tricks which you can incorporate into own workflow
After so many years using vim I don't know how but I am still learning new stuffs, amazing. I didn't know about abbreviations. Thank you for the content DT! Keep going!!
We received a 6000 page document that was supposed to be a spreadsheet, but it was sent in PDF. Worse that it was "Printed to PDF" which broke the columns up onto 3 different pages. it was a mess. I used a vim macro to solve this. It took me about 45 minutes create the macro and edit this document. learned something new here, I will have to use that !sudo tee % trick
20:04 if you do this a lot you can add it to your init.vim or vimrc just add the following "cmap w!! w !sudo tee > /dev/null %" and if you write :w!! and enter it will run this command, it has been in my config for many many years now and it just save me.
As a text editor, vim is great. But I save much more time with an IDE like the ones from Jetbrains when it comes to safe refactoring, debugging, code analysis, etc. I never have to leave the IDE to do anything. And you can even use vim key bindings in them.
One of the most useful tricks I like in vim is the ":%" function. I can search and replace portions of text using regular expressions. Example: :%s/apple/orange/g It will replaces all instances of "apple" for "orange" on the entire document. If you are expert in regular expressions, you can do a lot of things with this feature.
fyi, it's the s doing the heavy lifting, not % % is not a substitution function, it is a range specifying the entire file. you can use line numbers too for the range. s means substitute, and g means globally within a line (part of regex syntax) so for example to remove all quotes from lines 10-43: :10,43s/"//g
@@user-lb1ib8rz4h another trick that I like to use is to remove specific line using a pattern. :%/apple/d It removes any line containing the "apple" pattern. Sadly I'm not so good with regular expressions, but the :% function in vim is very useful.
I think instead of learning these new strange bindings I can just learn regular expressions syntax that is used almost everywhere, so I won't forget it, and with the help of these expressions I can do almost all these tricks in good regular text editor
@@lawrencedoliveiro9104 Actually, simple regular expressions are very easy. My point is that I as a programmer already know them at the level needed for searching in the text editor. I don't need to learn more vim's spells
I will probably end up learning vim anyway, but I find it a bit discoursging how almost everytime someone comes telling how vim is so superior to other programs and it will save you thousands of hours they end up giving some examples that could essily be done in typical programs just as fast, like the example about deleting the double quotes, I could do that in a couple seconds in any editor with multicursor, faster than using a macro. They are just as ignorant about standard editors as we are about Vim.
You can also select multiple lines holding alt and press end to move cursors to end of each line. I don't know how recording macros to do this is supposed to be superior
What I think about vim is that, the time it saves doesn't matter as much as the "flow" it gives u, allowing u to do as u think, and not fight the program.
What I have done is save it as a random file under /temp, then sudo mv. But yeah thats a much better solution Actually thats what I did in nano, I don't know how to save a file as something in vim. Time to duck it
@Henrique Borges True. Vim wasn't made for me. It was made for incredibly old and outdated operating systems, with weird and convoluted control schemes, and primitive input methods. As for me, i prefer efficiency and ease of use over stubborn nostalgia against all reason.
Most of the people commenting learning VIM is useless, a waste of time or hard. They didn't understand really the power of it. It's not just looking like a wizard or wining hours of work. Even tho that's what this title says. It's reliability, interopability and comfort for someone who pass alot of it's time on a computer. You don't need to use VIM or clones to profit. VIM shortcuts are a standard in the computer world since 50 years. You can be sure almost every serious computer programs (especially for development) got them integrated or via an extension. And once you know them you can use them everywhere or almost. I switched to Android development recently, in like 2 mins I was like at home after installing one extension in Android Studio. Even to navigate in a web browser. And for those who didn't understand what a modal editor like vim is. It does mean you don't have to learn thousands of commands. But just how the letters interact with each others. You learn a new keycharacter you can mix it with everything you already know. If you have learned that the keyword "c" stands for change, "i" for inside and "w" for word... Then "ciw" is to replace what is in a word, and if 2 mins later you understand that the keycharacter "d" stands for delete then you already know that "diw" will delete what is inside the word. "C" to change a whole line ? then "you know "D" will delete it. Intuitive and not hard like almost every non users says. And to be really honest what you will learn in the vim tutorial which is finished in 30 mins is already way more than enough to use it correctly. And once in a while you will discover a knew keycharacter. To finish almost all the sorcery you have seen there, could have been done way faster way simpler...
Learning vim is like going to the gym. You start off knowing it wont give you immediate results and its not gonna be a fun thing, but the more u use it the more effective/fast you re gonna be.
Had I begun with Linux five to ten years earlier I suspect I'd have been a hardcore vimmer. But today I don't have the time, interest or reason to learn a new text editor. I got some advice years ago: "Choose one text editor and learn it really, really well." _That_ is what will save hours of work. Vim is _one_ editor you can learn well, as is the JetBrains suite or probably emacs.
I still remember before I knew Vim doing archaic things like like highlighting text with the mouse, using the narrow keys to slowly navigate, etc. With Vim it's a completely new experience to text editing. And the best part about it, it's future proof. Vim has been around since the early 90s and Vim along with it's variants are still growing. Most modern text editors including sublime text, VSCode, Atom, etc. all have Vim plugins and/or packages. I'm still fairly new to Vim (been using it moderately for about 1 year) and still learning new tricks and shortcuts every day. Bonus points cause usually when peers see you use vim they are impressed or surprised. Cheers to Vim and all the Vim users out there!
I love the idea and power of VIM and vim clones, and I tried them at least 5 times in the past and in the end went back to my previous editor or whatever. It feels like you need a lifetime to learn the basics and then you discover a plugin that possibly improves your workflow and you need to relearn everything again. But it's true that you can (once you master it) do almost anything very fast. Useful video!!
The downside is that you have to remember a ton of shortcuts. It's not a problem if you use them regularly, but the rare ones take time to recall - it's easier and faster in other text editors (you just do it with the mouse or right-click for a context menu). Besides, I really need a color-picker and I have never managed to make it work reliably in vim.
Mostly you don't remember anything. They're just mnemonics mostly: Delete Inside Word: diw (it will delete the word where the cursor is inside) Select To
After having developed software for more than twenty years, and after having used all of the existing editor and IDEs (including Eclipse, NetBeans, SublimeText, Visual Studio Code, Code::Blocks, Qt Creator, Visual Studio, Atom, etc.), I still CANNOT understand what people see in VI and VIM (That I know and used). History declared a winner a long time ago and it was GUI-based software: it does not make any sense using your memory to store the keyboard shortcuts of CLI-oriented programs when you can have a menu and a sophisticated GUI at your fingertip. I do not even use line editors for configuring servers from remote, anymore. I just use the various "control panels" supplied by the host.
Ok DT, next time we have a patron talk I now have a new thing to task about besides the Gnome desktop, Defaults Matter, and Microsoft Windows. Because I really don't like Vim for my creative writing.
VSCode does everything mentioned in this video plus a ton more. That being said, I appreciate people that still use and maintain 30 year old software (40+ if you count vi).
One of my personal favorites that I use pretty much every day at work is vim's grep integration (or ripgrep in my case). Navigating large codebases is super fast if you just have a few keywords/patterns to feed into grep from vim and let it do it's magic, and then just have all the results in the quick fix list for easy access to the files/locations in the file(s).
That quote remove example in most editors: Drag select lines you want to remove quotes from. Use find/replace in selection quote with empty character. Hit enter. Literally takes 2 seconds. No need for a macro there.
Yes, I love how many actions can work from anywhere. Same with dd instead of having to go to the start or end of the line and then doing shift-home or shift-end and backspace.
Well yeah, that's literally with everything. You can save hours of getting from point A to B by driving instead of walking but that would mean you have to spend more time learning how to drive and making money to pay for the car. It doesn't mean it still isn't fast. Learning vim isn't difficult if you are above 8 years old.
@@luck3949 I never said that wasn't true. I'm saying that anything that increases efficiency can take time but that doesn't make it inefficient. Does that make sense to you?
Almost every editor nowadays are super customizable. After using VIM for a time i only found that if you get used to not touching the mouse it can become very usefull and comfortable, but also if i wanted to i can customize VS Code in a way that i dont need the mice too. I think it comes to a personal opinion of what you like most. Anyways knowing a bit of VIM comes very handy when working on multiple remote linux machines and you need to edit.
Remote + basically knowing vim key bindings gives you the ability to use any editor because most have vim extensions. Today Vscode is the hot product, a week ago it was atom, a month ago it was Sublime. You never know what the next "hot" thing would be, it's far more handy to know vim. + If you really dive into vim real capabilities no other text editor can compare tbh. Edit : And it's way faster than any Electron app, Vscode with large projects/files isn't close to neovim speed
Every single one of these functions work at least twice as fast on vscode though.. - Having to be the line above the one you're looking for sounds like a great feature! - Moving a line up or down would be faster but not with the example you gave. In vscode you can simple Alt + Arrow key to move it up or down one line at a time, this works with entire selections too. Having to write a line to move it one line is not faster at all. if it was 15-20+ lines then I'd maybe agree but simple cutting and pasting is faster. - Inserting or removing text from multiple lines. In vscode you simply Ctrl (shift on linux) + Alt + Arrow Key. Or even better, you can put a cursor at the end of each line by selecting the text you want to edit and simply press Alt + Shift + I (hit the Home key after if you want it to be at the start, or End to go back to the end of each line. ). No need to write your own scripts/macros and reinvent the wheel. The same way by having multiple cursors you can type in each of the lines, both at the start and the end, no need for a command. - Searching and Replacing text. A whole line of commands on Vim, Ctrl + Shift + H on vscode and simply press Shift + Enter afterwards to replace every instance of the search query, which both accept Regex aswell. - Creating abbreviations I have to agree is faster since you have to write it in json in vscode. But.. rather than pressing space, you press enter in vscode so it doesn't interfere with what you're writing and no need for a shortcut to NOT expand it. - VScode has an integrated terminal and you can open as many instances as you want, no need to enter command mode. tl;dr If you had to write your code inside the terminal then sure Vim is your best friend, but since you tried to throw shade on vscode at the end of the video, Vim has no chance. Every other text editor is much, faster and easier to learn.
Also the indenting can be done by selecting text, and pressing tab. I think his examples were a bit poor. I can see myself using a VSCode extension to emulate some of the VIM keybindings (there is also the NeoVim VSCode integration), so that I can easily select text without having to use my mouse or constantly press control+shift+(right or left arrow) to select a bit of text. In Vim Mode, you would use v to enter visual mode, f and then the character you want to select it to, pressing semicolon as many times as necessary. In normal text editors, holding down control and shift while pressing the arrow keys is quite onerous to select text. Most editors are implementing Vim-like key bindings. There is PSReadline for PowerShell, Obsidian, VSCode as I mentioned earlier through a popular extension, Emacs through Evil mode (Spacemacs too), event Sublime has an extension for it. The problem I see with normal text editors is that as soon as you start shift-selecting text, you cannot search for text that you want end the selection with. Vim (and its variants) has an insert and normal mode to get around this, and in Emacs you can set a mark and then move the cursor to the desired position.
I love it when I get to learn new things! :) I used vim for my NaNo the last couple years and am using it for most of my writing. I've learned to use folding to organize notes and hide text when I don't want to be distracted. xp in normal mode is my favorite quick fix for transposed characters. Yesterday, not knowing how to navigate multiple edit histories just about bit me in the ass (thank the gods I'd saved just before screwing the pooch). I really need to practice that. One last thing. I don't use vim to save time or be efficient. I use it because it's comfortable and lets me work in peace. The time/efficiency aspect is just icing on the cake.
From my experience Vim is just another editor. It has some powerful editing mechanisms, but most of them (or maybe all of them) are present in other editors which are much easier to use.
10:26 you can do that easily in vscode using multicursor. Just go to the beginning of line 11 and then shift+Alt+LMB on the beginning of line 42. Now press Del to remove all opening quotes. To remove closing quotes just press End Backspace. End key just moves every cursor to its end of line. I started learning vim today to maybeeee replace vscode in the future but this feature is so good and I use it so often I might not switch to vim as my main editor ever.
Whatever works for you the best mate. That was not the fastest way to make that edit. Just a simple example. The vim way of doing that is different than the vs code way but I prefer the vim way and it's very fast. Also I can edit my macro with a few key strokes and reuse it for something else without having to do the other selections again. And if your really in love with that there is a vim plugin for it. But again it's personal preference and the vim way is still faster. That being said. Vscode users who knows there keybindings can also get it done. Less the tool and more the person. Whatever works 🎩👍 code on!
Vim is the way too go, use it full time now, learning new things all the time. I think vim + terminal is the real strength, no way vscode/webstorm can compete then.
I am using vim extensions for vscode so I have the best in both worlds, neovim features and vscode features at the same time, and I will probably switch to this when it is ready: onivim.io/
@@katech6020 do you have the tmux experience? Can you executive terminal commands inside vscode? Can you modify git aliases? And how "light" is your vscode?
I really wanna use neovim or vim but its to difficult to config and the docs is seems like they assume u to have knowledge in programming language already, and im beginner so i use vscode with neovim keybind extension,
@@enricosevenfoldism I'm 30 and have been in the "insert" mode everyday between 6 year's of age and 30, ofc it feels "easier" initially, but that's only a reflection of practiceed time, you need too switch your mindset to vim. Make it you'r way of life, i.e. add the vimium plugin to your browser..
@@samu-1337 I use code-oss and it has an integrated terminal for commands, for extension I just have ones that make me work faster or improve things, I installed around 12. for light it is an electron app so you know what to expect. for git, it has a lot of features that I use a lot since I am a front end web dev, and I need to work with other devs many times and push code and manage conflicts...
(vscode) 1. moving lines of text well, you can use alt+up/down for moving lines, ctrl+shift+arrow to select a word shift+alt+up(or down) would make another cursor abve, then you can ctrl+l to select a line. And now you 10 lines with 12 keystrokes. 2. looking for text and then moving: ctrl+f and alt+arrow. If you want to grab the next line also alt+shift+up(down)
Maybe I don't understand what you're doing, but you don't need to type colon before slash to search. In normal mode, you can simply type the slash key. Done this way, it will search from the beginning of the document.
I am amazed that you learned vim, considering you work in retail. I only rarely need to edit a config file and when I do, I get by with nano. To me, only programers should learn vim and everyone else will not save enough time to justify learning vim
@@hil449 ayo i wrote that comment a year ago, funnily enough i started using vim myself. It's actually not too hard, but you do have to dedicate a week or so to learning and getting used to it
I've been using vim (originally vi) for so long that I have a hard time teaching someone how to use it since it's my fingers that know what to do, not my brain! In any case, there's one thing I've occasionally done in vim that I think may be much more time consuming in a lot of other editors, namely editing on the basis of columns. Suppose, for example in the file that was being edited, you wanted to capitalize the first letter of every one of those array elements. Just block select them and type ~. It's also possible to, say, block select the bottom half of the list and then cut and paste it as a second column next to the first half of the list. That ability to invoke an external tool to process (a portion of) your file via the :! construct is extremely powerful. Sorting is an obvious example but I've also used that technique to convert a binary file into a text representation of the contents, do my hacking, then covert back to binary, i.e., I don't need a separate hex editor.
11:15 DT, that is actually even easier than you did it. You can directly hit "I" (so, shift + i) when visually selecting various lines, and when you do it, even if it SEEMS that what you type next is only being applied to the first line, actually, when you hit escape it will apply it to EVERY line that you had selected! So, no need for ": norm I". Just "I" after selecting and directly type or delete what you want to change at the beginning of those lines!
To remove the double quotes from the end of the line can be done like this :10,42s/"$//g $ means end of line. For the beginning of the line, use ^. To add a quote to the begining of lines 10-42. :10,42s/^/"/g. The Ending is :10,42s/$/"/g
3 ปีที่แล้ว +1
Kate can do anything Vim can, just as fast, and it's easy for newbies to get into. That said, Vim is still fantastic.
Use it for years now. If you remember even some basic stuff, lot of things gets done quicker. I liked it in partiular, for replacing with regular expressions (even if I forget them fast / don't use too often). Also saves time on hand moves from keyb. to mouse and back... ;)
Thanks DT: Started using vim a year ago. It's all I use now unless I have a bunch of files to modify in different directories, copying and pasting between them. In those cases, like using Atom. Atom has many similar short cuts like vim. I know we can still use vim to edit multiple files; however, have not taken the time to master using vim in that capacity. Vim gets installed on every PC I work on, can't even remember the last time I installed nano.
Good info! I've been using Vim for almost 2 years now, and it's been amazing! Learning new techniques is never-ending, though. I still feel like such a N00b. By the way, I don't know why, but typing a line number + gg takes me to that line number, whether it's up or down. I used to switch between gg and G, but I don't feel I have to anymore.
I can see how the keybinds will save time. I use the old Blender (2.79) still because I memorized all of the important keysbinds, I am lighting fast at it. I suppose I could upgrade and reconfigure the newer versions but I use it for gamedev. A model is a model at the end of the day, doesn't matter how fancy the program is. What is important is your workflow. Same goes for code!
Good video on vim, but I feel most vim power users do not realize how powerful the normal editors today are. I am going to take the example of Intellij because that is what I use. 1. Moving lines around: Is that something you do in programming? Moving individual lines around. That would mess with your variable declarations etc. Anyway, this is still very easy in Intellij. I can do it using Ctrl+Shift and up/down arrow. But many times, I am actually moving entire functions around (sometimes you want all your public functions together and want to move that one private function down after all the other public methods. Even there, just take your cursor to the function declaration, and use the same Ctrl+Shift and up/down arrow to move the entire functions around. Much easier. How can that be done in vim? What extra plugins or macros do you need for that? 2. removing the quotes from the start and end: This one is embarrassingly easy; in fact easier than his macro. Just go to column selection mode using Alt+Shift+Insert and move the cursor t all the lines with leading quotes (just like he did in the visual mode_ and press Delete. Now removing the end quotes is even easier and you don't need any weird macros. Just press End and the cursor will go to the end of each line and then press Backspace. Boom, done in 2 seconds versus his 10 seconds and either he has never used any other editor in his life or you are being disingenuous when you say it will take minutes. Lol. 3. Adding the double quote at the start of every line: Notice how he uses a completely different set of commands to do that. In Intellij it is the same consistent column mode - go to Ctrl+Shift+Insert, move the cursor to the lines and then simply type ". Adding the ending quote seemed painful because he has to type that command again. But in Intellij, you do not lose the column editor mode, if you use it one. You remain in that mode and just press End to get to the end of each line. Time saved vs vim. 4. Find replace but being able to choose a different word every time: Neat trick. I have to find out how to do that in Intellij. You can certainly do that by replacing the "replace" text in Find+Replace every-time but I think it will be more tedious that the vim example. But this seems like a really contrived example, In my 12 years of programming in the industry, I have never had to use it like this. Most time I want to do a simpler find and replace (example variable names, method names). These things are of course very easy in Intellij with its much superior refactoring support across multiple files, modules etc. It will even suggest if I want to update the name of the test methods if applicable and in most cases I do need to. Good example, but never needed to do this. 5. Abbreviations: this is just Intellij macros. Like typing "sout" and then Ctrl+Space to expand this into System.out.println. Even better because you get auto-complete when you type "so". And you can also add your own more complex macros but I have rarely needed to as the default ones are powerful enough. 6. Shell commands: Intellij comes with a terminal that you can launch right below the main editor. 7. Change writable status: This one requires a mouse (File -> File properties -> Make File Writable, I will give you that. But most of the times I am working on a project directory and all files are writable. I guess you encounter this more in vim because we use it to change random one-off files in some server. That makes more sense to me. Overall, not powerful enough or compelling enough to overcome the learning curve for software development IMO. I completed 12 years of programming in my job and I have mostly done Java. In these 12 years, I think I have really tried learning vim at east 3 times spending at least a month in each attempt. I have never managed to get over the hump of the initial learning curve mainly because I didn't see the value of the editor in my profession. I can do the basic stuff like search/replace, explore production logs etc but I still don't see why I would use this as my main IDE replacement. Even if I could get to a stage where I am a really good at editing text, for me, typing/editing has never been my main bottleneck. Most of the time I am staring at the code, mentally linking it to the rest of the project, thinking about the data structures, interfaces, seeing how if I change something breaks compilation in some other file/module etc. When it comes to changing text, I am never really editing text, I am refactoring, which is a big difference for me. For instance, I am never playing with lines/words - I am working with methods, expressions, classes and their hierarchy. A common refactoring would be to "move this method to its parent class" or something like "extract this expression that I am passing to a method call into a local variable and also replace it with the new local variable in the two other places where I am reevaluating the same expression needlessly; oh and also assign a good name for the variable based on the type/expression context and also immediately give me the control back so I can simply type a different variable name if I feel the default you assigned is not good enough" - this entire refactoring is one command Ctrl+Alt+V in Intellij. How will I do these simple refactoring tasks in vim which does not have such deep understanding of what the text represents? Things that I like about vim: it is everywhere. It is really performant and I never have trouble opening GBs of log files in vim. No IDE I know will handle that. I am not trying to insult anyone; in fact I do want to learn vim and get really better at it. Why wouldn't I if it helps me be more effective in my job? I am not married to any IDE nor do I hold any stock of any IDE company. I really admire the folks which have shown the dedication to learn this tool and get so much better at it but I could never convince myself if it is for me and is worth the effort to spend months learning it.
Switching text editors is such a pain to retrain the muscle memory. There is so much inertia behind the use of VIM for people coming to Linux today it's really the only good choice. When I started using Solaris back in the very early 90s Emacs was in more common use in my part of the country (before TH-cam of course). Now Emacs doesn't seem to have the steam it used to. Personally the Joe editor has been my bread and butter for such a very long time. I've curated my own way of doing things and tried several times to join the VIM tribe and just can't because of muscle memory and a lack of will to fight against it, lol. :)
It just sounds like DT hasn't spent any time in any modern text editor. I'd really like to have a faceoff between Vim and Subilme/VSCode where we are given an editing task and are timed, to debunk those false "vim saves hours of work" claims. I think 8:59 best proves my point, but any of the examples in this video are easier and faster to do in a modern text editor than in vim. Do yourself a favor and learn modern text editors which aren't notepad or notepad++. You'll save hours of work compared to vim. (yes I know vim including advanced features. yes I am subscribed)
Sublime really lives up to its name. Been using it for years and never looked back. The only times I use VSCode is when I need proper code completion (e.g. when learning a new language or framework), since that's where sublime is a kinda lacking, in my experience, and it's usually pretty damn good in VSCode. SublimeMerge also seems pretty damn good, I might add. Haven't used it much yet, but it's been impressing me. (Also, SublimeText and SublimeMerge have surprisingly low memory and CPU footprints. This is great if you're on a potato, like I am.)
The problem with the above tools mentioned is they are not included by default everywhere. The reason vi/vim is so important. At my work we have many systems with many different OSes most of the systems are closed so no internet access/no permission to install anything. So vi/vim is what you use. For example we had DEC ALPHA with Tru64 with FDDI network. It has vi so does RHEL and most if not all linux distros.
Replacing lines in text is easy with sed as well. I often use this command :%s (for replacing words) Then you place a word (or a pattern) and specify the word to replace it with. And After that just say "do this globally, but let me check before you do ! " like this :%s/cat/kittie/gc This will find every "cat" word, highlight it and wait for you to press 'y' or 'n' (yes or no). Hint: When you're trying to replace words that include '/', simply use some other delimiter. For example :%s?/etc?/home?gc
:s is for replacement, not :%s % is the range to replace on (entire file) but you can restrict it to only certain lines like :10-43s for example. there's other ranges mentioned in the docs
Nice tutorial, thanks ;) Note that if you want to indent (unindent) multiple lines from the command line, you can also use this syntax :10,10+(the number of lines you want to indent)>
I think learning a new programming language is easier than using the editor
False I need to go bathroom, lol
@@scoutbro9034 of course you can execute a macro and go to bathroom..
@Myungsoo Ya.. they must make a vim OS. Being an editor is a shame..
the fact you have to learn and reseach how to use this editor is a big killer for me, just not worth it.
@@radioactivebob1 You're not required to use 100/100 of vim key bindings and commands. You're still be more productive with the basics than nothing.
+ Taking some time to learn something that will save you time/gives you advantages afterward is an investment, that's what you've probably done when switching from windows/macOs to GNU/Linux or from a DE to a minimal tiling windows manager
> Has relative line numbers enabled
> Still does the math to calculate lines
is this 4chan
@@QW3RTYUU Yes 🙂
@@QW3RTYUU No this is Patrick.
@@alejomakevids HAHAHA XDD SO FUNNY meme from 2016
@@mariocamspam72 imagine typing how you laugh
I like how genuine dt is, when he makes a mistake he doesn´t edit it out, he shows himself learning it along with us
What mistake?
I appreciate the genuineness, but it does create friction as I absorb and learn
Not having to touch your mouse to use a text editor is underrated. Vim is great for laptops!
You can also use most, if not all, of the existing GUI-based editors and IDEs without touching the mouse: most of them support a large, powerful and configurable set of keyboard shortcuts (that I do not use...).
Its good for desktops too.
It was a nightmare on smartphones though...
still, not much worse than anything else on a smartphone
@@woouinluigh Well unless you have a bluetooth keyboard paired with a tablet or smartphone. Which I've used with tmux / vim a great deal. Actually Mosh + iOS Blink works very well with an unstable cellular connection while on a train. Mosh replaces SSH and provides a much more responsive feel on poor connections. mosh.org simple roaming with session state sync with extremely low latency and local echo so you are not waiting on SSH to catch up.
@@peterjansen4826 Graphical text editors and ide's have been feature equal with Vim and Emacs for decades. There's no feature reason to use Vim over Sublime, Atom, Geany or Kwrite.
Of all the examples that were given, I’d either never use it, or I can do it faster in sublime. I used Vim for 6 months and I still went back to Sublime. I think it just comes down to personal workflow preference
Copy / Pasting a piece of my comment: "IMHO with the introduction of multi-cursor editors it's time to move on."
@@paolo.iulita Uh, vim can do that. So.
I think a mix of vim and Sublime could actually be a very good workflow. I do that with VSCode and I know there's a vim extension for Sublime. Why don't you give it a try
That's what I was going to say. Each time someone gives me an example supposed to show me Vim's superiority, I can come up with a simpler way to do the same thing in Sublime without having to memorize tons of keybindings and switch mode a bunch of times, and often it happens to be faster.
same
11:22 At that point you can just hit I" and that will do the job. Similarly, to add to the end of each line select in block visual mode, then hit $ and A". No need for all that command mode then normal mode trickery.
you can also use block visual mode with ctrl+v and then hit shift+i and it will insert everywhere
you can also use a regex.
That same method could've been used to delete (x) the ” at the end of the line with a comma.
How have I been using Vim keybindings for almost 2 years and i didn't know about :ab that would have been beyond useful many times.
Amazing video DT keep up the amazing content.
nnoremap :move +1
nnoremap :move -2
alt+up/down to move the current line vertically in a classic way
vnoremap :move '>+1gv=gv
vnoremap :move '
A few notes:
- `g;` goes back to the last modification, while `` would be the last cursor position
- to indent a paragraph, you can use `>ap` (`ap` is the paragraph text object)
- to remove the `"` in this context : `vap :s/"//g` (select around paragraph then replace '"' with nothing, `g` to get every match in the line)
Good work though, looking forward for more Vim vids !
Most vim videos have the same info. But I actually learned something new in the video
There's so much to it. There's always more to learn!
Clouldn't agree more. Just discovered diff-mode editing, visual-block editing, macros, built-in functions like strchars() and getline() in custom mappings and the power of "very" magic regular expressions during the recent decade. For example, removing/adding those quote marks would be one thing I'd use regexp's for, rather than macros.
After all it is all you need...
When you have to go through many videos to learn how to edit text
@@RzariRzari optimization baaabyyyy
Feels like learning Regex with extra steps.
yes
You must mean when NOT using VIM, I hope...
Hi !
A few more tips :
Going back to the last cursor place - g; -
but you can also browse your location stack with - C^O - (backward) and - C^I - (forward)
Indent a whole paragraph (in your case here) : - >ip -
(no need to count, and you can stay in normal mode - even less painful !)
Adding quotes for each line :
select lines, go in command mode and type - norm yss" - (which relies on tpope's vim-surround plugin)
(6 less seconds wasted !)
For the sudo trick, if you can't remeber it there's chrisbra's SudoEdit plugin which does this great - :SudoWrite -
You can edit multiple files (vim file2 file2 file3), record macro like DT did here and apply it to each file ( - w | n - in command mode to write and go to the next file)
With a shell you also can record your macro and do this :
# for i in file1 file2 file3; do vim $i -c "norm @o" -c "wq"; done # (o is the name of my macro here)
Thank's DT for these tips ! I hope mine are helping you too !
There is no need to reselect the same block again if you want to perform another command, '< and '> will remember the last selected region. And if you really want to select the same region again, just type gv and for changing the `o`ther end of the selection to fine-tune it, just press o
If there was whitespace after the last character and you wanted to move the cursor there instead of the very end, there is also g_
I'm a relatively new vim user. I've passed the initial shock (that's my first modal editor) and the more I use it, the more I like it. On the positive side I love the combination between the vim + vimv in the case of bulk renaming. On the negative side I have a lot more to learn in order to properly use it with another keyboard layouts, which is not very easy if not configured correctly.
i’ve been using vim for years on a dvorak layout pretty much stock. by sheer nature of using vim as long as i have my vimrc has ballooned to be probably a couple hundred lines long but i try not to mess with the default bindings too much!
I feel so comfortable using Vim and I realized that I know only 0.01% of its features.
To delete ending " instead of macros I prefer %s/"$//g, and I instead of doing "norm" in block mode I use "I", or "A" directly, I don't know if what I do works in all cases. Great vid!
:11,+25 norm 0x$x
That's why I don't understand why guys spend all this time learning Vim when they're never going to use most of it's features. It obvious most are just following the heard and doing what's cool. It's like the sudden popularity of tiling widow managers, it's a fad that will fade.
@@phillipmartin3910 Vim will be 30 years old this year, and vi goes back to the 70s. That's a pretty long fad.
I've been using it as my main editor now for 6 years.
@@phillipmartin3910 Because you want to be efficient and non-distracted. VIM boosts my productivity.
@@umka7536 Ah yes. I so hate when VS Code makes me press End to move all my cursors to the end of the line. Typing in %s/"$//g is so much faster and makes so much more sense.
Thanks DT. Vim is a powerful editor; I have used it for years. The better you know it, the more time you can save. Great job on the video.
Honestly the IDE's I'm using are all capable of selecting multiple rows, replacing words and swapping lines. If you're comparing Windows Editor to vim, it's obviously more capable of doing stuff. Haven't yet found a feature convincing me to learn vim.
I mainly just like vim's keybinds, they're quick and easy to access. Often you have the same editing power in your IDE of choice with vim bindings as in vim itself (some extensions even use vim as a backend).
You can define more robust keybind and commands with vim than any other editor.
IDEs are only more useful when you're using their features like debugging with realtime memory information graphs.
If you're just editing code then there's literally no reason to use an IDE.
Can your IDE edit multiple configurations from one?
@@iskamag Who cares?
@@christophernuzzi2780 I do, it makes my life so much easier.
I use just vim, but everytime I see someone speaking of advantages of vim, clearly they haven't spend a second loooking up the documentation of other editors.
Every code editor has a lot of features like those of vim.
I mean not really. I use neovim on a daily basis as part of my school classes.
I've run macros more times than I can count and features like that are simply unavailable in other editors.
Sure there are extensions to do stuff like that but then the other editors are already so painfully slow in starting up
@@tanmaydeshpande Yeah, I mean, "a lot" of features, not all. Like, all (or most of) the stuff showed in this video can easily be done in vscode or sublime. But, for example, the integration between vim and the shell is something unique. Vim is awesome for a lot of reasons, but not because you can jump to a line or delete 3 words with a few keystrokes.
@@rogerpenrose1368 eh I think vim is powerful for that as well. Like in normal editors, you can scroll using the mouse or the pgup or pgdn buttons.
In vim you don't need to touch anything apart from your home row for navigation.
Simply press number+j or k and you jump so many lines at once.
And with relative numbering it's even more easy to do stuff like that
@Tanmay Deshpande Yeah... this is an advantage...
@@tanmaydeshpande bruh you are the same guy on some other channel saying "I don't know What is this fuss about Vim" lol
Vs code can do cutting/pasting lines, moving lines up/down, navigating to the end/beginning of the document, selecting multiple lines at once, and regex search/replace. All without the mouse... I knew VIM had a hardcore following. It's good to know I'm not missing out with these specific examples of why it's so powerful.
He didn't seem to touch on text objects, which is a very powerful vim feature. The power of vim is also in its ubiquity; its gonna be there on any machine you ssh into and any container you enter into. VScode is excellent but I think the main advantages it has over pure vim is the built in debugger and some of the refactoring tools. You can pimp out vim to do pretty much everything vscode does, but the lack of the debugger is an issue
Sorry man but that's not the case . He's just showing a few percentage of vim capabilities on this video, he would need 10 hours to show what you can do with vim.
It's not still one of the most popular text editor along devs ( 25/100 according to SO ) for nothing even in the GUI age.
With coc.nvim we don't even need vscode anymore.
Hi Derek, love your work. I am fully sold on 'vim', however, I think its a bit disingenuous suggesting that find-replace can take minutes or hours. Even the most basic text editors provide find/replace. The macros feature is definitely a time-saver though. Good vid.
I see no reason why I should change my text editor...
I've used Vim for a couple year, now using VSCode.
Vim is great for navigating, selecting and manipulating text.
Deep configuration and extending Vim was hard, even after a couple years.
VSCode is very comfortable. Extensions mostly "just work". I really love the command palette.
coc.nvim make things "just works" ( even if I don't like that expression) too, without abandoning all the vim goodness not present on vscode ( even with VscodeVim )
@@heroe1486 only issue coc.nvim is slow as hell because it uses node :( such a shame
We got LSP and treesitter boys. The future is bright
What I love the most about VIM, is that is has unlimited depth. Literally every video I saw on VIM has this minor tips and tricks which you can incorporate into own workflow
Meh " but [nano,atom,sublime] can do EVERYTHING vim does faster and in a more intuitive way "
Used Vim for a long time, but vscode is just better for my work. Best thing microsoft did.
You can emulate Vim in vscode. So definite win there....
The way you pronounce "Vim" is amazing
Vyoom
Viəm
After so many years using vim I don't know how but I am still learning new stuffs, amazing. I didn't know about abbreviations. Thank you for the content DT! Keep going!!
We received a 6000 page document that was supposed to be a spreadsheet, but it was sent in PDF. Worse that it was "Printed to PDF" which broke the columns up onto 3 different pages. it was a mess. I used a vim macro to solve this. It took me about 45 minutes create the macro and edit this document. learned something new here, I will have to use that !sudo tee % trick
20:04 if you do this a lot you can add it to your init.vim or vimrc just add the following "cmap w!! w !sudo tee > /dev/null %"
and if you write :w!! and enter it will run this command, it has been in my config for many many years now and it just save me.
As a text editor, vim is great. But I save much more time with an IDE like the ones from Jetbrains when it comes to safe refactoring, debugging, code analysis, etc. I never have to leave the IDE to do anything. And you can even use vim key bindings in them.
One of the most useful tricks I like in vim is the ":%" function. I can search and replace portions of text using regular expressions. Example:
:%s/apple/orange/g
It will replaces all instances of "apple" for "orange" on the entire document. If you are expert in regular expressions, you can do a lot of things with this feature.
fyi, it's the s doing the heavy lifting, not %
% is not a substitution function, it is a range specifying the entire file. you can use line numbers too for the range. s means substitute, and g means globally within a line (part of regex syntax)
so for example to remove all quotes from lines 10-43:
:10,43s/"//g
@@user-lb1ib8rz4h another trick that I like to use is to remove specific line using a pattern.
:%/apple/d
It removes any line containing the "apple" pattern.
Sadly I'm not so good with regular expressions, but the :% function in vim is very useful.
I think instead of learning these new strange bindings I can just learn regular expressions syntax that is used almost everywhere, so I won't forget it, and with the help of these expressions I can do almost all these tricks in good regular text editor
Quoth Jamie Zawinski: “A programmer has a problem, and thinks: “I know-I’ll use a regular expression to solve it”. Now they have _two_ problems.”
@@lawrencedoliveiro9104 Actually, simple regular expressions are very easy. My point is that I as a programmer already know them at the level needed for searching in the text editor. I don't need to learn more vim's spells
@@vitiok78 It’s not either/or.
@@vitiok78 you can use regex in vim too lol
:10,43s/"//g
would've removed all the quotes in those specified lines too
I will probably end up learning vim anyway, but I find it a bit discoursging how almost everytime someone comes telling how vim is so superior to other programs and it will save you thousands of hours they end up giving some examples that could essily be done in typical programs just as fast, like the example about deleting the double quotes, I could do that in a couple seconds in any editor with multicursor, faster than using a macro.
They are just as ignorant about standard editors as we are about Vim.
You can easily swap lines in VSCode with alt+arrow key
i have that shortcut on my vim config
You can also select multiple lines holding alt and press end to move cursors to end of each line. I don't know how recording macros to do this is supposed to be superior
@@radol oh really? How about selecting 2000 lines? Trust me, I've done that in sublime a couple years ago lmao if only I had knew vim
@@maybeanonymous6846 how?? 🤔
@@hil449 to select all of them hold alt then press page down.
What I think about vim is that, the time it saves doesn't matter as much as the "flow" it gives u, allowing u to do as u think, and not fight the program.
i learnt vim just little back. very good editor
Must be one of the most practical and easy to watch overviews of Vim out there on TH-cam! Great content as usual DT. Many thanks.
that last command will save me hours of editing /etc config files, thanks dt
What I have done is save it as a random file under /temp, then sudo mv. But yeah thats a much better solution
Actually thats what I did in nano, I don't know how to save a file as something in vim. Time to duck it
The right title should be "Vim can save you seconds of works in a day"
@Henrique Borges aka other text editors save you much more than a couple hours.
@@alexisk1615 Only in the first months. Then it pays off immeasurably
... if you're coming from Notepad.
@Henrique Borges True. Vim wasn't made for me. It was made for incredibly old and outdated operating systems, with weird and convoluted control schemes, and primitive input methods. As for me, i prefer efficiency and ease of use over stubborn nostalgia against all reason.
@Henrique Borges As expected, you're still living in 2010. We have VS Codium here in 2021.
Most of the people commenting learning VIM is useless, a waste of time or hard. They didn't understand really the power of it. It's not just looking like a wizard or wining hours of work. Even tho that's what this title says. It's reliability, interopability and comfort for someone who pass alot of it's time on a computer.
You don't need to use VIM or clones to profit. VIM shortcuts are a standard in the computer world since 50 years. You can be sure almost every serious computer programs (especially for development) got them integrated or via an extension. And once you know them you can use them everywhere or almost.
I switched to Android development recently, in like 2 mins I was like at home after installing one extension in Android Studio. Even to navigate in a web browser.
And for those who didn't understand what a modal editor like vim is. It does mean you don't have to learn thousands of commands. But just how the letters interact with each others.
You learn a new keycharacter you can mix it with everything you already know. If you have learned that the keyword "c" stands for change, "i" for inside and "w" for word... Then "ciw" is to replace what is in a word, and if 2 mins later you understand that the keycharacter "d" stands for delete then you already know that "diw" will delete what is inside the word. "C" to change a whole line ? then "you know "D" will delete it. Intuitive and not hard like almost every non users says. And to be really honest what you will learn in the vim tutorial which is finished in 30 mins is already way more than enough to use it correctly. And once in a while you will discover a knew keycharacter.
To finish almost all the sorcery you have seen there, could have been done way faster way simpler...
Why use vim when you can use feature rich nano.
Why use nano when you can use minimal Ed
@@alephanull1953 why use ed when you can simply write code in binary on paper
It takes more time/keystrokes and remembering than simple vs-code multi-cursor approach. But it seems more powerful.
Learning vim is like going to the gym. You start off knowing it wont give you immediate results and its not gonna be a fun thing, but the more u use it the more effective/fast you re gonna be.
Had I begun with Linux five to ten years earlier I suspect I'd have been a hardcore vimmer. But today I don't have the time, interest or reason to learn a new text editor.
I got some advice years ago: "Choose one text editor and learn it really, really well." _That_ is what will save hours of work. Vim is _one_ editor you can learn well, as is the JetBrains suite or probably emacs.
I still remember before I knew Vim doing archaic things like like highlighting text with the mouse, using the narrow keys to slowly navigate, etc.
With Vim it's a completely new experience to text editing. And the best part about it, it's future proof. Vim has been around since the early 90s and Vim along with it's variants are still growing. Most modern text editors including sublime text, VSCode, Atom, etc. all have Vim plugins and/or packages.
I'm still fairly new to Vim (been using it moderately for about 1 year) and still learning new tricks and shortcuts every day. Bonus points cause usually when peers see you use vim they are impressed or surprised.
Cheers to Vim and all the Vim users out there!
I love the idea and power of VIM and vim clones, and I tried them at least 5 times in the past and in the end went back to my previous editor or whatever. It feels like you need a lifetime to learn the basics and then you discover a plugin that possibly improves your workflow and you need to relearn everything again.
But it's true that you can (once you master it) do almost anything very fast.
Useful video!!
I’ve been using vim for past 20 years and never used abbreviations command! Vim multiple files opened as buffers can do wonders.
13:05 you can use gv to use the last selection again
The downside is that you have to remember a ton of shortcuts. It's not a problem if you use them regularly, but the rare ones take time to recall - it's easier and faster in other text editors (you just do it with the mouse or right-click for a context menu).
Besides, I really need a color-picker and I have never managed to make it work reliably in vim.
Mostly you don't remember anything. They're just mnemonics mostly:
Delete Inside Word: diw (it will delete the word where the cursor is inside)
Select To
After having developed software for more than twenty years, and after having used all of the existing editor and IDEs (including Eclipse, NetBeans, SublimeText, Visual Studio Code, Code::Blocks, Qt Creator, Visual Studio, Atom, etc.), I still CANNOT understand what people see in VI and VIM (That I know and used). History declared a winner a long time ago and it was GUI-based software: it does not make any sense using your memory to store the keyboard shortcuts of CLI-oriented programs when you can have a menu and a sophisticated GUI at your fingertip. I do not even use line editors for configuring servers from remote, anymore. I just use the various "control panels" supplied by the host.
I agree 100%
Ok DT, next time we have a patron talk I now have a new thing to task about besides the Gnome desktop, Defaults Matter, and Microsoft Windows. Because I really don't like Vim for my creative writing.
VSCode does everything mentioned in this video plus a ton more. That being said, I appreciate people that still use and maintain 30 year old software (40+ if you count vi).
"plus a ton more" as if he mentioned everything you can do in vim
One of my personal favorites that I use pretty much every day at work is vim's grep integration (or ripgrep in my case). Navigating large codebases is super fast if you just have a few keywords/patterns to feed into grep from vim and let it do it's magic, and then just have all the results in the quick fix list for easy access to the files/locations in the file(s).
That quote remove example in most editors: Drag select lines you want to remove quotes from. Use find/replace in selection quote with empty character. Hit enter. Literally takes 2 seconds. No need for a macro there.
My favourite vim commands are o and O. I hated having to hold left or right arrow key and press enter to open a new line above or below.
Yes, I love how many actions can work from anywhere. Same with dd instead of having to go to the start or end of the line and then doing shift-home or shift-end and backspace.
Sweet. Need more VIM videos, please!
See th-cam.com/video/XA2WjJbmmoM/w-d-xo.html I need to rewatch that now that I actually use vim
I've been using vim for maybe 3 months with a couple of plugins and it is awesome! This video added a couple of tools to my toolbox. Good video DT
When you edit the array contents, half of the time you don't need to enter command mode, just press I and you can add the " at the start for example.
"Can your editor compete with vim?"
Me: Well yeah! my vim is great too. Of course it could compete with yours
Haven't watched your channel in awhile but that beard looks great on you!
Hey, thanks!
Vim can save you hours of work*
*After spending tens of hours on configuring and learning vim.
Well yeah, that's literally with everything. You can save hours of getting from point A to B by driving instead of walking but that would mean you have to spend more time learning how to drive and making money to pay for the car. It doesn't mean it still isn't fast.
Learning vim isn't difficult if you are above 8 years old.
@@nomathic7672 or you can just use jetbrains IDEs that are intuitive and work out of the box just fine.
more like hundreds thousands
@@luck3949 I never said that wasn't true. I'm saying that anything that increases efficiency can take time but that doesn't make it inefficient.
Does that make sense to you?
Honestly, developers that can't even understand their own points scare me.
the usage of norm and that cgn + colon is really neat
Almost every editor nowadays are super customizable. After using VIM for a time i only found that if you get used to not touching the mouse it can become very usefull and comfortable, but also if i wanted to i can customize VS Code in a way that i dont need the mice too.
I think it comes to a personal opinion of what you like most. Anyways knowing a bit of VIM comes very handy when working on multiple remote linux machines and you need to edit.
Remote + basically knowing vim key bindings gives you the ability to use any editor because most have vim extensions. Today Vscode is the hot product, a week ago it was atom, a month ago it was Sublime. You never know what the next "hot" thing would be, it's far more handy to know vim.
+ If you really dive into vim real capabilities no other text editor can compare tbh.
Edit : And it's way faster than any Electron app, Vscode with large projects/files isn't close to neovim speed
"set -o vi"
After learning this, I realized that I want vi bindings in everything that involves typing text.
The last one is pure gold!
Every single one of these functions work at least twice as fast on vscode though..
- Having to be the line above the one you're looking for sounds like a great feature!
- Moving a line up or down would be faster but not with the example you gave. In vscode you can simple Alt + Arrow key to move it up or down one line at a time, this works with entire selections too. Having to write a line to move it one line is not faster at all. if it was 15-20+ lines then I'd maybe agree but simple cutting and pasting is faster.
- Inserting or removing text from multiple lines. In vscode you simply Ctrl (shift on linux) + Alt + Arrow Key.
Or even better, you can put a cursor at the end of each line by selecting the text you want to edit and simply press Alt + Shift + I (hit the Home key after if you want it to be at the start, or End to go back to the end of each line. ). No need to write your own scripts/macros and reinvent the wheel.
The same way by having multiple cursors you can type in each of the lines, both at the start and the end, no need for a command.
- Searching and Replacing text. A whole line of commands on Vim, Ctrl + Shift + H on vscode and simply press Shift + Enter afterwards to replace every instance of the search query, which both accept Regex aswell.
- Creating abbreviations I have to agree is faster since you have to write it in json in vscode.
But.. rather than pressing space, you press enter in vscode so it doesn't interfere with what you're writing and no need for a shortcut to NOT expand it.
- VScode has an integrated terminal and you can open as many instances as you want, no need to enter command mode.
tl;dr If you had to write your code inside the terminal then sure Vim is your best friend, but since you tried to throw shade on vscode at the end of the video, Vim has no chance. Every other text editor is much, faster and easier to learn.
Also the indenting can be done by selecting text, and pressing tab.
I think his examples were a bit poor. I can see myself using a VSCode extension to emulate some of the VIM keybindings (there is also the NeoVim VSCode integration), so that I can easily select text without having to use my mouse or constantly press control+shift+(right or left arrow) to select a bit of text. In Vim Mode, you would use v to enter visual mode, f and then the character you want to select it to, pressing semicolon as many times as necessary. In normal text editors, holding down control and shift while pressing the arrow keys is quite onerous to select text.
Most editors are implementing Vim-like key bindings. There is PSReadline for PowerShell, Obsidian, VSCode as I mentioned earlier through a popular extension, Emacs through Evil mode (Spacemacs too), event Sublime has an extension for it.
The problem I see with normal text editors is that as soon as you start shift-selecting text, you cannot search for text that you want end the selection with. Vim (and its variants) has an insert and normal mode to get around this, and in Emacs you can set a mark and then move the cursor to the desired position.
Last two weeks I spent around 30 hours customizing my neovim, zsh and tmux setup. Very efficient))
I love it when I get to learn new things! :)
I used vim for my NaNo the last couple years and am using it for most of my writing. I've learned to use folding to organize notes and hide text when I don't want to be distracted.
xp in normal mode is my favorite quick fix for transposed characters.
Yesterday, not knowing how to navigate multiple edit histories just about bit me in the ass (thank the gods I'd saved just before screwing the pooch). I really need to practice that.
One last thing. I don't use vim to save time or be efficient. I use it because it's comfortable and lets me work in peace. The time/efficiency aspect is just icing on the cake.
From my experience Vim is just another editor. It has some powerful editing mechanisms, but most of them (or maybe all of them) are present in other editors which are much easier to use.
10:26 you can do that easily in vscode using multicursor.
Just go to the beginning of line 11 and then shift+Alt+LMB on the beginning of line 42. Now press Del to remove all opening quotes. To remove closing quotes just press End Backspace. End key just moves every cursor to its end of line.
I started learning vim today to maybeeee replace vscode in the future but this feature is so good and I use it so often I might not switch to vim as my main editor ever.
Whatever works for you the best mate. That was not the fastest way to make that edit. Just a simple example. The vim way of doing that is different than the vs code way but I prefer the vim way and it's very fast. Also I can edit my macro with a few key strokes and reuse it for something else without having to do the other selections again. And if your really in love with that there is a vim plugin for it. But again it's personal preference and the vim way is still faster. That being said. Vscode users who knows there keybindings can also get it done. Less the tool and more the person. Whatever works 🎩👍 code on!
There is also multicursor for vim
This man does not know find and replace (available even on gedit)
If its a long file, this way is beneficial
nano as well!
Vim is the way too go, use it full time now, learning new things all the time. I think vim + terminal is the real strength, no way vscode/webstorm can compete then.
I am using vim extensions for vscode so I have the best in both worlds, neovim features and vscode features at the same time, and I will probably switch to this when it is ready: onivim.io/
@@katech6020 do you have the tmux experience? Can you executive terminal commands inside vscode? Can you modify git aliases? And how "light" is your vscode?
I really wanna use neovim or vim but its to difficult to config and the docs is seems like they assume u to have knowledge in programming language already, and im beginner so i use vscode with neovim keybind extension,
@@enricosevenfoldism I'm 30 and have been in the "insert" mode everyday between 6 year's of age and 30, ofc it feels "easier" initially, but that's only a reflection of practiceed time, you need too switch your mindset to vim. Make it you'r way of life, i.e. add the vimium plugin to your browser..
@@samu-1337 I use code-oss and it has an integrated terminal for commands, for extension I just have ones that make me work faster or improve things, I installed around 12. for light it is an electron app so you know what to expect. for git, it has a lot of features that I use a lot since I am a front end web dev, and I need to work with other devs many times and push code and manage conflicts...
cgn is going to save me so much time! I constant have to context switch to rename things, but no more!
Another great Vim video DT. You make learning Vim easier, thanks mate.
(vscode)
1. moving lines of text
well, you can use alt+up/down for moving lines, ctrl+shift+arrow to select a word shift+alt+up(or down) would make another cursor abve, then you can ctrl+l to select a line. And now you 10 lines with 12 keystrokes.
2. looking for text and then moving: ctrl+f and alt+arrow. If you want to grab the next line also alt+shift+up(down)
The comments at the end of your videos are golden :D
Maybe I don't understand what you're doing, but you don't need to type colon before slash to search. In normal mode, you can simply type the slash key. Done this way, it will search from the beginning of the document.
I am amazed that you learned vim, considering you work in retail. I only rarely need to edit a config file and when I do, I get by with nano. To me, only programers should learn vim and everyone else will not save enough time to justify learning vim
there would be no reason to learn vim if you dont program, so much of a learning curve for so little developement
@@dot32 even for a writer or business people that write/edit documents a lot?
@@hil449 ayo i wrote that comment a year ago, funnily enough i started using vim myself. It's actually not too hard, but you do have to dedicate a week or so to learning and getting used to it
I got used to Vim in a week or two, and I gotta say, I even find it more intuitive than traditional text editing
Edit one year later: nvm
That's a blatant lie. I mean, if you're serious, you are the only human who feels that way.
@@christophernuzzi2780 1 year later:
I changed my mind
@@christophernuzzi2780 Still find it really productive though, and also not as hard to learn as people may want to believe
I don't find macros to be nearly as useful as :global (“:g”) and :substitute (“:s”). To get rid of all the quotation marks, it's just :'
yea, but what if you don't want to delete ALL quotation marks, but on a specific range of lines?
@@kardashevr I usually use visual mode for that.
@@atimholt cool!
@@kardashevr:start_n,stop_ns///[modifiers]
.,+5s will sub from current line to next 5
-5,+5s will sub from prev 5 to next 5
I've been using vim (originally vi) for so long that I have a hard time teaching someone how to use it since it's my fingers that know what to do, not my brain!
In any case, there's one thing I've occasionally done in vim that I think may be much more time consuming in a lot of other editors, namely editing on the basis of columns. Suppose, for example in the file that was being edited, you wanted to capitalize the first letter of every one of those array elements. Just block select them and type ~. It's also possible to, say, block select the bottom half of the list and then cut and paste it as a second column next to the first half of the list.
That ability to invoke an external tool to process (a portion of) your file via the :! construct is extremely powerful. Sorting is an obvious example but I've also used that technique to convert a binary file into a text representation of the contents, do my hacking, then covert back to binary, i.e., I don't need a separate hex editor.
11:15 DT, that is actually even easier than you did it. You can directly hit "I" (so, shift + i) when visually selecting various lines, and when you do it, even if it SEEMS that what you type next is only being applied to the first line, actually, when you hit escape it will apply it to EVERY line that you had selected!
So, no need for ": norm I". Just "I" after selecting and directly type or delete what you want to change at the beginning of those lines!
To remove the double quotes from the end of the line can be done like this :10,42s/"$//g $ means end of line. For the beginning of the line, use ^. To add a quote to the begining of lines 10-42. :10,42s/^/"/g. The Ending is :10,42s/$/"/g
Kate can do anything Vim can, just as fast, and it's easy for newbies to get into. That said, Vim is still fantastic.
@Gabriel Beauchemin the "can do anything vim can" is more preoccupying tho
The double quote staff can be easily done with any editor (notepad++, for example) with multiple cursor support. That includes almost every ide.
Love Vim, I use it for years and yet learned something, thanks.
this is teally cool stuff. Thank you for taking the time to demonstrate this.
To move a line, I use alt+arrow key
I don’t think VIM is any faster
You can just use the arrow key, no problem. Or the traditional "h, j, k, l" key.
Use it for years now. If you remember even some basic stuff, lot of things gets done quicker.
I liked it in partiular, for replacing with regular expressions (even if I forget them fast / don't use too often).
Also saves time on hand moves from keyb. to mouse and back... ;)
Thanks DT: Started using vim a year ago. It's all I use now unless I have a bunch of files to modify in different directories, copying and pasting between them. In those cases, like using Atom. Atom has many similar short cuts like vim. I know we can still use vim to edit multiple files; however, have not taken the time to master using vim in that capacity. Vim gets installed on every PC I work on, can't even remember the last time I installed nano.
Good info! I've been using Vim for almost 2 years now, and it's been amazing! Learning new techniques is never-ending, though. I still feel like such a N00b. By the way, I don't know why, but typing a line number + gg takes me to that line number, whether it's up or down. I used to switch between gg and G, but I don't feel I have to anymore.
Like your RTFM cup. Didn’t know they came in blue.
I can see how the keybinds will save time. I use the old Blender (2.79) still because I memorized all of the important keysbinds, I am lighting fast at it. I suppose I could upgrade and reconfigure the newer versions but I use it for gamedev. A model is a model at the end of the day, doesn't matter how fancy the program is. What is important is your workflow. Same goes for code!
And what is so great about "working faster" anyway? If a mouse slows me down a little (which it doesn't), so what?
The great thing about "working faster" is that it's faster.
Good video on vim, but I feel most vim power users do not realize how powerful the normal editors today are. I am going to take the example of Intellij because that is what I use.
1. Moving lines around: Is that something you do in programming? Moving individual lines around. That would mess with your variable declarations etc. Anyway, this is still very easy in Intellij. I can do it using Ctrl+Shift and up/down arrow. But many times, I am actually moving entire functions around (sometimes you want all your public functions together and want to move that one private function down after all the other public methods. Even there, just take your cursor to the function declaration, and use the same Ctrl+Shift and up/down arrow to move the entire functions around. Much easier. How can that be done in vim? What extra plugins or macros do you need for that?
2. removing the quotes from the start and end: This one is embarrassingly easy; in fact easier than his macro. Just go to column selection mode using Alt+Shift+Insert and move the cursor t all the lines with leading quotes (just like he did in the visual mode_ and press Delete. Now removing the end quotes is even easier and you don't need any weird macros. Just press End and the cursor will go to the end of each line and then press Backspace. Boom, done in 2 seconds versus his 10 seconds and either he has never used any other editor in his life or you are being disingenuous when you say it will take minutes. Lol.
3. Adding the double quote at the start of every line: Notice how he uses a completely different set of commands to do that. In Intellij it is the same consistent column mode - go to Ctrl+Shift+Insert, move the cursor to the lines and then simply type ". Adding the ending quote seemed painful because he has to type that command again. But in Intellij, you do not lose the column editor mode, if you use it one. You remain in that mode and just press End to get to the end of each line. Time saved vs vim.
4. Find replace but being able to choose a different word every time: Neat trick. I have to find out how to do that in Intellij. You can certainly do that by replacing the "replace" text in Find+Replace every-time but I think it will be more tedious that the vim example. But this seems like a really contrived example, In my 12 years of programming in the industry, I have never had to use it like this. Most time I want to do a simpler find and replace (example variable names, method names). These things are of course very easy in Intellij with its much superior refactoring support across multiple files, modules etc. It will even suggest if I want to update the name of the test methods if applicable and in most cases I do need to. Good example, but never needed to do this.
5. Abbreviations: this is just Intellij macros. Like typing "sout" and then Ctrl+Space to expand this into System.out.println. Even better because you get auto-complete when you type "so". And you can also add your own more complex macros but I have rarely needed to as the default ones are powerful enough.
6. Shell commands: Intellij comes with a terminal that you can launch right below the main editor.
7. Change writable status: This one requires a mouse (File -> File properties -> Make File Writable, I will give you that. But most of the times I am working on a project directory and all files are writable. I guess you encounter this more in vim because we use it to change random one-off files in some server. That makes more sense to me.
Overall, not powerful enough or compelling enough to overcome the learning curve for software development IMO.
I completed 12 years of programming in my job and I have mostly done Java. In these 12 years, I think I have really tried learning vim at east 3 times spending at least a month in each attempt. I have never managed to get over the hump of the initial learning curve mainly because I didn't see the value of the editor in my profession. I can do the basic stuff like search/replace, explore production logs etc but I still don't see why I would use this as my main IDE replacement. Even if I could get to a stage where I am a really good at editing text, for me, typing/editing has never been my main bottleneck. Most of the time I am staring at the code, mentally linking it to the rest of the project, thinking about the data structures, interfaces, seeing how if I change something breaks compilation in some other file/module etc.
When it comes to changing text, I am never really editing text, I am refactoring, which is a big difference for me. For instance, I am never playing with lines/words - I am working with methods, expressions, classes and their hierarchy. A common refactoring would be to "move this method to its parent class" or something like "extract this expression that I am passing to a method call into a local variable and also replace it with the new local variable in the two other places where I am reevaluating the same expression needlessly; oh and also assign a good name for the variable based on the type/expression context and also immediately give me the control back so I can simply type a different variable name if I feel the default you assigned is not good enough" - this entire refactoring is one command Ctrl+Alt+V in Intellij. How will I do these simple refactoring tasks in vim which does not have such deep understanding of what the text represents?
Things that I like about vim: it is everywhere. It is really performant and I never have trouble opening GBs of log files in vim. No IDE I know will handle that.
I am not trying to insult anyone; in fact I do want to learn vim and get really better at it. Why wouldn't I if it helps me be more effective in my job? I am not married to any IDE nor do I hold any stock of any IDE company. I really admire the folks which have shown the dedication to learn this tool and get so much better at it but I could never convince myself if it is for me and is worth the effort to spend months learning it.
Switching text editors is such a pain to retrain the muscle memory. There is so much inertia behind the use of VIM for people coming to Linux today it's really the only good choice. When I started using Solaris back in the very early 90s Emacs was in more common use in my part of the country (before TH-cam of course). Now Emacs doesn't seem to have the steam it used to.
Personally the Joe editor has been my bread and butter for such a very long time. I've curated my own way of doing things and tried several times to join the VIM tribe and just can't because of muscle memory and a lack of will to fight against it, lol. :)
Hmm.. interesting
It just sounds like DT hasn't spent any time in any modern text editor. I'd really like to have a faceoff between Vim and Subilme/VSCode where we are given an editing task and are timed, to debunk those false "vim saves hours of work" claims. I think 8:59 best proves my point, but any of the examples in this video are easier and faster to do in a modern text editor than in vim.
Do yourself a favor and learn modern text editors which aren't notepad or notepad++. You'll save hours of work compared to vim.
(yes I know vim including advanced features. yes I am subscribed)
Sublime really lives up to its name. Been using it for years and never looked back. The only times I use VSCode is when I need proper code completion (e.g. when learning a new language or framework), since that's where sublime is a kinda lacking, in my experience, and it's usually pretty damn good in VSCode.
SublimeMerge also seems pretty damn good, I might add. Haven't used it much yet, but it's been impressing me.
(Also, SublimeText and SublimeMerge have surprisingly low memory and CPU footprints. This is great if you're on a potato, like I am.)
@@skaruts The problem is Sublime is proprietary garbage.
@@thetreeofclues not a problem to me. It's not an OS, it's just a text editor.
@@skaruts don't see why the scope of the program matters lol
The problem with the above tools mentioned is they are not included by default everywhere. The reason vi/vim is so important. At my work we have many systems with many different OSes most of the systems are closed so no internet access/no permission to install anything. So vi/vim is what you use. For example we had DEC ALPHA with Tru64 with FDDI network. It has vi so does RHEL and most if not all linux distros.
That last command got me!
Over a decade ago, I began creating my own macros via Notepad++ as python scripts to do all my editing from a MyMacros folder.
Very informative video. Macros are a big reason to use vim.
Replacing lines in text is easy with sed as well. I often use this command
:%s (for replacing words)
Then you place a word (or a pattern) and specify the word to replace it with. And After that just say "do this globally, but let me check before you do ! " like this
:%s/cat/kittie/gc
This will find every "cat" word, highlight it and wait for you to press 'y' or 'n' (yes or no).
Hint: When you're trying to replace words that include '/', simply use some other delimiter. For example
:%s?/etc?/home?gc
:s is for replacement, not :%s
% is the range to replace on (entire file) but you can restrict it to only certain lines like :10-43s for example. there's other ranges mentioned in the docs
Nice tutorial, thanks ;) Note that if you want to indent (unindent) multiple lines from the command line, you can also use this syntax :10,10+(the number of lines you want to indent)>