How to Do 90% of What Plugins Do (With Just Vim)
HTML-код
- Опубликовано: 4 окт 2016
- Vim is big; so big that it does some very useful things that are often overlooked. Plugins can buy us a lot of functionality, but they can add a lot of burden in the form of dependency complexity. In this talk, we'll explore some of the tradeoffs we can make between plugins and "vanilla" Vim features that achieve similar results, including:
- autocomplete (VimAwesome, YouCompleteMe)
- file jumping (FuzzyFinder, Ctrl-P)
- visual filesystem navigation (NERDTree)
- build integration
- snippets
The "slides" and supplemental vimrc are available here: github.com/mcantor/no_plugins
Learn more from the developers at thoughtbot ⌨️
Head over to tbot.io/dev-blog to read more great articles on our blog. - Наука
0:06:48 - finding files
0:16:14 - tag jumping
0:24:33 - autocomplete
0:34:30 - file browsing
0:38:20 - snippets
0:51:02 - build integration
0:57:40 - questions
1:09:12 - plugins to use
^ The Real MVP from the comments.
You're amazing, you deserve to be happy and be successful in life you amazing butt-saving son of a bitch!!!
qazwsxed you could just use a variation of the snippets trick i.e. make a mapping that takes you to the beginning of the line, insert the comment and go back to normal mode.
You can even autocmd that mapping so it matches the commenting style of different file types
MrMollmann
Love ya
It never fails. The speaker at a "Mastering Vim" will always have at least one moment in the live lesson where they say "Oh wow, I didn't know you could do that..." Just shows how deep the vim rabbit hole goes, and how learning-mode brain is so much more different than get-normal-work-done-mode brain.
where in this vid?
@@yash1152 31:35 to 33:00 i think 😄
@@yash1152 in vim
@@yash115229:03
Add 26:59 no hate but I have been using vim for a few months and it feels good that even experts are always learning
This video and "Mastering the vim language" are my two favorite videos on vim, both from thoughtbot. After using Vim for about 2 years I still watch these videos from time to time when I'm bored.
It's 2024 and I still keep coming back to these thoughbot vim talks (also some of the emacs ones). I don't know if these still exist, if they don't please bring them back, they're great
For the question of how to select completion without leave insert mode, ^n ("n" for next), ^p ("p" for previous), and ^y for yes accept selection :)
thank you
For those (like me) who want to cancel the completion, use CTRL-E (see :help 'complete_CTRL-E )
27:24 "some of the default bindings use ctrl-x, I have no idea why?"
I'm like 80% sure the completion stuff was partly written by an emacser who was
experimenting with the "dark" side. C-n, C-p, C-x.
A particular detail about ^x^n is that you can keep going. It picks not just a word to complete, but a place it came from, so you can use ^x^n again to get the next word after that, etc.
80% of a good autocomplete plugin is to turn into sensible keybindings. Completion in vanilla Vim is fine - it's the chords that annoy me.
I definitely agree with everyone. This is one of the best talks i've seen on vim.
What Microphone was used here? (Standing byside the Laptop)
Brandname,model, or Type of Microphone) would be very helpfull if somebody can tell :)
@@kirschkern8260 Looks like a Zoom H4N recorder. It has a built in stereo mic.
@@kirschkern8260 nnn
I must say the audience was really good too.
@@kirschkern8260 uuu6uyuuh juung uyiuuuhi uiuuuut unuuuuuuumujmu uuu5uu. W
Easily one of the best vim talks I've ever seen!
After watching videos like this, one thing happend to me is that i now feel i can read help files more confidently. For very beginners, one should start with videos like these or even more simple, rather than reading through help to find ins and outs of everything.
One of the best vim talks/tut videos i have watched. Thanks
Yeah I agree
I use vim since around 10-15 years and I was ${today} years old when I learned about ^n
As a vim beginner / intermediate this talk is fantastic. Thank you!
What Microphone was used here? (Standing byside the Laptop)
Brandname,model, or Type of Microphone) would be very helpfull if somebody can tell :)
Man I was in as soon as you started talking about overlooked tools being a priority. I'm all about that. I'ma have to watch a bunch of these
I love this talk. I return to watch this video so many times because I continually forget that VIM is MASSIVELY extensible. Thank you for sharing this with us!
CTRL+g is shortcut to show what file you're in.
Wow! I have seen this video like 4 times and each time there is something I have been thinking about. Last time it was the fuzzy search and this time its the snippets - I _really_ like your way of using vim!
great video! I've been using vim for several years, and I always like to watch videos like these and learn new things! BTW, for the system clipboard issue, you can do it with "set clipboard=unnamed"
The quick-fix window is way more powerful than it looks. You can write a compiler plugin (:h write-compiler-plugin) or :set makeprg + :set errorformat to a carefully constructed expression that can parse any error you want. Then :make does a lot of magic, calling your makeprg, parsing with errorformat, filling up the quick-fix and opening the first error.
BTW. this video was the reason why I made the final move to VIM. Really cool stuff!
Fantastic video! The snippet completion thing with nnoremap is my new favorite feature.
Great talk, Max! I am a big vim guy (or at least consider myself a big vim guy) and learned a lot from this talk. This morning I've simplified my .vimrc drastically per your teachings. I feel like a noob again. Thanks again!
Excellent presentation! I learnt a lot from it. Thank you Max! Perfect speed and great humor along the way!
The best vim video I've ever watched. I learned tons of new features and worked on my vimrc file for hours to make it lighter. Now I am confident with help files and I can confirm that every single visit through these pages is an opportunity to be amazed again by the quality of this software. Love vim more and more
Great talk, thanks ! As to tags matching, you can also (at least in c, c++ files) type ^W ^I on any tag to open a new window with the actual definition (may it be in a header or in the file itself). If you look for #defines only, you can type ^W ^D.
Thank you. I'm a junior sysadmin catching up after a long hiatus. Great talk and super useful for the future. Shared it with friends.
No matter how good you are at using vim, you still have so much to learn about. Vim is just mind blowing tool.
more videos like this please. most of the stuff in vim takes long to learn, but all you learn can also be applied to other stuff (e.g. you learn to read help to configure your autocomplete, then you can also search other stuff in :help).
in response to the question about the strategy for keeping ctags updated: writing a couple git hooks (on pull, merge, rebase, and commit) make it super simple. you can also have it write the tags file into the .git directory, so it won't need to be ignored and vim already knows to look in there for the tags file (actually maybe it's fugitive that does that).
the bonus at the end really got me.. i wrote a script to toggle the opacity on/off in the terminal now i can bind it easy in vim without the need to bind it globally :)
Love it. Thank you so much. Just tried the set path and then finding the files and it is amazing!
The reason you'd want completion plugins beyond what ctags does is for more accurate completion and goto definition/declaration things. For example, ycm will give you a list of members if you type struct_value.; ctags based completion can't do that. And particularly important for C++, this also lets you jump to declarations that are outside your project.
The only regret I have is that I didn't start to use VIM earlier in my life.
I was so stubborn...
I love VIM now, and I can't see myself using any other code editor.
I configurated VIM to my dream editor, you can literally make it do anything!!! Love it.
Hey Max, if you are still wondering about the answer to the question at 31:36, the answer is CTRL-E. :help complete_CTRL-E (this is a bit "duh" but don't worry, it is about 2 paragraphs down from where you were looking at :help ins-completion 27:38 ) Anyway, if the mystery isn't solved, then as you said, the manual is very nice. :)
Thanks for the talk, btw.
Really awesome talk. One minor thing I noticed is the shortcut for ambiguous tags @23:26 is actually g] rather than g^], at least in my version of vim.
12:45 Holy shit. I'm writing my thesis right now, where I use vimtex and the chapters are in multiple files. To change between files, I would constantly do ":ls" to see the buffer number of the file, and then an additional ":b buffernumberoffile"
thank you man
Glad I watched this in the learning phase of VIM.
Thanks a lot for this talk. Cannot emphasize how much this talk has helped.
You could also "cancel" the entire complete thing with Ctrl-w. It will delete the entire word and keep you in insert mode.
What Microphone was used here? (Standing byside the Laptop)
Brandname,model, or Type of Microphone) would be very helpfull if somebody can tell :)
Thank you so much for this video! Absolutely amazing explanation throughout! You just helped me create my first .vimrc file with everything I need to get started.
That was great. I have been using vim way too casually all my life. Thank you.
This talk is absolutely beautiful!
Great talk. I watched this as a beginner. Now four months later, I even understand what he is saying.
What an awesome talk. One of my fav! good job
Thanks very much!
What Microphone was used here? (Standing byside the Laptop)
Brandname,model, or Type of Microphone) would be very helpfull if somebody can tell :)
The way to ignore some files/folders for example node_modules would be as follows : set wildignore+=**/node_modules/**
To exit out of the autocomplte and remove anything typed, hit ctrl+E
Hot tip for netrw. The banner that you hid IS the tutorial. So don’t hide it until you re familiar with the commands.
Go up to the help line and press enter to see different options
This is a really cool talk. Vim is not just awesome, it is more than that, by far.
This is great. I think plug-ins are awesome! But my work environment has to be super security conscious, being able to do cool stuff without external plugins is hugely helpful to me. It’s a huge hassle to request permission to download and install software so I don’t have the luxury to just pull down whatever I feel like to see if it works
These questions should be subtitle in the video, it would help a lot.
What Microphone was used here? (Standing byside the Laptop)
Brandname,model, or Type of Microphone) would be very helpfull if somebody can tell :)
@@kirschkern8260 it's probably one of the zoomcorp.com products.. I'm not sure of the name of the model though.
@Peter Mortensen most probably talking about the viewers question to the presenter
RE: Why Ex mode?
Remember that (Neo)vim's existence goes like ed -> ex -> vi -> vim -> neovim, where each successor is a superset of the previous implementation. ed was a line editor, ex enabled better commands, vi added a visual mode where you could see the whole file at once, and the rest we're probably familiar with.
Ex mode enables you to string a bunch of ex commands (anything with a : at the start) to enable people with REALLY shitty internet to remotely edit files, without having to keep a constant open connection.
This guy is a blast to watch and listen. Really good.
Holy shit, this is gold! Literal pure gold!!! I think the fuzzy search part is honestly the coolest - I will never use Telescope again :)
I will keep using telescope. It is much more versatile and waaaayyyyyy faster.
Understanding tool that we use ... This is so damn important!
While people might now to click this, than that, than that other thing and then enter tis text there and this works 90% of the time they just can't cope with things not working like they memorized and sometimes not even know what they're doing at all. All they know is to follow a step-by-step instruction sheet instead of understanding what they're doing.
Those people often think I'm some type of tech genius, but what I really do is trying to understand our tools instead of simply memorizing the order of buttons I need to click.
just got here, wish i got here a couple of years ago! great stuff thank you!
This is the best vim talk ever
I love how vim is even its own version of PowerPoint.
Amazing... I tried to install some fuzzyfinder plugins, but this "native solution" already attends my needs.
Me to. I no longer find a need for a extra plugin.
The question asked at 31:37, the command to exit the auto completion suggestions without editing what you have entered and to stay in insert mode is ^e. Also, to select the current suggestion you are on in the auto completion list is ^y.
Great talk dude! Most people don't realize how hard is actually doing live presentation.
This guy is hilarious. I love his sense of humor. Awesome talk!
Wooah! That’s what I said after watching the find file autocomplete 🤘
Fantastic presentation! Learned an incredible amount about vim!
Also consider checking out Universal Ctags, which is a more actively maintained fork of Exuberant Ctags. Includes lots of patches, including vastly improved PHP handling if that's your thing.
Thanks!
Support for modern C++ was a painpoint in classic Ctags. Thanks so much for pointing out this maintained fork of that.
for the next videos, please show us the key press....
Thank you...
Very nice
Awesome, awesome talk. One of the best talks on vim that I have watched on youtube, for many reasons. Firstly, it encourages users to use the power of vim in its native state without plugins (it appeals to the purist in me). Secondly, in the process, it teaches many useful lessons about the editor. Thirdly, the presenter is great and very engaging.
I think every vim-guy should watch this video, at least to see on it in different way.
Cscope is like ctags on steroids for c/c++. You can jump to callers, callees, definitions, and so on (with the same syntax), and it is also supported out of the box.
I highly recommend the Sneak plugin. It adds a motion between f/F and / that lets you search forward/backward for two-character combinations to jump to. With the streak feature enabled it will mask multiple matches with a single character tag, so you can jump anywhere with 4 keypresses.
Also, for normal old vim ctrl-g displays the current filename ;P
OH MY CTRL-G
ex mode is good for editing a sequence of normal mode commands as if they were a buffer, particularly good for editing ad hoc macros
"I'm not saying you should not use plugins", but you won't want to after watching this video
Amazing talk! Thankyou for this. Will be looking to implement more of these
29:02 :
dude: let's just put a slash there and see what happens! oh hey it works!
audience: WOOOW
damn nerds :D
I ain't gonna lie I'm impressed when I'm in vim when doing stuff lol it's just amazing
I went to the timestamp to laugh at the nerds (spoiler alert: anybody landing on this video about vim is a nerd). Then I saw what he did, and was so impressed by what I saw, I hit rewind and watched the whole muthafuckin video.
@@L0j1k lol
48:51
just for reference, this is one of the coolest things i've seen
I've just watched this video and removed all the vim plugins immediately
This was a very insightful video. I learned new things, and refreshed others.
45:58 is from teletypewriters (TTY), not typewriters, which was what you got the mainframe output from, before monitor screens came about.
Awesome! Finally can get rid of Webstorm which I had been using as a fancy heavy text editor anyways.
For Quickfix, you can use
:cope[n]
and
:cw
to open an IDE-style quickfix window.
Use
:ccl
to close the window.
shortening :copen to :cope is brilliant, I have to admit
I would augment this video with reading the Learn Vimscript the Hard Way document or website. Very, very informative.
This person is just brilliant at teaching
Does this guy have other vim talks? He's just awesome!!!
+1
If anyone finds with other VIM talks please post it here.
56:54 :cwin opens a little window at the bottom with all the quickfix errors. It's already included with no plugins needed, which is pretty neat.
great talk. now i gotta go back write my plugins :D
1:07:47 ans: "ex" mode refers to vi/vim ":" colon command line at bottom of screen... and another 50+ editing options available there.
Main features of "ex" mode have been in "vi" since 1970s, even before vim.
Especially usefull to do quick multi-edits, that can make changes to many lines at same time.
For instance:
You want to change variable/string SomeOldName to DaNewName everywhere in a code file...
:%s/SomeOldName/DaNewName/g
(that's it, 30:sec edit may do 400+ changes)
Ex":" mode can do 100's of things like:
:r filnam (reads another file into this one)
:60,202d (del lines 60 to 202)
:44,$w saver.txt (writes line 44-end to file)
:.,+100s/^/# / (comments next 100 lines of shell script)
Many people are using bits of "ex" mode without realizing it... and Max (speaker) knows that. Even though the words of his reply say "I forget what that is for" if you look at the screen behind him, he Does go into "ex" mode, and may know some of its abilities -but may not realize there is another full featured command line editor under there, to give you extra "super powers" for bulk changes similar to "sed".
( ex mode editing could be a separate presentation by itself )
19:21 "get current file-name". the line-command :f does that for you. or CONTROL-G . the % sign is a vim meta-character that defaults to the file-name to allow you to pass it into line-commands. interestingly, :% is the equivalent of :1,$ and allows you to do things like: :%!sort to sort a file in place. or: :%g/DELETE-ME/d to delete specific lines through-out the file. So . . . you could do this and use % twice with different meanings in the same line command: :%!sort % to sort your file in place.
I wish you discuss the `argdo` and `bufdo` commands ! It is useful when renaming some variables in multiple files or changing the filetype to unix/dos.
Question about canceling auto-complete 31:37 (I think that was the question): ctrl-E
What Microphone was used here? (Standing byside the Laptop)
Brandname,model, or Type of Microphone) would be very helpfull if somebody can tell :)
@@kirschkern8260 Been a while, but this looks like the "Zoom h4n pro " There is a newer "zoom h4n pro +" which is slightly better because of the preamps imo. I've owned both in addition to the cheaper but slightly less capable "zoom H1" all are prefect for doing something like this, and currently I only own an H1. Check out some other videos depending on your needs. Best of luck!
I've only recently ventured into Vim.
I have much to learn
Regarding ctags: For those using a German keyboard, in Linux you can use Ctrl+Alt Gr+9.
Tags it's like a magic. Really thanks!
Love this video,the ** option combines with find command is really awesome,it replaces my fuzzy find plugin.
Not for me. It is way too slow.
@@vorrnth8734 It is slow when the directory has too many files.I usually set the path to be something like “src/**” so that it will only search files inside the specific folder.
By the way you have a microphone talk into it!
You have a cursor on the screen you can use to point out what are you referring to with your speech
Vim users don't touch their mouse xD I had no problem with his mic tho.
Fun fact: ^e escapes autocomplete, reverting changes
by the time you master vim, your peers will be already Sr. Software engineer
Excelent presentation. Very useful!!!
This is a really usefull and awesome talk.
Very useful. I have a question though, I use vim on Windows in git bash and :find works very slowly, way slower then find bash command. Setting :wildignore+=node_modules didn't help. I've tested this on a test tree structure and it works. But it looks like wildignore is just filtering a list which was previously build by the find command, though it doesn't actually ignore folders during the find process itself, that's why it works extremely slow, because it browse through all the tree structure anyway. Maybe there is some other settings to skip folders while searching through the folders? Will appreciate any suggestion on this.
Remand are a dangerous rabbit hole. You can make a mapping for darn near anything.
I for example have an abominable 150+ character mapping that does loads of copying and pasting, opens a new tab, creates 2 files, and even calls a shell script.
It’s an abomination, but it works, and vim just… lets you do that utterly absurd stupid stuff, and I love it.
Great tutorial on vim tips and tricks.
Hei, how did he added shell to vim tab? is there any plugin that does this? its actually cool to have one tab especially for shell to run commands with out switching to another tab of terminal.
If you mean the tabs at the bottom, those are tmux panes-between tmux and vim, you can do just about anything!
Must see, definitely.
Thanks, OP.
Very informative. Good stuff.
Off topic to be sure, but... nice Dave Strider sticker there.
Great video, great tips. Mine: you should check :copen and :cclose
Though it's not any better, couldn't you just do "f
Really awesome talk!