My Favorite Vim Tricks
Ғылым және технология
Looking for an excellent bank account? You can receive a free 25$ USD when signing up for an account with SoFi Bank using my referral link below. This is my personal bank of choice, and I also get a kickback for signups, so it's a great way to support the channel.
www.sofi.com/invite/money?gcp... (Affiliate Link)
Thanks for watching everyone! 😲
Sign up for PureVPN (Affilliate)
billing.purevpn.com/aff.php?a...
View my .vimrc & .vim directory
github.com/makccr/dot
Text Editors & Plugins Mentioned
Vim: www.vim.org/
Sublime Text: www.sublimetext.com/
NERD Tree: github.com/preservim/nerdtree
My Website: makc.co
Connect:
github.com/makccr
/ mack_criswell
Intro/Outro Music by John Morrison
/ johnmorr95
Wallpaper: “Wanderer above the Sea of Fog” by Caspar David Friedrich
en.wikipedia.org/wiki/Wandere...
Thumbnail Photo By: Miguel Á. Padriñán
www.pexels.com/photo/black-an...
Navigation:
Intro - 0:00
0:46 - Tabs
2:30 - Custom Workspaces
3:59 - Multi-language Spell Checking
6:43 - Completion
8:46 - File Explorers
10:37 - Visual-block Mode
12:09 - Macros
14:02 - Outro
#makc #vim
Пікірлер: 233
I usually do recursion when recording a macro in order for it to keep repeating itself until the end of the file. I just start recording a macro -- say, calling it "@a" --, then I just record its commands. When finished, before pressing Esc, I call "@a" inside of itself and *then* press Esc. Voilà.
@GrotesqueSoulthorn
4 жыл бұрын
We are all still living in 2020. This man is living in 3000.
@Spielix
4 жыл бұрын
How do you determine the end of the recursion?
@xXUkanlosXx
3 жыл бұрын
genius :O
@AhmedSaleh-ws3pz
3 жыл бұрын
It's a bit late but brilliant!
@dandandrorivolleyball
3 жыл бұрын
Happens to me by accident every time i use a macro because i keep forgetting to press q again to end the macro. Every time it happens im like "oh yay thats so much better than repeating it manually" but now i know how to do it intentionally!
One of my favorite things about Vim's macros is that they are just command strings stored in the regular named registers. So if you create a complex macro, only to realize there's a mistake in the middle, you can paste it into the document, modify the command (which is in "normal mode syntax") , yank/cut the command back into the register, and then execute it. It also makes it easy to share Vim macros, if needed, since it's just a line of text.
@Stefan-vz7op
Жыл бұрын
That is actually really cool! Thank you for sharing your insight
@GidzPaul
Жыл бұрын
Wait what??
@no_name4796
2 ай бұрын
You can probably load some good macros from your config file, and then you can just use it without having to do anything lol Yeah vim is absolutely pure gold
Great video! Learned about workspaces that I did not know before. Some other notes: 1. You shouldn't use the :o (open) command, which was meant for vi compatibility. Instead use :e (edit) command. 2. Instead of running :q repeatedly, you could do :qall (or just :qa) to completely quit vim and all open buffers. 3. Visual block mode is so much more than just (I)nserting or (A)ppending to line items. You can also execute regular vim commands over them. For example, instead of doing the three tasks in different commands, you could do ":norm IThe \\2fjceover\\A dog" over the visual selection range and it will convert "quick brown fox jumps jumps the lazy" to "The quick brown fox jumps over the lazy dog." on all lines. (I've mapped \\ to escape here, but you could enter esc directly with ctrl+v too).
@MCLooyverse
2 жыл бұрын
Perhaps I'm misunderstanding, but also writing literally "" (less-than, capital-E, ..., greater-than) is the usual way to include an escape in something.
Non-vim developers often thinks vim must be a text editor for writers, not software developers because it does things like paragraphs and sentence text object or spell checks which doesn't normally map very well into a developer's toolbox. Non-vim writers often thinks that vim must be a tool for software developer, not writers, because tools like completion, jump to tags, etc which doesn't normally fit into a writer's toolbox. Actual Vim users knows that both sets of developer and writers tools actually worked for each other's scenarios very well.
I learned a extremely useful vim trick recently that helps me greatly to organize my programming notes for various languages. It is the zf command which folds multiple lines of code into one line. So first I use shift-v to go into visual-block mode, and highlight as many lines as I want. Then type zf to create the fold, and za to open it, and zd to delete if I made a mistake. You can also create folds within folds, and there are other z commands such as zr to open all folds in a document and zm to close them all. Now it doesn't help very much as is because vim deletes the folds after you exit the file. What you need to do is add two lines of code to your vimrc. autocmd BufWinLeave * mkview autocmd BufWinEnter * silent loadview This makes vim autosave and autoload your view of files which remembers all your folds. Try it out!
@urugulu1656
2 жыл бұрын
interessing autocmd... also folding commands coupled with the % for jumping to the matching brace is very useful in the programming context; closing entire comments, functions if elses switch cases you name it; very useful
One of my favorite things is "permanent undo", basically if you edit a file, close it then reopen it you can still undo using u. Put this in your vimrc set undodir=~/.vimdid set undofile
@makc
2 жыл бұрын
That's dope as hell.
very nice video man - I love vim, been using it for about 8-9 months now - still learning a lot and randomly came to ur video - nice work 👍🏾
I learnt some new stuff right there, so thanks for putting that all together.
Completion is also context aware: start with Ctrl-P and continue with Ctrl-N Ctrl-P. Repeat until you have everything you typed previously. Ctrl-X Ctrl-L works with entire lines. Enjoy!
I would like to thank you for showing me the session tip. This saves so much damn time for me! I have 4 tabs open and like 3-4 split windows each tab with a terminal on one of them. Glad to know this will save me a couple minutes of setup!
@makc
Жыл бұрын
Thanks for watching
I recently start learning vim, I really liked and your video make me more interested in using vim. Thankyou
Wow, this video alone boosted my productivity in VIM quite a lot! Thanks man :D
Wow ! I am a vi user for a long time and never knew about theses tricks in vim. Good to know !
Thanks for showing me the macro feature! makes it so much more worth it using vim
@makc
3 жыл бұрын
Thanks for watching!
*Just got this in my recommendations* Very nice
Custom workspaces is a feature I did not know! Damn! Thanks for the tip 😄 At work, I have like 3 tabs with 4-5 windows each and terminals. This will definitely help!
Good video, I read the book "practical vim" and this video is a summary of the best tricks contained in the book.
The command “:qa” quits all open windows and buffers. Saves time not having to do “:q” over and over.
@bouldersky2906
4 жыл бұрын
@@makc You can also do :wa (or :wqa) to save (or close) everything at once
@spacewad8745
4 жыл бұрын
ZA or ZZ is way better
@satoshi_21
3 жыл бұрын
Shift + ZZ is Killer
@puvendranpillay3096
2 жыл бұрын
I tell my buffer to catch some zzz
Folding is another one good one to know, ie: zf, zfap, zfip, etc. etc.
@MCLooyverse
2 жыл бұрын
And, as I just learned recently, vim has a `t` text object (like [w]ord, [s]entence, or [p]aragraph) which is (basically) for HTML [t]ags. So you can zfat ([f]old [a]round [t]ag)! It's very nice when you're trying to understand someone else's HTML.
it's more interessting to open multiple files in buffers, and reserve tabs for multiple workspaces (set of buffers)
@FlaviusAspra
4 жыл бұрын
Indeed. My advice is to use tabs to cut through logical views of your code. For instance, in a devops project, I would use one tab for the things running outside of the docker container, and another tab for the code which is meant to run inside a container. Use this in combination with the lcd command. Quick and dirty: lcd %:p:h % stands for current file, p stands for path, h for head, meaning the directory of the current file.
@nobytes2
4 жыл бұрын
How about tabs vs tmux panes?
@67fabs
4 жыл бұрын
@@nobytes2 I may be wrong, but tmux panes will means multiple vim instances, so you won't share opened buffer between these instances.
@uyohn
4 жыл бұрын
@@makc The best way to edit multiple files in vim I found so far is to install Airline plugin - it's a status line, which has a "tabline" feature - it shows all open buffers in a "tab" fashion - looks similar to what you show in video with multiple tabs. You can have a look at it here: i.stack.imgur.com/cq8D9.png github: github.com/vim-airline/vim-airline#smarter-tab-line This approach is better to what you show in the video, because what is called "tabs" in vim is actually something like "instances of vim". What people typically mean by "tabs" is something called "buffers" in vim - every file you open to edit loads into a buffer, and then you interact with this buffer. After you save it, it writes to the original file. If you open vim and then edit multiple files by running ":e file", all those buffers stay open and you can switch between them using ":bnext" and ":bprevious". The plugin I mentioned helps only by actually showing you your opened buffers in a "tab-like fashion". With this approach even sessions work - if you open a saved session, it will load all the buffers you had opened (not the case with using actual vim tabs, session only saves what's on one tab). I hope this helps :) Good luck with vim (you should probably move to neovim though).
@SamirAbuLina
4 жыл бұрын
As long as all open buffers are "availible" in all the tabs, that does not make sense for me to use. If I switch buffers in a tab and can switch to a buffer that I actually use in another tab, it just has no benefits. How do you use tabs? Does it not bother you that when cycling through buffers you almost always open buffers that you actually do not want in this tab?
great video, and great work! already knew some tricks however there are some others that I did not, good job!
here's a cool thing that I've learnt marks you can press m + any lowercase key and you'll kind of bookmark a place in your document (i think you can also use numbers, not sure) to go to it just do ' + name of the mark and the uppercase letters for spicific files, so 'V could be your vim config, and 'L could be lua config, and so on.
Great video. I love the use of macros. I could see that being useful for writing the output of common bash commands. I recommend also looking into the "change inner word" or "delete inner word" feature. It's revolutionary. It becomes even more powerful combined with the dot character.
@makc
3 жыл бұрын
I actually remember that feature exists as soon as someone mentions it, but I always forget about it in the moment. It is awesome though. Thanks for watching!
great video and explanation!! kudos!
Great video man! Thanks a lot!
Hey! Great video. You really hit on some of the best parts of vim. I hope it's treating you well. Macros are super useful, and I just wanted to give you a quick golden nugget that I use allllll the time! :D If you use @c to replay the macro stored in register c, you can use @@ the following times becuase @@ is like a macro REplay. :) Also, I use @: a lot to execute the command that I just typed into the command-line. I use vim nonstop, so I could go on and on and on and on and on hahaha, but I hope that these little tidbits of info prove useful to you. Take care, and I hope you keep making good content and help inspire others. :)))))))
@pmmeurcatpics
2 ай бұрын
I think you could also just use . instead of @@ since the former repeats the last command
@VioletJewel1729
2 ай бұрын
@@pmmeurcatpics . only repeats one action. @@ repeats the last macro, which can incorporate multiple actions. Good idea, though :)
@pmmeurcatpics
2 ай бұрын
@@VioletJewel1729 oh, didn't know that! Thank you:)
In the macro example, you can change the words even faster by selecting the word in visual block mode, going down and then hitting c to replace
Danke for the handy tips and tricks!
Great tips ! Thanks !
Nice! I'm learning vim and this was very helpful. Btw, "fr_ch" is Swiss French, but perhaps you knew that :)
This was great - thank you!
@makc
3 жыл бұрын
Thanks for watching 👌
New comer to vim - thanks for the tips. I have already started using the mksession and file explorers. That multiple cursor thing was mindblowing though.
This was nice. thank you!
It's cool. Even before you know much about it. And then you discover plugins (vim-javascript, vim-rails, etc). And then you never use any other editors again. And then you discover that it works flawlessly via SSH and is preinstalled on every OS - and you work on files on a remote PC as if it's in your room. After which you feel pity for people who got used to other chunky IDEs (Netbeans etc.) and are stuck with them and can't do much on the remote servers on the fly. And after all that you discover, that the habit of writing Vim-scripts turned you into a Metaprogramming Guru. When others look for a button that does the right thing, you just make yourself a button or a script. And after that, you see that being a programmer for a company is stupid because when you can work x5 times faster, you don't get paid x5 times more money. And then you launch metaprogramming projects you created in Vim to be used by other people as your consumers and you make the world a better place.
The background about "l'infinito" by Giacomo Leopardi add style to everything. Nice video by the way, very useful for me.
@lorenzoguideri7815
19 күн бұрын
Are you American?
You guys are so hardcore. I just use Intellij with mouse clicks. Lol. Vim for me is strictly to view server files. But definitely learned a lot! Thank.
My favorite trick is exiting vim- takes a some effort to master but worth it!
If this video won't pull people over to vim probably nothing will. Well done!
@makc
Жыл бұрын
Thanks for watching
Thx a lot for this!!
@makc
Жыл бұрын
Thanks for watching
Great, thank you!!!
Good tips.
The problem with visual block mode is that you can only select exactly a block, so if there were line-breaks between your quick brown foxes you wouldn't be able to edit them that way. True multi cursor editing is something I've kinda wanted in vim, but the lack of it hasn't ever bothered me enough to actually learn how to get it in vanilla vim (which I bet you could), or to get a plugin for it (which I'm *certain* you could). Also, I say with embarrassment, I didn't actually know you *could* insert text in block mode... I always press `i`, then recall that it doesn't work, get mad, then do `:norm iblah blah blah`. I'm gonna go vmap i (uppercase 'i') (I think... or maybe I'll just learn to press shift too).
Best channel please continjr making more videos
I loved this video c:
nice work!
Great video
Visual block mode does compare to multi cursor editing. Multi cursor editing lets you drop cursors arbitrarily or by a regexp which is quite a bit more useful than just editing several adjacent lines in the exact same column-position.
Don't over use macros. There are times when macros are necessary but most of the time you can simply use regular expressions which are also very powerful and many times faster than macros. Running a macro a 100 to a thousand times is very slow while using a regular expression is almost instantaneous.
About macro. You can use visual mode instead of repeating macro. Press ctrl+v and select vertical line. Then press Shift+i and type something. Then press Esc. You will see what in all lines inserted same symbols as you typed. This is good way to comment blocks of code.
@JamesBond-jk8ot
4 жыл бұрын
Did you watch the video? 11:16
@Korrmet
4 жыл бұрын
@@JamesBond-jk8ot to be honest, i watch it with rewinds... when i saw Makc repeating maco, i thought he missed visual mode.
your visual block mode append to the end would have worked within the first visual line in the front as well you can Ctrl V 10j in the beginning of the line do your insert and do Ctrl OA to get into execute-a-single-normal-mode-command-now-mode and use A to get into insert at the end of the line mode and then just continue typing. (obviously esc in the end and then your gonna get each of the two actions both performed at the selected lines)
Have been using vim for 2+ years, now using spacevim + NeoVim. Some of the stuff here were unknown to me. Thank you.
You can type in @@ to repeat the last played macro, like how . can repeat the last action. Very powerful.
10:37 - Visual-block mode - get visual-block mode; - select 5 lines; - get in Insert Mode Typing what you want; - Exit from the visual-block mode End of the line changes: - comes to end of the line ; - get visual-block mode; - select 5 lines; - get into Insert Mode ; Typing what you want; - Exit from the visual-block mode
Great video! I had myself coming back here to get reminded of -p and :mksession
For new people, useful info -> Vim is around 14 years old and a lot of the codebase shows it. ... Vim runs through every plugin on at a time to initialize, while neovim is asynchronous and can startup multiple at the same time. Vim also uses a language called VimL (sometimes called vimscript) where as Neovim can use Python, Lua, Ruby, etc.
:mksession is pretty cool, thanks for showing it
Don't forget about the range command!!! Seems to work better for multicursor stuff if you know regex :starting line number,ending line number command So :23,55 s/quick/fast/ Works with standard commands like yank, paste and delete Also you can change the range to a % and encompass the entire file. :%s/quick/fast/g will change all instances of quick in the file to fast.
@MCLooyverse
2 жыл бұрын
Also, if you have an ugly JSON file (and you have `jq` installed), you can run `:%!jq` which will basically filter the file through jq, and prettify it. Or, if you have a set of lines (and I *do* mean lines) which are JSON, you can select them, and run `:'
Now that's a neat video
@makc
3 жыл бұрын
Now that's a neat comment
@nekoill
3 жыл бұрын
@@makc "You're pretty good"© 😽
+1 karma for the workspaces. :)
Did notknow about that one. Goodbye wonky NerdTree. Thanks!
I recently discovered and subscribed. I really like your content! This is a great video, thank you. I am wondering if you've considered using VScode with a VIM navigation extension for dev projects or if you have a reason for not using VScode. Am I possibly not deep enough into my Terminal/Vim journey to understand? Thank you again for your videos!
I don't know i can save session! NICE!
As some1 said. Try buffers except of tabs Because tabs is not what we thinking usually. Tabs is workspaces which can contain buffers(which is just allocated memory for physical for file). And buffers is much more closer to `normal` editors tabs.
that Interstellar reference 😲
I've been using visual studio code for a couple of years now but after installing linux on my laptop a few months back i started watching youtube videos related to linux and everyone keeps talking about vim. Today i understand why, and thanks to this video i will start replacing vs code in vim because once you get good at it, it is so much better... I watched a dozen videos on vim but this one was by far the best one and the one that gave me the motivation to switch to vim. Hopefully with hard work and repetition i will become a vim master and will be able to write a 10 minutes worth of writing code in another text editor in less than a minute in vim :)
@makc
3 жыл бұрын
Just do vimtutor over and over again. That’s the best way to get started
@dandandrorivolleyball
3 жыл бұрын
@@makc i actually started that im on lesson 3 now (dont have much time to spare cause of the university but i am trying)
@makc
3 жыл бұрын
Awesome. Once you get familiar with it, it’s easy to run through vimtutor everyday in like 10-15 minutes as a refresher
@dandandrorivolleyball
3 жыл бұрын
@@makc love that idea! I might just do that
I was searching for an exit command to close Vim but all I found was a Vim tricks videos... So this is how I stayed in Vim and started using it.
The fastest way to autocomplete is which turns on autocomplete mode, and completes the line. Just a heads up
@wewe-fx6un
2 жыл бұрын
Inside of the insert mode
I was totally blown away my the macros . thanks for that and the thing you told about multiple cursor to make changes to 1 or more lines doesn't work in my case can I get some help?
very interesting here the advice on how to use mksession on time 2:33, and the multi spell languages
8:49 a text synthesizer; vim has a text editor, it's called insert mode.
@Makc - Which themes are you using for vim / airline ?
Caspar David Friedrich, at last, a man of culture. One thing bothers me though, the heck is with the display of your powerline characters in iTerm2? Please go to iTerm2 -> Preferences -> Profiles (then select your profile) -> Text... and then check '"Use built-in Powerline glyphs". Thank you.
Can you share your Mac os setup as well? Window managers, spot light replacement etc
@makc
2 жыл бұрын
I think this video covers most of that: kzread.info/dash/bejne/aGGs19RrXdDMYtI.html Also when I use MacOS, I usally use Alacritty as a terminal (don't think I talked about that in the video)
😎😎 it's awesome
Thanks for the inspiration. How come you didn't use quicktime for screen recording on OSX? It would bring you a higher video quality. Maybe it's just a setup thing in OBS, but the quality is very low for 1080p. Anyway, good job on presenting vim features.
@janschmitt
4 жыл бұрын
@@makc Cool. Thanks for your response. Ok, that's interesting. Never had such issues with QuickTime, but yeah, I should have rephrased that, regarding the better default quality in quicktime. I've never used OBS so I can't really judge, but the not so good video/image quality besides the very good content and audio quality just confused me :)
Great video! Could you please share the link to your wallpaper? The wikipedia link has a picture with a weird resolution for a wallpaper
Hi Makc, beautiful video. good job. May I ask what your connection to Germany is? (referring to the DE_DE spell lang setting). Also which font did you use to blend in the topics? Thank you Greetings from Germany
@marcotrosi
4 жыл бұрын
@@makc Awesome. Thank you very much for responding. Have a great day and happy vimming.
People more familiar with macOS may reckognize vim's "visual block" (C-v mode) as "Column Select" (opt+mouse). If you're looking for true multi cursor, there's always github.com/terryma/vim-multiple-cursors. When it comes to completions, you're in for a fun ride :). Something like github.com/dense-analysis/ale can handle language servers, along with linters and formatters. There is also github.com/neoclide/coc.nvim, which is much more intense, but very powerful.
How did you manage to make iTerm2 look that way? 🤩 I have set up the transparent look but would like to remove the borders and tabs as well
Hey I have a quick question. Why does control commands, such as Ctrl n for the autocompletion, show up as capital letters? ^N instead of ^n for example. I know the ^ represents "Ctrl" but ^N would sound to me like "Ctrl Shift n" but it's actually just Ctrl n.
Hi how are you mate i was checking out your videos you got pretty good content , do you do tutorials too?
@makc
3 жыл бұрын
I don't know how to characterize the videos on my channel.
9:17 - forward slash*
How are these command showing in the bottom?
Hey, how did you get your iterm2 window to not show the "bar" with the red green and yellow buttons at the top? I really enjoy that minimal look.
@josefschmid7713
10 ай бұрын
Nevermind, I found it. To anyone wondering: Go to iterm preferences > profiles > (Choose your default profile) > Window > Style: No Title bar
Did you use any plugin for the resize? How can you resize the tab so fast?
@saianishmalla2646
3 жыл бұрын
You hit control + w then you use the greater and equal to sign to either decrease or increase the width.
Interested to know how you've got iTerm2 setup. How have you got rid of the icons (close, minimise, fullscreen) and the top status bar?
@makc
2 жыл бұрын
It's been a while since I've used iterm, but I'm pretty sure it's a setting, where you move the window decoration to the side or something, and then set the tile bar to minimal. Something like that, a little bit of fiddling around should get you there.
That background image gives me german lesson flashbacks... :D
How do you resize the split using the arrows?!? Thanks
Can I ask you how you do this zoom effect in video? I want to do the same when I make my video tutorial. This is great idea.
@makc
2 жыл бұрын
Scale up part of the video in post
Vim or Neovim, What to use?
trying to read that text with the frosted glass image of nietzsche or whoever is murder bro
How do you set iTerm2 to not having any frame including those min/max button?
@makc
4 жыл бұрын
kzread.info/dash/bejne/l4yt1LZ_ftbKeKQ.html
How did you hide the window bar of iTerm2?
@MAKC I've been searching for the longest time to find a way to remove the title bar from Mac applications. What did you use to remove it? Links and references appreciated.. Thanks in advance
@makc
2 жыл бұрын
It’s sort of application specific. I think I’m using Alacritty there & it’s just a line in the config that stops MacOS from rendering the title bar.
How are you doing that with neovim now?
How'd u setup iterm like that?
which pluggin you use for html and css ?
Vim tab is not so powerful, because all tabs share the same buffers. Just use buffers in one tab. Simple and efficient.
fr_ch is actually swiss french, not really from France, so not sure that's the one most people will be looking for.. :)
how do you resize your window that quick?
@mamunurrashid5900
4 жыл бұрын
There is a plugin in github github.com/ahonn/resize.vim with this you can resize with shift+arrow keys.