I own a record player, love French press coffee, run a tiling window manager on Arch (btw), but would use the LSP rename. Now I'm having an identity crisis.
I listen to lossy music over good (but not gold-plated) Bluetooth headphones, use an aeropress, run neovim in WSL in Ubuntu on Windows, and I would probably just :windo or :tabdo a %s because I already know which files use the function being renamed. I would use the LSP, but building C/C++ projects on Windows does not play nice with clangd running in Linux 😢, and I'm too lazy to make something to reformat my compile_commands.json to work 😂. I should really start to use vimgrep more, though...
Nice video. Just a minor correction about what the neckbeard would do: 1. The neckbeard would know from experience that `:vimgrep` is painfully slow and would use `:grep` which calls an external grep utility as specified by `grepprg` vim option (`grep -n $* /dev/null` by default, but can be customized to anything else `let &l:grepprg = 'rg --vimgrep --smart-case $*'`) 2. The neckbeard would proceed to run a grep command on the relevant files/directories to exclude unwanted results (e.g. css), like `:grep "@?(p\|P)osts?" path/to/*.rb` 3. Lastly, the neckbeard would run a precise substitution command on the quickfix entries while preserving case-sensitivity and save the modified buffers in one-go, like `cdo %s/\(p\|P\)ost\(s\)\?/\1oop\2/g | update`.
Or, as one well who takes “use the best tool for the job” very seriously, I would… I mean, “the neckbeard”… would use `git grep` since this is definitely in a git repository, using the `-l` option to only list the files, which would then be used as the file list for some quick `perl -pi -e` to do the substitution on all files.
Both the video and this comment are super accurate at capturing the essence of a neckbeard. However, as a neckbeard I would not use vim for this task. Instead, I'd just grep (ripgrep nowadays, times are changing) and once I'm satisfied that I'm capturing just the right stuff I would pipe the list of files to an inline substituting `sed` incantation. Of course, all this would be done inside of a git repo so that the final result can be inspected and conveniently re-done if needed. PS. If I'm on a system that lacks `sed` I would use `perl` as a poor mans `sed`. `perl -pi -e 's/Posts?/poop/i' (rg -li Posts)`
You should be able to use `:cfdo` instead, which would run the command for all the files, not all entries, in the qf list, especially in this case where you already use %s to substitute the whole file.
Man, as a new (6 months in) Neovim user, I literally just learned about the quickfix list from The Primeagen like yesterday. Seeing it here again today doubled down that I need to start using this and get comfortable with it. Way too much goodness here. On a separate note, I just have to say how much I love the aesthetic of these videos. Also, I was a Dracula guy before, but you have turned me into a Catppuccin nerd, so for that: thanks nerd.
Great info. I know I'll be rewatching the 'neckbeard' part a few times to catch all parts. In my mind, striving to be in both the 'neckbeard' and 'config wizard' camps is going to mean being the most productive in using Neovim. Thanks for this video, nerd! 🤠
Thank you for the video :) I honestly was expecting the last user to just leave vim and run find+sed directly in their terminal; instead I learned something new! Also one small tip: if you want to try the last approach to perform a project-wide find and replace, make sure to set awa (autowriteall) beforehand like so: `:set awa`. This will prevent vim from giving you errors about unsaved changes when moving between files with find and replace.
Great comparison, I did not know where this was going beforehand and I am usually in the LSP camp, so I thought I already knew the "best" way. The neckbeard approach was new to me, I did not know there is this great builtin way.
Have been using your neovim for noobs config and adding to it myself for a few weeks. Did not realize that I could use that lsp binding for refactoring haha. I guess I’m transitioning from hipster stage ever so slowly
Great video, as always. I use LSP rename when available and Telescope->Quickfix->cdo when editing stuff like Helm charts or stuff where the LSP does not have the rename functionality baked in. On arch (btw) running a tiling WM (btw). Thanks nerd!
Love your content the way you explain things is perfect I hope you don’t get this wrong but the only thing I would suggest is drop the intro you don’t need it Ps. Thanks for sharing your knowledge with us
I am quite a new user to vim, only really use it for basic editing. Typecraft is improving my knowledge almost ready to start using hjkl keys 😊… I use Arch BTW
I would be the "stumbles down the stairs" -User: -assignment is to code mobile robots in ros -learn that ros runs only on ubuntu 20.04 -run it on a vm because dualbooting my laptop for an old distro to use only one framework seems wasteful -learn that vms are notorious for not correctly executing or displaying some ros addons -notice this new magic thing called docker -try to use other dockerfiles to build my ros setup, but fail miserably in setting up vs code correctly -be angry at vs code and use the bloody terminal -run ros docker image via wsl2 on windows -setting up my first ros nodes, but now there are at least 4 terminals open at any given time -learn about tmux and feel like a wizard -missing the pretty colours and assists of vs code -learning about vim -now this bloody rabbit hole with plugins and lua, but gods do I feel strong TLDR; Wanted to program whats basically a roomba but learned how to manipulate lua instead
Thanks for calling me a neckbeard, really needed that. I shave daily, but your description fits perfectly. I only don't use vim as an alarm, but I have a vim setup where I have a clock in it's own tile in vim, so that's kinda similar
I don't believe this was said, but one advantage of relying on something like grep instead of lsp is that you get updated documentation/comments for free.
Things have changed since our last comment. Want to find out our setup for Rails now? Join our free workshop next week - learn.typecraft.dev/neovim-and-zellij-ruby-on-rails-edition/
What I really want is neovim but without all the endless setup and constant learning. Is there a good tool that lets you search commands like you would in Blender or AutoCAD?
thanks! Make a video on dotfiles on how we can make dot files for nvim config, tmux, I have yabai and all that so we can use it on another machine with just one command
You gonna love this, so I quit vim, went to vscode cmd shift f replaced all occurrences, save, went back to nvim looked around to see if someone noticed.
IMO the config wizard way is optimal when you are coding and the neckbeard one is better for documentation, but the hipster way falls short of usefulness when you have the other two. Telescope is great for navigating files and such though. PRAISE LORD TEEJ
What helped was thinking index finger is stronger than middle finger, and going down in a file is more common than going up. Strong finger down. Less strong finger up.
Bro if I could rely on my omnisharp lsp to always work like it does in VisualStudio I would just use that rename, but because it often doesn't, I'm forced to be a neckbeard
I use the s with /gc command and oil.nvim to keep my files named consistently. Now you're telling me I can rename things WITHIN multiple files with :cdo... dude this too much power! I still don't have a neckbeard but I just got one step closer 😆
thanks nerd
I own a record player, love French press coffee, run a tiling window manager on Arch (btw), but would use the LSP rename. Now I'm having an identity crisis.
lol
Use whatever works, but whatever you use, use vim…
Espresso machine and high end DAC but yes me too, in fact I did a bit of all of this two days ago at work :/
I listen to lossy music over good (but not gold-plated) Bluetooth headphones, use an aeropress, run neovim in WSL in Ubuntu on Windows, and I would probably just :windo or :tabdo a %s because I already know which files use the function being renamed.
I would use the LSP, but building C/C++ projects on Windows does not play nice with clangd running in Linux 😢, and I'm too lazy to make something to reformat my compile_commands.json to work 😂.
I should really start to use vimgrep more, though...
You should ditch the French Press for a V60, you’ll get better coffee instantly - there’s a reason you don’t get a French press in any good Café
Nice video.
Just a minor correction about what the neckbeard would do:
1. The neckbeard would know from experience that `:vimgrep` is painfully slow and would use `:grep` which calls an external grep utility as specified by `grepprg` vim option (`grep -n $* /dev/null` by default, but can be customized to anything else `let &l:grepprg = 'rg --vimgrep --smart-case $*'`)
2. The neckbeard would proceed to run a grep command on the relevant files/directories to exclude unwanted results (e.g. css), like `:grep "@?(p\|P)osts?" path/to/*.rb`
3. Lastly, the neckbeard would run a precise substitution command on the quickfix entries while preserving case-sensitivity and save the modified buffers in one-go, like `cdo %s/\(p\|P\)ost\(s\)\?/\1oop\2/g | update`.
`:noauto vimgrep` helps with speed
Or, as one well who takes “use the best tool for the job” very seriously, I would… I mean, “the neckbeard”… would use `git grep` since this is definitely in a git repository, using the `-l` option to only list the files, which would then be used as the file list for some quick `perl -pi -e` to do the substitution on all files.
Both the video and this comment are super accurate at capturing the essence of a neckbeard.
However, as a neckbeard I would not use vim for this task. Instead, I'd just grep (ripgrep nowadays, times are changing) and once I'm satisfied that I'm capturing just the right stuff I would pipe the list of files to an inline substituting `sed` incantation. Of course, all this would be done inside of a git repo so that the final result can be inspected and conveniently re-done if needed.
PS. If I'm on a system that lacks `sed` I would use `perl` as a poor mans `sed`.
`perl -pi -e 's/Posts?/poop/i' (rg -li Posts)`
My neckbeard grew 1mm just from reading this
@@valbogda5512 “perl as a poor man’s sed”? o.O?
I think this might the highest value-per-minute UA-cam video I've ever watched.
My notes from video how to refactor:
- buy a vinyl player;
- grow beard;
- poop a lot;
- bookmark this video.
Thank you, Good job.
Lol
More options:
- Telescope -> Quickfix -> cdo
- nvim-spretre
You should be able to use `:cfdo` instead, which would run the command for all the files, not all entries, in the qf list, especially in this case where you already use %s to substitute the whole file.
very nice, learn something new every day! :)
Telescope + quickfix + :cdo + vim regex
Man, as a new (6 months in) Neovim user, I literally just learned about the quickfix list from The Primeagen like yesterday. Seeing it here again today doubled down that I need to start using this and get comfortable with it. Way too much goodness here.
On a separate note, I just have to say how much I love the aesthetic of these videos. Also, I was a Dracula guy before, but you have turned me into a Catppuccin nerd, so for that: thanks nerd.
Awesome! glad you're getting something out of these videos! welcome to the vim cult, brother
Same here, I learned about it from him on his video with the _Elixir_ guy
Thanks to all hipsters the config wizards, neckbeards and nerds, I learn new things about Vim every time I come here. nice work :)
Great info. I know I'll be rewatching the 'neckbeard' part a few times to catch all parts. In my mind, striving to be in both the 'neckbeard' and 'config wizard' camps is going to mean being the most productive in using Neovim.
Thanks for this video, nerd! 🤠
Thank you for the video :)
I honestly was expecting the last user to just leave vim and run find+sed directly in their terminal; instead I learned something new!
Also one small tip: if you want to try the last approach to perform a project-wide find and replace, make sure to set awa (autowriteall) beforehand like so: `:set awa`. This will prevent vim from giving you errors about unsaved changes when moving between files with find and replace.
This "3 levels of ..." is a very nice format! More please 😁
This is fantastic! Great timing too, I need to do this in a couple of hours. I'm fairly new to vim, so your content has been super helpful, thanks!
Glad it was helpful!
you know so much. I've been using vim for like 3 years, I don't know this much yet! also your presentation is cool :>
Great comparison, I did not know where this was going beforehand and I am usually in the LSP camp, so I thought I already knew the "best" way. The neckbeard approach was new to me, I did not know there is this great builtin way.
You have some of the most informative videos in the space, thank you!
Thanks!
I do appreciate this approach . Howeve it is still looks like magic and I feel more confident using Notepad++
Have been using your neovim for noobs config and adding to it myself for a few weeks. Did not realize that I could use that lsp binding for refactoring haha. I guess I’m transitioning from hipster stage ever so slowly
Great video, I learned a lot here! I love the three characters, please post more educational videos with them. Thanks Nerd 🥰
will do! thanks for being a memner, nerd!
Wow! This was something. I have to rewatch this video couple of times being :%s/one/two/g type of vim user. Thanks for cool video!
Glad you enjoyed it!
Great video, as always. I use LSP rename when available and Telescope->Quickfix->cdo when editing stuff like Helm charts or stuff where the LSP does not have the rename functionality baked in. On arch (btw) running a tiling WM (btw).
Thanks nerd!
Awesome as always ❤
Hey that was a creative format. Kudos. Fun and interesting.
Glad you liked it!
hey , hey, hey look who is back !!
always new things to learn in vim 👍🏻👍🏻
Nice video. Really helped me level up my NeoVim game.
Color me impressed. This is great content.
this is actually a fun one, thanks nerd.
Great vid! Love your videos!
glad u went more in depth on cdo because i learned a thing! lol
Neckbeard status confirmed.
I'm a configuration wizard, I even grew the exact same mustahe
Love your content the way you explain things is perfect
I hope you don’t get this wrong but the only thing I would suggest is drop the intro you don’t need it
Ps. Thanks for sharing your knowledge with us
good feedback thanks :)
Neckbeard here (apparently), but just wanted to point out that you don't need any plugins (lspconfig included) to run an LSP in Neovim.
I am quite a new user to vim, only really use it for basic editing. Typecraft is improving my knowledge almost ready to start using hjkl keys 😊… I use Arch BTW
Welcome aboard!
I would be the "stumbles down the stairs" -User:
-assignment is to code mobile robots in ros
-learn that ros runs only on ubuntu 20.04
-run it on a vm because dualbooting my laptop for an old distro to use only one framework seems wasteful
-learn that vms are notorious for not correctly executing or displaying some ros addons
-notice this new magic thing called docker
-try to use other dockerfiles to build my ros setup, but fail miserably in setting up vs code correctly
-be angry at vs code and use the bloody terminal
-run ros docker image via wsl2 on windows
-setting up my first ros nodes, but now there are at least 4 terminals open at any given time
-learn about tmux and feel like a wizard
-missing the pretty colours and assists of vs code
-learning about vim
-now this bloody rabbit hole with plugins and lua, but gods do I feel strong
TLDR; Wanted to program whats basically a roomba but learned how to manipulate lua instead
hahaha hell yeah
What about the user who is smart enough to use telescope and a macro to have the same control as the neckbears and uses a key map to make it happen?
Damn. I love the neck beard flow
I do too
Thanks Nerd. Great video btw
Hey, thanks!
Thanks for calling me a neckbeard, really needed that. I shave daily, but your description fits perfectly. I only don't use vim as an alarm, but I have a vim setup where I have a clock in it's own tile in vim, so that's kinda similar
Love this, would like to see more examples!
awesome!
Wouldn't the neckbeard know about \? Amazing stuff as always!
Hell Yeah, Brother! Thanks Nerd.
I’m a mix of three. I’m a neckbeard-hipster-plugin?
oh I didnt know about global replace, thanks!
i have a french press 😅 but personally would use the "find & replace" function in any number of gui software with navigation tree in side panel
I just installed 2 plugin vim: oil + nvim-surround. Use vim is a simple text editor, all remaining operations use the terminal
MORE MORE MORE videos like this !!!!
As a neckbeard, I'd use cfdo when making multiple file changes, as it's more efficient than plain ole cdo 🤓.
I don't believe this was said, but one advantage of relying on something like grep instead of lsp is that you get updated documentation/comments for free.
how do you manage http requests, with postman or with a nvim plugin? Great Content!
Using LSP rename only works in the current buffer for me. Are you using one or more additional plugins to have it work across multiple files?
Not sure. It works in solargraph and ruby
which ruby or rails lsp are you using?
h
Solargraph
Things have changed since our last comment. Want to find out our setup for Rails now? Join our free workshop next week - learn.typecraft.dev/neovim-and-zellij-ruby-on-rails-edition/
So helpful, thanks!
The last one is so cool and usefull :)
Bookmarked this
Hell yeah, brother
The neckbeard would rather quit with `:xa`, less characters typed + it only saves the buffers that were modified
I love that the hipster has a macbook and the conf wiz a framework laptop. I use both, where does that put me?
A menace to society
@@typecraft_dev Ok that's not too bad, I thought it made me a hyper-hipster.
What I really want is neovim but without all the endless setup and constant learning. Is there a good tool that lets you search commands like you would in Blender or AutoCAD?
cdo all the way to goal.
This would have been a perfect video if it had the ethereal “LDUR” background voice….
thanks man. cool video
I need more nvim videos!.
LSP rename or sed, i do use helix but should be equivalent
thanks! Make a video on dotfiles on how we can make dot files for nvim config, tmux, I have yabai and all that so we can use it on another machine with just one command
You gonna love this, so I quit vim, went to vscode cmd shift f replaced all occurrences, save, went back to nvim looked around to see if someone noticed.
Let's gooooo
I bet the neckbeard is not even using neovim, he is using his own Bram's vim setup written in viml 20 years ago
Sorry for being 30 minutes late.
its ok I'll forgive you for now.
Yay
4:32 Gem^^
I like the last one but with \b to avoid postcss
IMO the config wizard way is optimal when you are coding and the neckbeard one is better for documentation, but the hipster way falls short of usefulness when you have the other two. Telescope is great for navigating files and such though. PRAISE LORD TEEJ
I use arch btw and I still confuse 'j' with 'k' in vim 😅
fellow arch brother
What helped was thinking index finger is stronger than middle finger, and going down in a file is more common than going up.
Strong finger down. Less strong finger up.
Do I need mustache to be a UA-cam developer?
Great content and edition, thank you.
Yes you do
Awesome
so you're telling me the so feared vim hipster does not know about :cdo s/ hmmmmmm
FRAMEWORK, laptop!! sorry still love seeing them.....
stay tuned!!! video about the framework coming up
damn it, i'm not a neckbeard
Bro if I could rely on my omnisharp lsp to always work like it does in VisualStudio I would just use that rename, but because it often doesn't, I'm forced to be a neckbeard
Arch? For a neckbeard? Pffft. Slackware ;)
ok I'm a hipster neckbeard wizard as I use the 3 methods, depending on, well, I don't know.
great video btw, keep going. I didn't know what "french coffee" is, and as a French, it makes me laugh :)
Poop: pure object oriented programming
who am I if I use all 3 approaches?
I am the neckbeard guy 😂 also with keybindings instead of typing commands
`:cdo update` so you aren’t touching modified times on unedited files
great acting nerd!!!
You're obsessed with "poops"
Show us your keyboard! It sounds nice.
Don't forget about CFilter
sed can do it, how about macro over quickfix?
Imagine just using normal 21st century graphical editor and doing this in 5 sec without any stress
I use the s with /gc command and oil.nvim to keep my files named consistently. Now you're telling me I can rename things WITHIN multiple files with :cdo... dude this too much power!
I still don't have a neckbeard but I just got one step closer 😆
`:bot copen`, because his terminal is split vertically. Do I need a shave?
Nice.
Hello, have I stumbled upon the secret Archilinati society?
yes you have. welcome, brother
Yo nerd, are you using linux awesome?
using i3wm in arch linux!
Combine cdo with telescope and quickfix
I use NixOs btw
just dropping it in 😂
Love the concept of nixos. I'm going to have to look into it more in the future
That it I have to subscribe now
I use Ruby on Rails BTW...