This was SOOOO much more helpful than any other nvim config video I have seen, it was exactly what I needed to understand and set up my own nvim config. I appreciated the explanations of what things did and how they worked rather than just showing the code to install them. Thank you!
went crazy because of "sourcing your config is not allowed with lazy" errors in 2024/6 with V10.0. After cloning the repository everything was fine, thanks for this great tutorial in the end. Newbie to NeoVim who has now learned a lot instead of just mindlessly copying configurations 👍 Your explanations really helped to make sense of the configuration next times. Thank you.🤗
This is great! I'm new to neovim and I've already watched like 5 different neovim setups and by far, this video explains a lot more in detail than the others. Thanks and keep posting content!
When I got into using neovim, I used to just copy youtubers' config files and use them, without knowing how they even worked. This is the first tutorial which I have followed, and created the files all by myself, and I have to say, I have learnt so much about neovim configuration. Thanks for this!
I'm completely new to vim and i was overwhelmed by the amount of resources addressing how to build your own config. Just coming from a total VSCode noob it was hard for me to differenciate between - native nvim functionality and config - nvim plugins - nvim package managers - nvim distributions This video made it easy for me to not just blindly copy some config files and hope it works but actually understand whats going on. Thank you! 10/10 would recommend
The guy complaining about this video not being complete or what he expects should speak for himself! This is by far the best neovim video in terms of indepth explanation that I have had as a beginner. The tutor did a nice and hugely comprehensive job! Pls bring on other area you couldn't quiet I'm sure for time sake capture in this particular video🙏 Nice job once more, keep it up!
Thank you so much for this video. First time I configured Neovim without using a preconfigured distribution (preconfigured is fine, but you can spend loads of time trying to figure out how to customise a particular config) and I finally see how simple it is to get Neovim working the way I want it.
Awsome learning material. Very useful tips! Just one small thing i've noticed: when you were setting up Telescope, you've thrown your keymaps inside the `key` table right bellow the config parameter. That table is meant for lazy loading the plugin with the keymaps. If `lazy = false` was not assigned before, the plugin would not load at all because it would depend on a shortcut which executes a command that could only be provided by the plugin itself, almost like a circular dependency problem.
Good point! I always use telescope, a bit of a hangover from vscode and atom, but you're right, if you want it to lazy load, you would have to manually start for the keybinds to work.
This has been great! I'm only half-way through but I'm already very glad to find a tutorial like this. Everything I find seems to want to get you from 0 to "fully fledged IDE" in a matter of minutes, but I wanted a step-by-step explanation because I want to be able to customize a lot of different things and it was very hard to figure out what to change and where. My own setup is already different than yours (certain keymaps, options, a different colorscheme) but I know exactly which file I'd edit and how to make further changes and install more plugins.
Great video! Doesn't really assume any previous knowledge and has great explanations of each step. As someone who just codes for fun, and wants to avoid vscode, this was a perfect introduction. Even my 12 year old is following along easily.
I second this. a HUGE problem with neovim tutorials is they assume you have a decade of programming experience. Thank you so much for posting this Rad!
My LazyVim lsp keymaps just broke (though admittedly i did do some weird stuff to the config) so this video just came at the perfect time for me to recreate the whole thing. Many thanks!
Super video! Was only looking for random useful plugins and immediately installed indent blankline and autotag. Loving them! Few recommendations from me, ctrlxa ( flip true to false with ctrl x a) and harpoon to jump to specific buffers instead of cycling through them. Thanks again for the video! 🙌
Awesome video. I will give this a try (again) tomorrow on macOS. Just to have a plane/basic, functional nvim on my system. Very very detailed guide 👌🏻 Thank you.
Neovim newbie and following your install guide. A few minor things I cannot reproduce (most likely, because I am on arch with konsole as terminal emulator), but otherwise extremely helpful. Thanks a lot for all the work you put into this.
I'm fairly new to Linux and Neovim as well, and just switched from Konsole to Wezterm as it also uses Lua config files. This solves a lot of the Konsole limitations and more practice with Lua.
Thank you so much!!! . Very detailed!!! Extremely helpful Is it possible to share references or make a video on how to get started with absolute basics e.g vim.fn , vim.opt, how to read a plug-in for additional setup etc. Could never find any resources on them.
Glad that you found it helpful! Great suggestion. I will definitely consider making some content around the neovim and vim APIs! For the moment, the best place to start with plugin configurations is the documentation for each plugin which have linked, but feel free to take inspiration from my nvim config too!
While I am very gratefully for you well produced video, I would like to suggest that should you do such a project again please give the video its own github repo. Following along was helpful in the learning process to me, but finding typos and other errors was frustrating. Please post your personal live repo to so we can see what changes you have made, and a static repo that just follows the video.
Thanks for this. This tutorial is one of the best I have seen on any subject. Kudos to you. I am new to linux and Nvim and this has helped me understand better how much can be done using the terminal instead of always relying on GUI. Would like to know why several of your configurations are different in your Nvim repository than in the video. Do the differences improve the way Nvim works? I would like to see you do a video on configuring .bashrc to understand it better and improve its functionality. Thanks again.
Thanks! I am really glad you found the video helpful. Yes, you're right, my config has evolved somewhat since this video was recorded and I will do an update at some stage (this video is almost a year old). You may have already seen it, but in case you didn't, I have included the git commit for the config as it was at the time of recording in the video description. Also, I actually do have a video using zsh - a bash alternative - if you'd like to check that out. Thanks for the comment and happy coding!
@@theradlectures Thanks for your reply. I did see the video using zsh. That will be my next project since I also us a Mac which has the zsh shell. I am new to this whole githup thing, so I don't understand how to find the commit for Nvim you referenced. I would like to see it, so any help would be appreciated. Thanks againg for doing these video instructions.
@@mjh1348 no worries at all. You can check out this link which contains the github code at the time of recording (noting there have been changes since then as you point out): github.com/radleylewis/nvim/tree/85f6a8d2ff35bdf4c28db92e4965825692364317
Hey dude great tutorial just keep going like that! I have one question though, I've set up LSP for c/c++ but my header files are recognized as cpp files is there a way to fix it?
Excellent, I have been struggling to setup neovim from start with lua and this is a perfect starter pack. Thank you very much for putting it together. I have a question I'm following along, but how are you getting this small window whenever you are typing a command ?
i watched entire video, and move completely to neovim. I'm using go as a backend dev, installed some go related plugins and its working great. May be you already answer this but, you said u're going to make a second video, any update on that. BTW great work.
that's a great guide as long as everything works, however when something is not working you are kinda left on your own as nothing is standardized it's hard to find any relevant help online. For instance i hardly find any help on how to change the defaut efm config from the standard formatting to a custom formatting which is a common thing to do though. Lua_ls is not working as expected (no manual entry found for) too and i can't find any help as other people online have different plugins and way of configuring them because of that i don't event know where to start looking in my (your) own config files. I think i'm going to fall back to a pre-configured neovim distribution, it will be quicker and work out of the box.
I am performing some maintenance in the NeoVim configuration, almost entirely written in Lua. Is there a way to record function types in Lua, including descriptions of their parameters?
Great video. i just finished it and i've been following along for almost a week now lol. I checked each one of the plugins and everything made sense except the neoconf and neodev plugins, they just seem so random. I'll admit that i've never really worked on huge projects with configuration for the tools but i don't really get the point of switching to json configs when the entire time we were using lua. Would love an explanation or not, i spent too much time on this anyway. Once again, lovely video and thanks a lot.
Glad that the video was helpful! You're spot on that neoconf and neodev are not particularly useful in the context of this config setup, however, I included them due to the fact I've been using them recently on some other projects. You can definitely proceed without them, ultimately I could have omitted them as I did with some other plugins I use such as leap, copilot nvim etc. Good feedback!
Just FYI - your mic is popping out pretty regularly, guessing maybe a noisegate or filter being uber-aggressive (EDIT: looks like you caught it after the first section :D) Otherwise, great info! I've been avoiding a full restart of my config since null-ls archived. Think this looks like the perfect reason to get into it!
Thanks, Matt! Yes, apologies for the audio there toward the start. Just an FYI that if you use null-ls there is a maintained fork under nvimtools/none-ls.nvim if you want to stay on that track. I was using null-ls for a long while but am happy with the shift to efm. Have fun with the new config!
Thanks for this tuto, it's the best explanation I get as a beginner. I just wanna how to fix nvim status bar at top. my terminal is a gnome terminal and ubuntu 22.04 haven't alacritty packet.
This has been amazing Radley! Thank you so much! I just finished the tutorial and I spent en entire month on it just pausing the video and then doing my own reading/configuration. I learned so much from you :D If it's possible could you add an LSP, Linter, and Formatter for PHP to your nvim GitHub repo? I tried adding it on my on own (tried pslam/phpactor as LSPs) + (tried phpcs/phpstan as Linters) + (phpcbf as Formatter) but I couldn't get it to work The only thing I got to work was phpcs, but it was so annoying, it wanted me to write a whole dang intro document in the beginning of every php file, otherwise it won't shut up :))
Hey man, that's awesome. I am really happy to hear how much you got out of the tutorial. Actually, I'm not a php developer. But if I get a chance at some point I'll take a look. No promises though haha.
What a fantastic video! I've been using vim for quite a while, but stuck to a fairly vanilla setup, as I used it for quick configs, etc., and not as an IDE. This was the detailed, well explained video reference I was looking for. Thanks so much. A quick comment that you probably cannot address, but what the hell.... I get some startup lag that I'm not seeing in the video when you relaunch. Not terrible, but annoying compared to my previous set up. Any thoughts?
Glad to hear the video was helpful! You may have already taken some of these steps, but the course of action that I would take in this situation would be: 1. start neovim like this: "nvim --startuptime startup.log" which will log all the startup data into the file startup.log 2. review the plugins to see if you can switch any to lazy loading (without detriment to your setup) 3. take a look at your `:checkhealth` within neovim to ensure there are no startup related warnings (although unlikely, but if all else fails this might provide more information). What OS are you running out of curiosity? I am running this config on a few machines and get an average startup of 60-70 milliseconds (you will find this in your startup log).
I have an issue whit splits shortcut. When I press s, it's change mode to insertion ... so when I try to split the window with your shortcut it's just get in insertion mode. Do you have any idea why ?
's' is a keybinding in vim that deletes the character under the cursor and then enters insert mode. So for this reason the leader prefix is needed (spacebar in my case). Hope that helps!
I want to configure the settings on my theme plugin (I'm using dark_flat), I have to add transparent = true but I don't know which file should I add this statement?
Great video, I definitely learnt a lot. I am facing a bit of an issue if someone could help out, both tmux and nvim works nicely seperately but if try running nvim with tmux it crashes with "server exited unexpectedly". Is anyone also facing this issue?
One of the best and most comprehensive tutorials on the thing I've seen so far. Thank you very much for this wonderful piece of work. I noticed that you don't stack `require` and `return` statements. Is that a preference or a limitation? I've been trying to organise my config to get away from a single init file, but found it difficult to understand how it wants me to do things in a directory tree with multiple levels. For example, if I have .\User\lazy\plugins and then want to make init and require it from init in .\User my statement looks like require'User.lazy.plugins', right? But I get "this file doesn't exist"... I also tried relative paths (like 'lazy.plugins') - still the same error. Also, I'm concerned that as you go up the tree the statements get more and more verbose as you have to call out modules starting at work directly (basing it on how other peoples configs look)... am I missing something here?
Thanks for the kind words! I am glad you found it helpful. Generally speaking I keep my file structure flat. I do see a lot of people using the User/... structure. As long as things are references correctly by the Lazy instantiation then this should not be an issue, even if, as you mention, you are using init.lua (this is standard behaviour). Good luck on the journey to fixing it. Hard to say, but I would start with the lazy reference to to plugin (note: you are probably already aware but you can pass multiple plugin directories here).
@@theradlectures - Thanks for the response. My question wasn't as clear as it should have been... sorry. I'd be very appreciative if you could answer a rephrased version, but if you didn't see this or just don't feel like it - I totally understand. What I essentially want to do is to have a config that gets called with a single `require` statement in top level ./init.lua (such that I can easily swap configs without using git) and has sort of an "OOP" structure, that just by looking at directory tree kinda reflects what gets called by what. So far I internally settled on having plugin setup tables in sepparate files in sub-directory of where the package manager setup resides... but that doesn't seem to work because (I presume) Lua treats every `require` call as if it's made from the top level. So if I have something like... 1. ./init.lua --here I just want to have require('User') 2. ./lua/user/lazy/init.lua 3. ./lua/user/lazy/plugins/init.lua (Sort of a nested module kind of situation.) ...to call `plugins` from `lazy `I have to write require('user.lazy.plugins') and not just require('plugins'), which is a bummer, because now if I'd want to rearrange the directory I'd have to edit every require statement... which means that now I have to write some utility function that has to deal with module.path and extract the obsolute position of a module that I want to connect my submodule to... and so on and so forth. I'm just not familiar with Lua, like, at all... Do any of the assumptions above strike any red flags iyo? Just wondering if satisfying my OCD is even worth it, i guess... %) Sorry for this drawn out explanation. I get that it's more of an SO question than a YT comment, so, again, if you don't feel like it - no hard feelings.
Thanks for your message@@arcuscerebellumus8797! The syntax you are using seems to be correct with respect to requiring files in lua. However, if I understand correctly, you want to require files based on a global variable. You can take a look at this stack overflow post: vi.stackexchange.com/questions/36647/neovim-lua-script-to-dynamically-load-lua-config-files.
Hey great video! Thanks a ton for this! I just had one question. I am having a hard time adding extensions to telescope. Could you give some idea how to do that ? I basically want live_grep to function from project root and not current working directory and below. Any leads would be great! Thanks !!
Great video. I was searching much neovim videos. That video is best one. I have 3 questions. First question is: In my case, Ctrl+a doesn't split screen and doesn't show terminal. Can you tell me my config's problem? Second question is: How change file name? Third question is: I can't paste on nvim from other windows. When paste only few symbols pasted. How enable paste from other window? Thank you.
Thanks for your comment! If you want to split your screen, it depends on whether you are in tmux or in neovim, so be sure to check your keymaps. With respect to file changes, the easiest way to rename a file is likely with `r` in the file explorer. Finally, check to ensure that you have the correct options for copy paste in the vim opts. Good luck!
Please make video on setting up wsl with all the terminal and neovim setup. Also I am using vscode with vim for my daily development. If possible make setup like vscode or beginner friendly.
hey, at 1:28:00 i am unable to install python3.10-venv on ubuntu 23.10 [sudo] password for sebvu: Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package python3.10-venv E: Couldn't find any package by glob 'python3.10-venv' i don't really know what else to do from here, as i believe it's required to install black when i try installing black, this is my error. ▶ # [14/14] spawn: python3 failed with exit code 1 and signal 0.
I really appreciate you doing this tutorial. As a noob to coding, learning lua via setting up nvim has felt like my first real coding project and this 'real world' application has helped me understand the 'why' of coding not just the 'how'. So, thank you for giving me a break thru moment in my coding journey. One question though, the lsp_cmp_lua and diependencies language in the LSP Config.lua breaks my build regarding setting up my cmd_nvim config. I feel something was left out of the tutorial that connects these two. Any hints to help me out? Thanks!!
It will be great if you make a how to for supporting salt and jinja2. It is a little frustrating for me to do this since i need 2 different lsps in a single sls file.
I can not for the life of me get C-j and C-k to work with navigating snippets. C-p and C-n work. .But the rebindings to cmp.mapping.select_next_item dont work at all
Thank you! Its really helpful! But on part where we setup lsp i drop. Because it was hard to understand and your github is updated and not like in video
Thanks for the feedback. I plan to make an updated video tutorial at the end of the year. However, you can find the git commit from the code at the time of this recording in the video description, so that will help you navigate the code from the tutorial (rather than the updated code as you mentioned).
any idea why when i save a file i have to save twice, i will save once and then formatting with happen and then i will have to write again. Great video btw
When you start installing efm and the Lsp's you skip some steps making the video hard to follow, for example the Lspsaga keymap isn't even on the github page, but besides that really helpful video.
i can even set the nvim config that allows me to do MERN development with ease..... My primary code editor is vscode, now the day i heard it's made with electron(JS), so its basically a browser, thats why so much of load time, for my TS projects , the JAVA intellisense will also load huh? nah dont need that, though i have a very good command over the VS code snippets and key-bindings...... but as i can now do my work with only key-board(95%), i have a courage now to use nvim, with lazyvim ofcourse, but i could not find any proper way to install within windows 11, its the tree-sitter that is giving me error, says from neo-tree, and also when im inside the project directory, and opening the tree with leader_key-e , and opening a file from there then its gives me the error, so should i try it with my WSL(Debian), will it be more convenient?
Thx for information, it was helpful. But, man please do not type "clear" after every command. I'm understand that you care about your screen clearance, but it's tutorial. And terminal log is very helpful in it, especially if someone will repeat after you.
As someone who is new to Neovim and had no idea where to start: THANK YOU!
This was SOOOO much more helpful than any other nvim config video I have seen, it was exactly what I needed to understand and set up my own nvim config. I appreciated the explanations of what things did and how they worked rather than just showing the code to install them. Thank you!
went crazy because of "sourcing your config is not allowed with lazy" errors in 2024/6 with V10.0.
After cloning the repository everything was fine, thanks for this great tutorial in the end.
Newbie to NeoVim who has now learned a lot instead of just mindlessly copying configurations 👍
Your explanations really helped to make sense of the configuration next times. Thank you.🤗
Great to hear it. In a few months I'll do an updated video. Thanks for the feedback!
This is great! I'm new to neovim and I've already watched like 5 different neovim setups and by far, this video explains a lot more in detail than the others. Thanks and keep posting content!
Thanks man, much appreciated.
When I got into using neovim, I used to just copy youtubers' config files and use them, without knowing how they even worked. This is the first tutorial which I have followed, and created the files all by myself, and I have to say, I have learnt so much about neovim configuration. Thanks for this!
only 15 minutes into the video and this video already proves to be a very useful not only to nvim but to the linux cli in general
I'm completely new to vim and i was overwhelmed by the amount of resources addressing how to build your own config.
Just coming from a total VSCode noob it was hard for me to differenciate between
- native nvim functionality and config
- nvim plugins
- nvim package managers
- nvim distributions
This video made it easy for me to not just blindly copy some config files and hope it works but actually understand whats going on.
Thank you! 10/10 would recommend
this might have been the best video I have ever watched
Thanks man! Means a lot!
The guy complaining about this video not being complete or what he expects should speak for himself! This is by far the best neovim video in terms of indepth explanation that I have had as a beginner. The tutor did a nice and hugely comprehensive job! Pls bring on other area you couldn't quiet I'm sure for time sake capture in this particular video🙏
Nice job once more, keep it up!
Thanks very much for the nice feedback! Glad this was of use for you, I will definitely follow up with a more in depth video soon.
Duuuude! You are an angel. This is the walkthrough I needed. Thank you!! ❤
Thank you so much for this video. First time I configured Neovim without using a preconfigured distribution (preconfigured is fine, but you can spend loads of time trying to figure out how to customise a particular config) and I finally see how simple it is to get Neovim working the way I want it.
Awsome learning material. Very useful tips!
Just one small thing i've noticed: when you were setting up Telescope, you've thrown your keymaps inside the `key` table right bellow the config parameter. That table is meant for lazy loading the plugin with the keymaps. If `lazy = false` was not assigned before, the plugin would not load at all because it would depend on a shortcut which executes a command that could only be provided by the plugin itself, almost like a circular dependency problem.
Good point! I always use telescope, a bit of a hangover from vscode and atom, but you're right, if you want it to lazy load, you would have to manually start for the keybinds to work.
this gold man , I spent days trying to configure my nvim , thank you very much !
This has been great! I'm only half-way through but I'm already very glad to find a tutorial like this. Everything I find seems to want to get you from 0 to "fully fledged IDE" in a matter of minutes, but I wanted a step-by-step explanation because I want to be able to customize a lot of different things and it was very hard to figure out what to change and where. My own setup is already different than yours (certain keymaps, options, a different colorscheme) but I know exactly which file I'd edit and how to make further changes and install more plugins.
Awesome. That's great to hear. Certainly that was my intention, to allow viewers to understand how to configure their own setups.
this is the only clear nvim setup video
You are awesome, step by step no rush. fully detail explanation.
Thanks a lot!
Wow this just up my nvim confing and lua understanding, thank you for doing a wonderful job. This video is exceptional.
I use LazyVim from Folke, but I'm gonna follow this video and recreate the same config in vanilla Neovim. Thanks for this, great tutorial 👍🏻
No worries at all! I hope it assists in setting up your own config. Drop a comment if you come across any other nice optimisations.
Great video brother!! Im WAITING for the second video you mentioned
Nice one man! Stay tuned!
This is a well done walkthrough. Your explanations really helped to make sense of the configuration. Thank you.
Great video! Doesn't really assume any previous knowledge and has great explanations of each step. As someone who just codes for fun, and wants to avoid vscode, this was a perfect introduction. Even my 12 year old is following along easily.
Aweseome! Thanks for the sub!
I second this. a HUGE problem with neovim tutorials is they assume you have a decade of programming experience. Thank you so much for posting this Rad!
Appreciate it, @@lingtoone3719. love the username btw!
Thanks! It's poking a bit at Chinese 零(read as "ling") means zero. Then to 1. 0 to 1
Thank you so much! It is wonderful how in one tutorial video, I can get to do lsp from scratch.
thank u! i have started using neovim thanks to your great guidance and tutorial.
Great video! Very informative. Loved how you explained everything, giving us a foundation to build upon. Thank you! 😄
Such an amazing, very very informative video almost everything is covered in video.❤❤
Glad you liked it!
My LazyVim lsp keymaps just broke (though admittedly i did do some weird stuff to the config) so this video just came at the perfect time for me to recreate the whole thing. Many thanks!
I know the pain of a broken config. Glad this could be of use! Cheers!
Echoing what others have said here, thank you!! This is the best nvim tut that I've come across. Super appreciate! Sub'd.
Very nice video. Very easy to follow even if you don't know the lua language!
Thx so much. This is a great resource for learning and bootstrapping yourself in this ecosystem
ChadNV does most of this out of the box. But great video! I learned the bit about Tmux
Super video! Was only looking for random useful plugins and immediately installed indent blankline and autotag. Loving them! Few recommendations from me, ctrlxa ( flip true to false with ctrl x a) and harpoon to jump to specific buffers instead of cycling through them. Thanks again for the video! 🙌
Thanks for the great recommendations, I will be sure to check out ctrlxa and harpoon! Glad you enjoyed the video.
Such great work!! I learned so much watching this video and perusing your nvim repo! Keep it up!
Thanks! Glad it was useful. Stay tuned for a more advanced video soon! Thanks for the kind feedback!
Thanks, mate! Very helpful and concise video.
P.S. Your inconsistent use of single and double quotes is killing me! 🙂
Awesome video. I will give this a try (again) tomorrow on macOS. Just to have a plane/basic, functional nvim on my system. Very very detailed guide 👌🏻 Thank you.
7:52 , Thank you so much!! I was trying to quit neovim for a month now
i like your teaching style a lot. great video.
Neovim newbie and following your install guide. A few minor things I cannot reproduce (most likely, because I am on arch with konsole as terminal emulator), but otherwise extremely helpful. Thanks a lot for all the work you put into this.
No worries at all! Good luck with your new config!
I'm fairly new to Linux and Neovim as well, and just switched from Konsole to Wezterm as it also uses Lua config files. This solves a lot of the Konsole limitations and more practice with Lua.
really good teaching skill man
Thanks, brother.
Great video man thanks a million easy to follow you don't assume any previous knowledge and great!!!
Really glad it was helpful! Cheers man.
Amazing video. i watch it all entirely. So interesting. New sub if you keep doing content like this.
Thanks, brother! Stay turned for more soon! Thanks for the sub.
Amazing, very clear :D whenever you have time, you add also the same for go :D
General workflow tips and more VIM tutorials would be nice
Fantastic video! Thank you so much!
I'm using LunarVim and wanted something more light weight and easier to config but all the LSP guides are kinda old. Thank you for the helpful vid.
Thank you so much!!! . Very detailed!!! Extremely helpful
Is it possible to share references or make a video on how to get started with absolute basics e.g vim.fn , vim.opt, how to read a plug-in for additional setup etc. Could never find any resources on them.
Glad that you found it helpful! Great suggestion. I will definitely consider making some content around the neovim and vim APIs! For the moment, the best place to start with plugin configurations is the documentation for each plugin which have linked, but feel free to take inspiration from my nvim config too!
thank you for sharing with detail explanation.
I think regarding Windows and NerdFonts, we can just select it from the powershell settings and we'd be fine right?
While I am very gratefully for you well produced video, I would like to suggest that should you do such a project again please give the video its own github repo. Following along was helpful in the learning process to me, but finding typos and other errors was frustrating. Please post your personal live repo to so we can see what changes you have made, and a static repo that just follows the video.
Everything is in the git history. I have included the commit corresponding to the video to make it easier.
@@theradlectures I need to up my git skills :(. I did not think of that.
All good brother. Your feedback is still on point, a separate branch would not hurt and I will consider this in upcoming videos!
Thanks for this. This tutorial is one of the best I have seen on any subject. Kudos to you. I am new to linux and Nvim and this has helped me understand better how much can be done using the terminal instead of always relying on GUI. Would like to know why several of your configurations are different in your Nvim repository than in the video. Do the differences improve the way Nvim works? I would like to see you do a video on configuring .bashrc to understand it better and improve its functionality. Thanks again.
Thanks! I am really glad you found the video helpful. Yes, you're right, my config has evolved somewhat since this video was recorded and I will do an update at some stage (this video is almost a year old). You may have already seen it, but in case you didn't, I have included the git commit for the config as it was at the time of recording in the video description. Also, I actually do have a video using zsh - a bash alternative - if you'd like to check that out. Thanks for the comment and happy coding!
@@theradlectures Thanks for your reply. I did see the video using zsh. That will be my next project since I also us a Mac which has the zsh shell. I am new to this whole githup thing, so I don't understand how to find the commit for Nvim you referenced. I would like to see it, so any help would be appreciated. Thanks againg for doing these video instructions.
@@mjh1348 no worries at all. You can check out this link which contains the github code at the time of recording (noting there have been changes since then as you point out): github.com/radleylewis/nvim/tree/85f6a8d2ff35bdf4c28db92e4965825692364317
Hey dude great tutorial just keep going like that! I have one question though, I've set up LSP for c/c++ but my header files are recognized as cpp files is there a way to fix it?
Excellent, I have been struggling to setup neovim from start with lua and this is a perfect starter pack. Thank you very much for putting it together. I have a question I'm following along, but how are you getting this small window whenever you are typing a command ?
Glad it helped! The utility that displays the key presses is "screenkey" in linux!
i watched entire video, and move completely to neovim. I'm using go as a backend dev, installed some go related plugins and its working great.
May be you already answer this but, you said u're going to make a second video, any update on that.
BTW great work.
That is awesome! Really glad it was helpful. Yes, I plan to release a "Next Level NeoVim" with debugging, AI tooling and note taking before Christmas.
that's a great guide as long as everything works, however when something is not working you are kinda left on your own as nothing is standardized it's hard to find any relevant help online. For instance i hardly find any help on how to change the defaut efm config from the standard formatting to a custom formatting which is a common thing to do though. Lua_ls is not working as expected (no manual entry found for) too and i can't find any help as other people online have different plugins and way of configuring them because of that i don't event know where to start looking in my (your) own config files. I think i'm going to fall back to a pre-configured neovim distribution, it will be quicker and work out of the box.
I'm using Mac and it's not installing the lazy.nvim after adding the line require('config'). Timestamp: 20:30. anything I can troubleshoo
I'm stuck on connecting nvim-cmp because I get the error module 'cmp_nvim_lsp' not found
Make sure that you have the below plugin included as a dependency in the lsp config (see my github for guidance).
"hrsh7th/cmp-nvim-lsp"
@@theradlectures thank you for awesome guide!
I am performing some maintenance in the NeoVim configuration, almost entirely written in Lua. Is there a way to record function types in Lua, including descriptions of their parameters?
Yes. You can check out my nvim repo in the utils(?) file. There are parameter and return type documentation examples there (similar to jsdoc)
Thank you very much. I have tried this solution and it can solve my problem
Great video. i just finished it and i've been following along for almost a week now lol.
I checked each one of the plugins and everything made sense except the neoconf and neodev plugins, they just seem so random. I'll admit that i've never really worked on huge projects with configuration for the tools but i don't really get the point of switching to json configs when the entire time we were using lua.
Would love an explanation or not, i spent too much time on this anyway. Once again, lovely video and thanks a lot.
Glad that the video was helpful! You're spot on that neoconf and neodev are not particularly useful in the context of this config setup, however, I included them due to the fact I've been using them recently on some other projects. You can definitely proceed without them, ultimately I could have omitted them as I did with some other plugins I use such as leap, copilot nvim etc. Good feedback!
In the lua/config/options.lua
opt.relativenumber = true
opt.number = true
if someone isn't seeing the same number column as him add the second command
very nice explanation..
Great video
Hi, I'm having a problem with noice.nvim and it's always giving a message
Notify
No information Available
How can I disable or hide it?
hi im having the same issue too. did u manage to find a workaround?
Just FYI - your mic is popping out pretty regularly, guessing maybe a noisegate or filter being uber-aggressive (EDIT: looks like you caught it after the first section :D)
Otherwise, great info! I've been avoiding a full restart of my config since null-ls archived. Think this looks like the perfect reason to get into it!
Thanks, Matt! Yes, apologies for the audio there toward the start. Just an FYI that if you use null-ls there is a maintained fork under nvimtools/none-ls.nvim if you want to stay on that track. I was using null-ls for a long while but am happy with the shift to efm.
Have fun with the new config!
Hell yeah! I had no idea someone had picked it up. Will try efm, but good to know.
Thanks. I used some settings.
Thanks for this tuto, it's the best explanation I get as a beginner. I just wanna how to fix nvim status bar at top. my terminal is a gnome terminal and ubuntu 22.04 haven't alacritty packet.
Great tutor!
This has been amazing Radley! Thank you so much! I just finished the tutorial and I spent en entire month on it just pausing the video and then doing my own reading/configuration. I learned so much from you :D
If it's possible could you add an LSP, Linter, and Formatter for PHP to your nvim GitHub repo? I tried adding it on my on own (tried pslam/phpactor as LSPs) + (tried phpcs/phpstan as Linters) + (phpcbf as Formatter) but I couldn't get it to work
The only thing I got to work was phpcs, but it was so annoying, it wanted me to write a whole dang intro document in the beginning of every php file, otherwise it won't shut up :))
Hey man, that's awesome. I am really happy to hear how much you got out of the tutorial.
Actually, I'm not a php developer. But if I get a chance at some point I'll take a look. No promises though haha.
@@theradlectures No pressure, your video did a lot for my learning already so thank you anyway :)
What a fantastic video! I've been using vim for quite a while, but stuck to a fairly vanilla setup, as I used it for quick configs, etc., and not as an IDE. This was the detailed, well explained video reference I was looking for. Thanks so much.
A quick comment that you probably cannot address, but what the hell.... I get some startup lag that I'm not seeing in the video when you relaunch. Not terrible, but annoying compared to my previous set up. Any thoughts?
Glad to hear the video was helpful! You may have already taken some of these steps, but the course of action that I would take in this situation would be:
1. start neovim like this: "nvim --startuptime startup.log" which will log all the startup data into the file startup.log
2. review the plugins to see if you can switch any to lazy loading (without detriment to your setup)
3. take a look at your `:checkhealth` within neovim to ensure there are no startup related warnings (although unlikely, but if all else fails this might provide more information).
What OS are you running out of curiosity? I am running this config on a few machines and get an average startup of 60-70 milliseconds (you will find this in your startup log).
For me the Neovim AppImage had a slow startup time, but when I instead installed Neovim "from download" (nvim-linux64.tar.gz) it was fast.
This guy knows what the people want lol 27:52
AHH, now I'm stuck at 1:50:00 where cmp_nvim_lsp isn't being recognized. is there any option for a direct contact with you so I could ask questions?
I have an issue whit splits shortcut. When I press s, it's change mode to insertion ... so when I try to split the window with your shortcut it's just get in insertion mode. Do you have any idea why ?
's' is a keybinding in vim that deletes the character under the cursor and then enters insert mode. So for this reason the leader prefix is needed (spacebar in my case). Hope that helps!
i have installed jdtls , mason is showing it but it is not showing ,
I want to configure the settings on my theme plugin (I'm using dark_flat), I have to add
transparent = true
but I don't know which file should I add this statement?
You can pass this in the setup function for the dark flat theme. Hope this helps!
Great video, I definitely learnt a lot. I am facing a bit of an issue if someone could help out, both tmux and nvim works nicely seperately but if try running nvim with tmux it crashes with "server exited unexpectedly". Is anyone also facing this issue?
One of the best and most comprehensive tutorials on the thing I've seen so far. Thank you very much for this wonderful piece of work.
I noticed that you don't stack `require` and `return` statements. Is that a preference or a limitation? I've been trying to organise my config to get away from a single init file, but found it difficult to understand how it wants me to do things in a directory tree with multiple levels. For example, if I have .\User\lazy\plugins and then want to make init and require it from init in .\User my statement looks like require'User.lazy.plugins', right? But I get "this file doesn't exist"... I also tried relative paths (like 'lazy.plugins') - still the same error. Also, I'm concerned that as you go up the tree the statements get more and more verbose as you have to call out modules starting at work directly (basing it on how other peoples configs look)... am I missing something here?
Thanks for the kind words! I am glad you found it helpful. Generally speaking I keep my file structure flat. I do see a lot of people using the User/... structure. As long as things are references correctly by the Lazy instantiation then this should not be an issue, even if, as you mention, you are using init.lua (this is standard behaviour). Good luck on the journey to fixing it. Hard to say, but I would start with the lazy reference to to plugin (note: you are probably already aware but you can pass multiple plugin directories here).
@@theradlectures -
Thanks for the response. My question wasn't as clear as it should have been... sorry. I'd be very appreciative if you could answer a rephrased version, but if you didn't see this or just don't feel like it - I totally understand.
What I essentially want to do is to have a config that gets called with a single `require` statement in top level ./init.lua (such that I can easily swap configs without using git) and has sort of an "OOP" structure, that just by looking at directory tree kinda reflects what gets called by what. So far I internally settled on having plugin setup tables in sepparate files in sub-directory of where the package manager setup resides... but that doesn't seem to work because (I presume) Lua treats every `require` call as if it's made from the top level.
So if I have something like...
1. ./init.lua --here I just want to have require('User')
2. ./lua/user/lazy/init.lua
3. ./lua/user/lazy/plugins/init.lua
(Sort of a nested module kind of situation.)
...to call `plugins` from `lazy `I have to write require('user.lazy.plugins') and not just require('plugins'), which is a bummer, because now if I'd want to rearrange the directory I'd have to edit every require statement... which means that now I have to write some utility function that has to deal with module.path and extract the obsolute position of a module that I want to connect my submodule to... and so on and so forth.
I'm just not familiar with Lua, like, at all... Do any of the assumptions above strike any red flags iyo? Just wondering if satisfying my OCD is even worth it, i guess... %)
Sorry for this drawn out explanation. I get that it's more of an SO question than a YT comment, so, again, if you don't feel like it - no hard feelings.
Thanks for your message@@arcuscerebellumus8797! The syntax you are using seems to be correct with respect to requiring files in lua. However, if I understand correctly, you want to require files based on a global variable. You can take a look at this stack overflow post: vi.stackexchange.com/questions/36647/neovim-lua-script-to-dynamically-load-lua-config-files.
Definitely user dark reader for your browser.
13:32 How do you visualize your keystrokes?
Hey great video! Thanks a ton for this! I just had one question. I am having a hard time adding extensions to telescope. Could you give some idea how to do that ? I basically want live_grep to function from project root and not current working directory and below. Any leads would be great! Thanks !!
Is there any way to add a subfolder to the plugins dir, preferably that can be toggled on and off with a command or on file load?
king
Hey what did you use to open new files in new buffers?
Great video. I was searching much neovim videos. That video is best one. I have 3 questions.
First question is: In my case, Ctrl+a doesn't split screen and doesn't show terminal. Can you tell me my config's problem?
Second question is: How change file name?
Third question is: I can't paste on nvim from other windows. When paste only few symbols pasted. How enable paste from other window? Thank you.
Thanks for your comment! If you want to split your screen, it depends on whether you are in tmux or in neovim, so be sure to check your keymaps. With respect to file changes, the easiest way to rename a file is likely with `r` in the file explorer. Finally, check to ensure that you have the correct options for copy paste in the vim opts. Good luck!
Please make video on setting up wsl with all the terminal and neovim setup. Also I am using vscode with vim for my daily development. If possible make setup like vscode or beginner friendly.
How does the Lualine jump from the bottom to the top?
hey, at 1:28:00 i am unable to install python3.10-venv on ubuntu 23.10
[sudo] password for sebvu:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package python3.10-venv
E: Couldn't find any package by glob 'python3.10-venv'
i don't really know what else to do from here, as i believe it's required to install black when i try installing black, this is my error.
▶ # [14/14] spawn: python3 failed with exit code 1 and signal 0.
I really appreciate you doing this tutorial. As a noob to coding, learning lua via setting up nvim has felt like my first real coding project and this 'real world' application has helped me understand the 'why' of coding not just the 'how'. So, thank you for giving me a break thru moment in my coding journey. One question though, the lsp_cmp_lua and diependencies language in the LSP Config.lua breaks my build regarding setting up my cmd_nvim config. I feel something was left out of the tutorial that connects these two. Any hints to help me out? Thanks!!
Make sure that you have the below plugin included as a dependency in the lsp config (see my github for guidance).
"hrsh7th/cmp-nvim-lsp"
How to change the position of lualine? the status appear on the top
By default it will be at the bottom. Check out my github if you want it at the top.
can you please make a new one as your config are changed.
It will be great if you make a how to for supporting salt and jinja2. It is a little frustrating for me to do this since i need 2 different lsps in a single sls file.
Hello sir .. does it support for MERN stack ???
I can not for the life of me get C-j and C-k to work with navigating snippets. C-p and C-n work. .But the rebindings to cmp.mapping.select_next_item dont work at all
thank you
required tools:
neovim > 0.9
git
alacritty
ripgrep
node & npm
typescript
golang-go
python3_venv
luarocks
pyright
tmux
Thank you! Its really helpful! But on part where we setup lsp i drop. Because it was hard to understand and your github is updated and not like in video
Thanks for the feedback. I plan to make an updated video tutorial at the end of the year. However, you can find the git commit from the code at the time of this recording in the video description, so that will help you navigate the code from the tutorial (rather than the updated code as you mentioned).
any idea why when i save a file i have to save twice, i will save once and then formatting with happen and then i will have to write again. Great video btw
Try changing your autocmd to BufPreWrite (if it isn't already) so that the format hook is pre-write. Glad it was helpful otherwise!
When you start installing efm and the Lsp's you skip some steps making the video hard to follow, for example the Lspsaga keymap isn't even on the github page, but besides that really helpful video.
i can even set the nvim config that allows me to do MERN development with ease..... My primary code editor is vscode, now the day i heard it's made with electron(JS), so its basically a browser, thats why so much of load time, for my TS projects , the JAVA intellisense will also load huh? nah dont need that, though i have a very good command over the VS code snippets and key-bindings...... but as i can now do my work with only key-board(95%), i have a courage now to use nvim, with lazyvim ofcourse, but i could not find any proper way to install within windows 11, its the tree-sitter that is giving me error, says from neo-tree, and also when im inside the project directory, and opening the tree with leader_key-e , and opening a file from there then its gives me the error, so should i try it with my WSL(Debian), will it be more convenient?
good content :)
can u codeium and code runner that would be great
Why the github code is differente from the video?
The github is basically the same, and you can see older versions in the github history.
Thx for information, it was helpful.
But, man please do not type "clear" after every command. I'm understand that you care about your screen clearance, but it's tutorial. And terminal log is very helpful in it, especially if someone will repeat after you.