@@raymondkemboi1349agree, mini.files takes care of all my file managing demands, much better than oil. I might look into how yazi integrates with neovim though
@@aryanshmahato From my perspective. I'm not against IDE as a concept, but jetbrains products are too intrusive and trying to be too smart. I've often ended up fighting against it rather than it helping me.
I see a lot of comments agreeing here, so I must be in the minority. One of the selling points apart from modal editing of Neovim is its extensibility and hence why I don't use vi as my text editor, so this premise does not hold much weight, at least for me. I would much rather edit my commit messages in Neovim, as I have snippets, spell checking (not a native speaker), cmp auto complete of my issues, etc. Same for file editing as I usually want to start my actions (renaming, adding, moving) from the current file path which is easier with help of Neovim, then opening new pane, and navigating again. And the only reason I'm leaving this comment is that I have been influence by videos like this multiple times over the years to go and change my workflow, just to end up coming back, and ultimately wasting time. But at the end of the day we all have our preferences, so I guess trying it and figuring out for yourself even if it ends up being a waste of time may be the best option.
The problem with having everything in nvim is that you will have to maintain it. Tell me how many times did you change your file manager plugin? The main argument from this video is that you should use a proper tool and combine them. For example you can open a TUI file manager in a nvim window with this extension - fm-nvim
@007arek Well, first off, the argument about "proper" tool is very subjective in my opinion. Second, I would argue that your suggestion could be worse, depending on how you look at it. Instead of having a one plugin, you have one plugin, plus external program which are not connected, and say external program introduces a breaking change now what? And lastly, about changing the plugins. While it's true that i over the years changed many, that was because I wanted to, not that I had to. The same can be said for dedicated file managers, first was ranger, then lf, then nnn, then yazi etc
@@stefanbondzulic A proper tool is a program designed for a specific task. Do you manage all your files in nvim? That would be absurd, wouldn't it? This is the point: if an external program breaks, you change to another. If nvim stops working, you will not be able to manage your files. That addition plugin is just a helper - if you like, you can use nvim's windows. I explained my argument about maintenance incorrectly. When you have many plugins, it starts to become a pain, especially in small projects like nvim. Sometimes, you will need to migrate or fix breaking changes because plugins depend on each other and the nvim API. It is better to separate tools.
Yeah his points do make sense, because its feels right to be able to use the same tool for a task regardless of being inside vim, but in tasks that you mostly already have vim open, using a different program just seems counterproductive. I use tmux way before ever getting deep in vim, and i never even think about opening a terminal inside vim because to me text editing and terminal commands are different beasts entirely. Also tmux is always running underneath vim, so i already have an efficient way of dealing with new shells. But im way too comfortable using fugitive, gitsigns and minifiles, these are already integrated in my neovim. Also lets be honest, how often do you do heavy interactions with git, or do complex file managing shenanigans outside of a project you're already working (and textediting) on using vim? I looked up the keybinds for lazygit and yazi, and while they do have some vim-like keybinds, some of their keybinds are just the opposite of what you'd expect. Theyr vimmyness is about the same as the websites that allow you to scroll with jk and use / to search. For example, yazi uses y to yank file, d to thrash file and x to cut file. That's both similar and different enough from vim to cause confusion. Also it uses cc for copy file path, and r to rename. Thanks, but I'll stick to the default vim keybinds and textobjects inside of minifiles.
I didn’t like the terminal experience in an nvim tab. Just didn’t feel natural. Fugitive seems okay, but I guess I’m just too used to using git via command line. I haven’t tried visual debugging, but I’m curious about that as I have a project where it would be beneficial.
If it's bad design to use Neovim as fully featured Integrated Development Environment. Then there's no reason for me to use Neovim at all instead of something like Jebtrains IDEs with Vim motions. If I have to launch bunch of separate little tools for every single job instead of having them efficiently in the same place combined by conceptual need (say software development) then I'm just going to find another solution. I also think this video kind of misses the point of what Unix philosophy is and that Neovim with git management, a file tree, and a visual debugger *does actually follow the unix philosophy.* These tools aren't integrated into a monolithic software known as Neovim. They are separate tools and extensions that can be brough together into a tool to add functionality, but they are still developed and maintained separately. And while there is a lot of good in Unix development it is also outdated for some modern tools and workflows. Imagine using a web browser that follows Unix Philosophy. There are attempts at those, but there's a reason we mostly use chromium or Firefox based browsers instead.
I feel like his point is more: nvim + tmux + the shell is much easier to use as an IDE than trying to do everything from within nvim. It's a terminal program for a reason. I do agree with you about the unix philosophy. That quote is so overused and in different contexts, and it's easy to focus to much on it. If you go all-in with the unix philosophy, you end up in microservices and/or dependency hells, both of which also have their cons.
ide's are heavily dependent on you clicking stuff and also filled with many features you wont find yourself using and they are just slow and bloated meanwhile once you master the cli tools and have a proper setup you become way more productive
@@user-ii4oi4pw3z I think you missed my point. You can already setup nvim to be a full-blown IDE. And whether the cli tools or gui tools make you more productive depend entirely on what you are doing and what tools are available.
@@user-ii4oi4pw3z Idk if that's really the case though, in something like Visual Studio you can just create shortcuts for practically everything and hide things you don't need.
i disagree with his point in the video about not using nvim for debugging. I've switched almost exclusively to nvim's dap for debugging and have setup a workflow that makes using any other debugger feel slow and inefficient. tbh i think a lot of the takes in this video are just preference without substance. he mentions advanced file management, and even mentions oil.nvim, but says "nah dont use that, it's not good enough." You can literally use vim macros in oil.nvim... Oil is by far capable of many, many advanced file actions.
Moving files example might not always be correct: some LSP(e.g. tsserver) provides code action that also updates imports of those files, so one doesn’t have to update them manually after moving the files
What a video! And here's my 2 cents: I think the "problem" of overloading tasks in neovim comes from the idea of moving from a visual IDE to terminal one; and where's the "starting point". Visual IDEs handles the whole thing inbounds; and some of them do it great, such as many Jetbrains products. In the terminal, you have to craft your own DE, and "conceptually" you start from the editor, because is the one that provides the same main task of your workflow, and the one we think is the "core" of our workflow; because you have no need to exit from it to build, debug and push and pull changes. Those pipes into an IDE are blurry. In terminal DEs; the core is the interpreter itself or the multiplexer, and using different tools to each step. It's a game changer to understand where's your "core node" of your workflow if you see it as a graph, and where you pivot to the different nodes. Maybe this approach helps to keep nvim more clean and light, freeing of it from several tasks. But the question is, which tool can be used to step by step debugging and variables monitoring in a "similar" way than the ones in IDEs? Even though vscode suffers the problem of plugin overloading; but it's the one that really shortened the gap to IDEs like Jetbrains' ones. LSP as an example, it was a game changer and by far it's the best contribution to software development tools made by Microsoft. BTW, i use ranger instead of yazi; I should take a look of it 😉.
I think this video misses the point of what Unix development is in the first place and that Neovim with all its plugins does in fact follow the unix philosophy by its very nature of giving you this extended functionality through plugins. It could be argued that Neovim distributions is where we break away from the more granular design philosophy, but ultimately even distributions are just bunch of smaller tools packaged together for convenience and ease of use. If you wanted to stretch the concept a bit, you could consider even the distribution just as another tool that helps tie other tools together for accessibility.
Unfortunately another thing neovim isnt great for is managing files with multiple languages, like jupyter notebooks. I know there are people who made it work but its not easy to get it configured. A professor is suggesting us to use it for a classe but Im really not feeling like it for this precise reason 🙃
Neorg! Was a pain to config, I just couldn't get all the dependencies to work together. I used the Neorg starter pack now and it works flawlessly, basically my ground setup is just Neorg starter config with kickstart.nvim
@@AGentooUser it literally sucks. Lua is painful and the libraries are pretty much nonexistent. Luarocks is a disgrace to humanity. Brazilians (like Indians) are needy, they always feel the urge to say where they came from.
What tool do you suggest for debugging? I've always struggled to get debugging typescript projects working in neovim and I just use the debugger in google chrome, but want a dedicated tool.
This is so true sir. I’ve truly been feeling a sense of plugin overload on nvim lately that I’ve been using vim with a light vimrc to keep it simple. Next time I have time to do a fresh start on my nvim I’ll probably start with the vimrc as the skeleton
Oh man the title of the video, I thought me changing to NeoVim was a mistake for a second after watching the whole series of NeoVim!🤣 Thanks man you are the best out there!
What’s the difference between a visual debugger and a…. Non-visual debugger? What’s an example? I’m new to coding and haven’t heard of another method to debugging
When dealing with long-running processes, how would you handle actions like navigating to a file with an error? For example, within Neovim, I can bind gf to quickly jump to the file directly in my Neovim instance. Is there a way to achieve similar functionality using tmux?
Agreed except the debugging: Often enough I opened VSCode for debugging. But it made me feel dirty and that I'm wasting time configuring vim at all. Making a historically based argument of what a text editor should and shouldn't do is no basis for setting rules for the next 100 years. People are obviously using vim as their IDE. And this means they need a solution for each problem. Debugging is a very difficult problem to solve, which is handled very well in full IDE's. But going the vim route means we want to move away from IDEs. While changing files and running tests is best left to other specialized tools, running the debugger is not. Debugging helps find errors in your code. This means you should have ALL your configured features for code navigation and LSP present. Configuring vim is hard enough and enabling all these features is a huge time sink. Why would you setup another tool for the most difficult text-editing problem: the debugging of your "text"? If vim can not solve debugging, then it can't be used efficiently as a code editor and with that looses it's value even in the unix philosophy: Vim is a "code editor". If you can't debug, than it's not really good at editing code! Did we even have debuggers back then? From a quick search the first debugger was in Turbo Pascal in 1983. No sane person would miss out on a debugger within your native code editing tool when given the choice. And most certainly not for a misinterpretation of the unix philosophy, which was written before debuggers even existed. So maybe shouldn't listen as much to these voices of yours 😄Otherwise awesome video, as usual mate.
Regarding #1. It only works, because the output of your test is so short. I usually get allot of deprecation warnings, because my co-workers don't run pytest from the command line, but rather use Pycharm which doesn't display these warnings. So i usually have to scan if there is anything that is from me or new in there.
the thing about the built-in terminal or other situations like it is that they're still separate programs - as you said, you can decide whether to run it inside or not. I'm a ranger user and the fact that it opens neovim when I enter a file isn't necessarily a complication when ranger doesn't suit my needs I can just leave and use nvim from the terminal I can also replace ranger with something else when it doesn't have a feature I want
Well, if I'm inside Neovim and I need to for example use Lazygit, I can open it in a terminal popup (inside neovim) and when I'm done just exit the popup and continue. That saves me launching tmux pane, and starting the Lazygit from there. Win-win?
Don’t use nvim for capturing the results for long compilations. The open new tab then :r!make locks things up for a bit. I think that opening a new tmux pane would provide a better approach to this? Any suggestions?
I loved this video, thanks to remind me about yazi. With my current workflow alone I just couldn't make nvim my PDE, I love to use tools that excel at that "one" thing. Amazing video!!!! I'm already doing these things, I feel validated hahaha
I know it was just an example, but you can do that file operation with Oil really easily, too. Ever since I started using it, I rarely feel the need for something else, with Oil and standard cp/mv/rm operations doing everything I need. I fully agree on the terminal thing, though. I really like using splits where I have my editor and terminal for running quick tasks side-by-side, and nvim's terminal simply isn't as powerful as a tmux or kitty split.
i'm curious that you've uploaded many of video's about neovim including using like ide. But now you think nvim should be used as a text-editor? btw thanks for your all good courses
I was configuring nv half a year, and i still need maybe 3+ years of configuring all my staff...i drop nv, because its such a pain. Why i need to use git out of textediting...if you want text editor use vim. Neovim isteed must be ide, or it just no sence from lua integration. Programmers in 100% cases need not only text editing, so if nv needs to be used only like text editor, so i dont need it at all.
My way of writing code is (by the way I use Emacs but still), Use text editor separately, and open up a terminal, that's it. Even I don't use panes, splits, for terminal and editor. These are two different software.
I'm soooo surprised because I thought what you said is the default for anyone. Like of course I wouldn't use a plugin in neovim for git management when there is a a tool like gitui. Tmux also should be used by default with neovim. I don't remember that I ever used neovims built-in terminal lol.
And neovim is also not very convenient for constant work with AI helpers, as it is in these fancy new code editors like Cursor. Some people don't like AI assistants at all, but we can't deny that they're changing the way we write code right now.
In earnest, I still dont understand comments like these. I still struggle to find use for AI outside of replacing the occasional google search of a reminder of something i already understand but need a refresher of
When the hype was high i tried multiple AIs in multiple IDE/editors and i came to conclusion that in the end code is better to be written without them for multiple reasons (random AI hallucinations, dumping ones brain, debugging someone else code sucks, etc.). But i admit AI is useful for administrative souse like docs and emails.
@@hamm8934 Getting a complete answer on exactly what you want to know through a natural language query is exactly what AI assistants do best instead of some Stack Overflow thread from eleven years ago only tangentially related to the topic
I don't know man, when I like a tool or a language I want to use it for everything all the time, even things that go beyond it's original intended use and even if it is not the best tool for the job. How can we call that? The Emacs philosophy?
great video, and thanks for pointing at Yazi, i'll give that a try. My biggest "dilemma" these days is chosing between ai-heavy work using Cursor, vs. neovim. I would love to stay in neovim, but the ai stuff I get from cursor is crazy good. Ive been trying out Avante the last couple of days, but it's miles away from cursor. Not sure it will never get close. What do you think?
I attempted to use Neovim as a Go IDE for two weeks and failed. I've been using VI/VIM for a lot of years so there is a certain affinity there which lead me to try Neovim. I took a slightly more advanced 'Hello World" tutorial application from "How to Write Go Code" which totally failed in Neovim/NVChad because the LSP/formatter kept breaking the source. I tried the same tutorial steps with another IDE (supposedly using the same LSP and formatter) and had no issues. I know - 'skill issues' are at play here, and I'm not going to deny that to some degree as I suck at Lua... Work is paying me to produce code - not to get an editor/IDE to work LOL.
Vim is all about speed, so if a tool or a plugin speeds you up, use it. Otherwise, what kind of advantages do you take by using software the right way? Just a satisfaction?
I don't use tmux, mostly because I use a TM. I assume that in NVIM, you also don't need to use tmux for creating terminal panes - NVIM has a built-in terminal emulator. Tmux also breaks UNIX philosophy - it has session and window management.
in my setup i prefer save time. So for me neovim is the tool for "saving edit time" if i need commit i use lazygit in neovim leader gg and commit like normal lazygit if i need a file i use neotree if i need manage files i use ranger but if i need to move a file only 1 file i use neotree it realy depends on the job . tldr if the job is not editing and if its big i use an other tool if job can handle quicker in neovim than i dont change the pane and come back .
Don't use vi/vim/neovim when you should use sed. When is that? 1. When you need to script editor actions (for example change a config file during a build) 2. When you need to make identical/similar edits to multiple files Note: Many people use awk or something similar for this type of job, but sed is faster AND it makes you look like a UNUX wizard 🙂
It all boils down to personal preference. I agree with some of your examples, i disagree with others. When should we not be using neovim? When it doesnt make sense to us. Dont listen to videos for how your workflow should be if it doesnt resinate with you. PS neovim debugging has become my favorite debugger of all time. Ive created to most efficient debugging workflow ive ever had.
I think about Neovim now not as just a text editor but as an environment, meaning it's similar to terminal more, despite the fact that it's not really meant to be used as one. Neovim being an environment has it's own unix philosophy within with plugins, what I mean is that every plugin inside of Neovim has one and only task and is really good at it, however the "editor" itself is not an editor now, but a runtime for those little unix-like plugins. That being said, it's not an ideal solution, and I would much rather have separate tools for each task, sadly with things like LSP and treesitter it's nearly impossible to make such a tool that would inject information inside an editor without a need for a plugin ecosystem.
I don't quite agree on the point of not using a terminal within nvim. Text editing is not only about modifiction, but also about navigating, reading and searching. If I need to copy a part of some command's output into the file I have open, there is no better way than to run it from the :term, this way the full power of nvim's text navigation can be used to find and select text needed.
This basically reopens the discussion why neovim was created in the first place: vim wasn't capable of having proper terminal support. Bram was against this. I think it really depends on the overall workflow. For me it's like this: I always start in CLI, open ranger, then open files in nvim. When I need a terminal, I either create a new kitty split pane or new tab. I never feel like I need a terminal inside of neovim. Even changing files is done 95% of the time with just ranger. Good integration is key to me. With that in mind, I don't need to live inside of neovim, but kitty.
Honestly I mostly agree with what was said in the video, which is already what I tend to do these days with my dev workflow. However, I still think that git repository management can be done really well within the editor (I personally prefer to use neogit for that). I don't really want to have to switch tabs in tmux/zellij since I usually do a lot of small commits
When I used Intellij for development I turned off git integration. For me writing code and managing vcs are different tasks. Needs different thinking, so it is better to separate
I put a lot of effort into trying to use Neovim and Arch Linux recently (mainly because they looked cool...). Now that it's time to prepare for job hunting, I often encounter situations like "Please take the coding test using Chrome on Windows OS." After using Neovim for a while, I found it confusing to switch back to IDEs like PyCharm or VSCode, so I eventually decided to temporarily stop using Neovim and Linux. Since my English isn't very good, I'm not sure if this is what the video was about, but I agree that it's important to use appropriate tools, IDEs, and operating systems according to the situation. I hope I can get a job soon so I can dive back into the world of Linux and Neovim! Thank you for the interesting video.
Ive tried to use Neovim a couple times but I still dont get it in my case: I create data visualizations CONSTANTLY. I’m always SSH'd into a new compute cluster, like every other week. I usually don’t have apt-install privileges on the remote servers. I use VS Code because, in my opinion: The remote server experience is better. Vim motions are available in VS Code. The data visualization experience in nvim sucks. Plugin setups are more portable in VS Code.
The voices in my head told me to steal your mug, so when you feel comfortable to reach out and make your selective tea / Coffee it doesn't exist anymore.
I prefers Emacs, as all that is easy done in plain Emacs. And if you want to run from terminal, there are emacsclient, so you don't start a new Emacs. And if you really like the vi key bindings, there are evil and some other packages for Emacs to do all that. 🙂
That is kind of the why I am not using NeoVim and I stay satisfied with just vanilla or almost vanilla Vim, despite me being just lazy and not willing to invest myself into NeoVim ;). Why would I overcomplicate my environment (besides "because I can") :).
Exactly, the terminal already can handle all the tasks, what's the problem by just quitting the text editor, aah forget perhaps newbies don't know how to quit.
Thanks, Nerd
Thank you, Nerd
I see what's going on. Every video lol
In a twist of ultimate irony, I put both `yazi` and `lazygit` inside my `nvim` to be summoned with a keybind in a floating terminal.
nice, just replaced oil with yazi inside neovim on keystroke `-`. Feels nice. I used to use ranger before, never got use of oil. Thanks for the tip
yup floating lazygit, terminal, and yazi. Sooooo good.
To add, I also found mini.files to be better than oil.nvim
@@BlastHardCheese711 Yes! Except for terminal stuff I use tmux and open a separate terminal.
@@raymondkemboi1349agree, mini.files takes care of all my file managing demands, much better than oil.
I might look into how yazi integrates with neovim though
I’ll admit, I don’t use Neovim to brush my teeth. It’s just not very good at it from my experience
I do, just don't hit 'dd' on your teeth or it will remove them. Had to yank and pull my new teeth. Not pretty for the other guy.
Wkwk. You made my day. Thank you.
patiently waiting for him to say: you should use Jetbrains
I WOULD NEVER
If you are ever in the unfortunate position of needing to write java Intellij is your best bet, or a massive c/cpp codebase
@@typecraft_dev Why??
@@aryanshmahato From my perspective. I'm not against IDE as a concept, but jetbrains products are too intrusive and trying to be too smart. I've often ended up fighting against it rather than it helping me.
Debugging on rubymine is a hidden pleassure..
I see a lot of comments agreeing here, so I must be in the minority. One of the selling points apart from modal editing of Neovim is its extensibility and hence why I don't use vi as my text editor, so this premise does not hold much weight, at least for me. I would much rather edit my commit messages in Neovim, as I have snippets, spell checking (not a native speaker), cmp auto complete of my issues, etc. Same for file editing as I usually want to start my actions (renaming, adding, moving) from the current file path which is easier with help of Neovim, then opening new pane, and navigating again. And the only reason I'm leaving this comment is that I have been influence by videos like this multiple times over the years to go and change my workflow, just to end up coming back, and ultimately wasting time. But at the end of the day we all have our preferences, so I guess trying it and figuring out for yourself even if it ends up being a waste of time may be the best option.
The problem with having everything in nvim is that you will have to maintain it. Tell me how many times did you change your file manager plugin?
The main argument from this video is that you should use a proper tool and combine them. For example you can open a TUI file manager in a nvim window with this extension - fm-nvim
@007arek Well, first off, the argument about "proper" tool is very subjective in my opinion. Second, I would argue that your suggestion could be worse, depending on how you look at it. Instead of having a one plugin, you have one plugin, plus external program which are not connected, and say external program introduces a breaking change now what? And lastly, about changing the plugins. While it's true that i over the years changed many, that was because I wanted to, not that I had to. The same can be said for dedicated file managers, first was ranger, then lf, then nnn, then yazi etc
@@stefanbondzulic A proper tool is a program designed for a specific task. Do you manage all your files in nvim? That would be absurd, wouldn't it?
This is the point: if an external program breaks, you change to another. If nvim stops working, you will not be able to manage your files.
That addition plugin is just a helper - if you like, you can use nvim's windows.
I explained my argument about maintenance incorrectly. When you have many plugins, it starts to become a pain, especially in small projects like nvim. Sometimes, you will need to migrate or fix breaking changes because plugins depend on each other and the nvim API. It is better to separate tools.
Yeah his points do make sense, because its feels right to be able to use the same tool for a task regardless of being inside vim, but in tasks that you mostly already have vim open, using a different program just seems counterproductive.
I use tmux way before ever getting deep in vim, and i never even think about opening a terminal inside vim because to me text editing and terminal commands are different beasts entirely. Also tmux is always running underneath vim, so i already have an efficient way of dealing with new shells.
But im way too comfortable using fugitive, gitsigns and minifiles, these are already integrated in my neovim. Also lets be honest, how often do you do heavy interactions with git, or do complex file managing shenanigans outside of a project you're already working (and textediting) on using vim?
I looked up the keybinds for lazygit and yazi, and while they do have some vim-like keybinds, some of their keybinds are just the opposite of what you'd expect. Theyr vimmyness is about the same as the websites that allow you to scroll with jk and use / to search.
For example, yazi uses y to yank file, d to thrash file and x to cut file. That's both similar and different enough from vim to cause confusion. Also it uses cc for copy file path, and r to rename. Thanks, but I'll stick to the default vim keybinds and textobjects inside of minifiles.
I didn’t like the terminal experience in an nvim tab. Just didn’t feel natural. Fugitive seems okay, but I guess I’m just too used to using git via command line. I haven’t tried visual debugging, but I’m curious about that as I have a project where it would be beneficial.
If it's bad design to use Neovim as fully featured Integrated Development Environment. Then there's no reason for me to use Neovim at all instead of something like Jebtrains IDEs with Vim motions. If I have to launch bunch of separate little tools for every single job instead of having them efficiently in the same place combined by conceptual need (say software development) then I'm just going to find another solution.
I also think this video kind of misses the point of what Unix philosophy is and that Neovim with git management, a file tree, and a visual debugger *does actually follow the unix philosophy.* These tools aren't integrated into a monolithic software known as Neovim. They are separate tools and extensions that can be brough together into a tool to add functionality, but they are still developed and maintained separately.
And while there is a lot of good in Unix development it is also outdated for some modern tools and workflows. Imagine using a web browser that follows Unix Philosophy. There are attempts at those, but there's a reason we mostly use chromium or Firefox based browsers instead.
I feel like his point is more: nvim + tmux + the shell is much easier to use as an IDE than trying to do everything from within nvim. It's a terminal program for a reason.
I do agree with you about the unix philosophy. That quote is so overused and in different contexts, and it's easy to focus to much on it. If you go all-in with the unix philosophy, you end up in microservices and/or dependency hells, both of which also have their cons.
UNIX is my IDE.
ide's are heavily dependent on you clicking stuff and also filled with many features you wont find yourself using and they are just slow and bloated meanwhile once you master the cli tools and have a proper setup you become way more productive
@@user-ii4oi4pw3z
I think you missed my point. You can already setup nvim to be a full-blown IDE.
And whether the cli tools or gui tools make you more productive depend entirely on what you are doing and what tools are available.
@@user-ii4oi4pw3z Idk if that's really the case though, in something like Visual Studio you can just create shortcuts for practically everything and hide things you don't need.
Yeah, Neovim isn't just another Emacs
truth
What is your recommendation for a tui based visual debugger. That is the last thing I need to completely remove vscode from my system.
i disagree with his point in the video about not using nvim for debugging. I've switched almost exclusively to nvim's dap for debugging and have setup a workflow that makes using any other debugger feel slow and inefficient.
tbh i think a lot of the takes in this video are just preference without substance. he mentions advanced file management, and even mentions oil.nvim, but says "nah dont use that, it's not good enough." You can literally use vim macros in oil.nvim... Oil is by far capable of many, many advanced file actions.
Moving files example might not always be correct: some LSP(e.g. tsserver) provides code action that also updates imports of those files, so one doesn’t have to update them manually after moving the files
Any recs for debugging software for JS/NextJS outside of neovim ? I have VS-- basically just for the debugger, but would love something else.
Epistemology vs Ontology of text editors
what did you call me?
What a video! And here's my 2 cents: I think the "problem" of overloading tasks in neovim comes from the idea of moving from a visual IDE to terminal one; and where's the "starting point".
Visual IDEs handles the whole thing inbounds; and some of them do it great, such as many Jetbrains products.
In the terminal, you have to craft your own DE, and "conceptually" you start from the editor, because is the one that provides the same main task of your workflow, and the one we think is the "core" of our workflow; because you have no need to exit from it to build, debug and push and pull changes. Those pipes into an IDE are blurry.
In terminal DEs; the core is the interpreter itself or the multiplexer, and using different tools to each step. It's a game changer to understand where's your "core node" of your workflow if you see it as a graph, and where you pivot to the different nodes. Maybe this approach helps to keep nvim more clean and light, freeing of it from several tasks. But the question is, which tool can be used to step by step debugging and variables monitoring in a "similar" way than the ones in IDEs?
Even though vscode suffers the problem of plugin overloading; but it's the one that really shortened the gap to IDEs like Jetbrains' ones. LSP as an example, it was a game changer and by far it's the best contribution to software development tools made by Microsoft.
BTW, i use ranger instead of yazi; I should take a look of it 😉.
I think this video misses the point of what Unix development is in the first place and that Neovim with all its plugins does in fact follow the unix philosophy by its very nature of giving you this extended functionality through plugins.
It could be argued that Neovim distributions is where we break away from the more granular design philosophy, but ultimately even distributions are just bunch of smaller tools packaged together for convenience and ease of use.
If you wanted to stretch the concept a bit, you could consider even the distribution just as another tool that helps tie other tools together for accessibility.
Great take! What do you use outside of neovim to visually debug code?
ultimately it's down to user preference; if it helps your workflow use it, if it adds friction find a better way.
how do you recommend debugging in neovim with rails? i use rubymine alot and their debugger helps. what are some tools you use>
What exactly is visual debugging?
Are dap + dapui considered visual debugging?
If so, what is the alternative?
Yes, dap and dap ui are visual debugging. Honestly, whatever the preferred debugging tool for the language you're writing would suit best
Unfortunately another thing neovim isnt great for is managing files with multiple languages, like jupyter notebooks. I know there are people who made it work but its not easy to get it configured.
A professor is suggesting us to use it for a classe but Im really not feeling like it for this precise reason 🙃
I'm trying to use quarto with Neovim to produce Jupyter notebooks. I'm not sure if I will stick with it long term, but it's workable so far
Neorg! Was a pain to config, I just couldn't get all the dependencies to work together. I used the Neorg starter pack now and it works flawlessly, basically my ground setup is just Neorg starter config with kickstart.nvim
otter.nvim might be worth checking out too
Greatings from Brazil
Thanks for lua! the best interpreted language ever.
@@AGentooUser it literally sucks. Lua is painful and the libraries are pretty much nonexistent. Luarocks is a disgrace to humanity. Brazilians (like Indians) are needy, they always feel the urge to say where they came from.
salve!
@AGentooUser You are welcome, we are so thankful for you.
Thanks, I like your channel and started subscribing.
Awesome, thank you! Welcome
What tool do you suggest for debugging? I've always struggled to get debugging typescript projects working in neovim and I just use the debugger in google chrome, but want a dedicated tool.
This is so true sir. I’ve truly been feeling a sense of plugin overload on nvim lately that I’ve been using vim with a light vimrc to keep it simple. Next time I have time to do a fresh start on my nvim I’ll probably start with the vimrc as the skeleton
Oh man the title of the video, I thought me changing to NeoVim was a mistake for a second after watching the whole series of NeoVim!🤣
Thanks man you are the best out there!
What’s the difference between a visual debugger and a…. Non-visual debugger? What’s an example? I’m new to coding and haven’t heard of another method to debugging
Type gdb in your terminal. Run it without the tui command
vision
Hardcore developers debug while blindfolded. That's why our (my) code is damn buggy...
When dealing with long-running processes, how would you handle actions like navigating to a file with an error? For example, within Neovim, I can bind gf to quickly jump to the file directly in my Neovim instance. Is there a way to achieve similar functionality using tmux?
Idk about tmux, but with Kitty you can use nvim as a scrollback pager, position the cursor under the filename and visit the file with “gf”
5:42 funnily enough, i use oilnvim only for advanced file management. because thats literally more suited.otherwise i just use dolphin
Agreed except the debugging: Often enough I opened VSCode for debugging. But it made me feel dirty and that I'm wasting time configuring vim at all.
Making a historically based argument of what a text editor should and shouldn't do is no basis for setting rules for the next 100 years. People are obviously using vim as their IDE. And this means they need a solution for each problem. Debugging is a very difficult problem to solve, which is handled very well in full IDE's. But going the vim route means we want to move away from IDEs. While changing files and running tests is best left to other specialized tools, running the debugger is not. Debugging helps find errors in your code. This means you should have ALL your configured features for code navigation and LSP present. Configuring vim is hard enough and enabling all these features is a huge time sink. Why would you setup another tool for the most difficult text-editing problem: the debugging of your "text"? If vim can not solve debugging, then it can't be used efficiently as a code editor and with that looses it's value even in the unix philosophy: Vim is a "code editor". If you can't debug, than it's not really good at editing code! Did we even have debuggers back then? From a quick search the first debugger was in Turbo Pascal in 1983.
No sane person would miss out on a debugger within your native code editing tool when given the choice. And most certainly not for a misinterpretation of the unix philosophy, which was written before debuggers even existed. So maybe shouldn't listen as much to these voices of yours 😄Otherwise awesome video, as usual mate.
Had me in the first half of the title
Regarding #1. It only works, because the output of your test is so short. I usually get allot of deprecation warnings, because my co-workers don't run pytest from the command line, but rather use Pycharm which doesn't display these warnings. So i usually have to scan if there is anything that is from me or new in there.
Where'd you get the TestDouble hoodie? I worked there for the last 4 years.
When is the video on the framework 13?
the thing about the built-in terminal or other situations like it is that they're still separate programs - as you said, you can decide whether to run it inside or not.
I'm a ranger user and the fact that it opens neovim when I enter a file isn't necessarily a complication
when ranger doesn't suit my needs I can just leave and use nvim from the terminal
I can also replace ranger with something else when it doesn't have a feature I want
Well, if I'm inside Neovim and I need to for example use Lazygit, I can open it in a terminal popup (inside neovim) and when I'm done just exit the popup and continue. That saves me launching tmux pane, and starting the Lazygit from there. Win-win?
What gnome extensions are you using?
Thank you, you gave me a good laugh in that intro
Hey, do you think the neovim team integrating terminal and LSP was a mistake?
"one UNIX Tool should master just one task,"
-- EMACS people: Hold my fancy split ergo keyboard!!
thats why i use emacs for almost everything ^^
Share your configs man please, I am just obsessed with it.
then what u use for debugging? using dlv in cli??
Don’t use nvim for capturing the results for long compilations. The open new tab then
:r!make
locks things up for a bit. I think that opening a new tmux pane would provide a better approach to this?
Any suggestions?
Would love to see your take on the vifm file manager. It has been my favorite for years
I loved this video, thanks to remind me about yazi. With my current workflow alone I just couldn't make nvim my PDE, I love to use tools that excel at that "one" thing. Amazing video!!!! I'm already doing these things, I feel validated hahaha
I know it was just an example, but you can do that file operation with Oil really easily, too. Ever since I started using it, I rarely feel the need for something else, with Oil and standard cp/mv/rm operations doing everything I need. I fully agree on the terminal thing, though. I really like using splits where I have my editor and terminal for running quick tasks side-by-side, and nvim's terminal simply isn't as powerful as a tmux or kitty split.
Regarding file management, if we separate it from the nvim, we lose the LSP rename functionality, which can achieve with something like neo-tree.
6:29 im not sure but based on my experience with yazi, i think yazi is just a neovim wrapper
i'm curious that you've uploaded many of video's about neovim including using like ide. But now you think nvim should be used as a text-editor? btw thanks for your all good courses
I was configuring nv half a year, and i still need maybe 3+ years of configuring all my staff...i drop nv, because its such a pain. Why i need to use git out of textediting...if you want text editor use vim. Neovim isteed must be ide, or it just no sence from lua integration. Programmers in 100% cases need not only text editing, so if nv needs to be used only like text editor, so i dont need it at all.
My way of writing code is (by the way I use Emacs but still), Use text editor separately, and open up a terminal, that's it. Even I don't use panes, splits, for terminal and editor. These are two different software.
I'm soooo surprised because I thought what you said is the default for anyone. Like of course I wouldn't use a plugin in neovim for git management when there is a a tool like gitui. Tmux also should be used by default with neovim. I don't remember that I ever used neovims built-in terminal lol.
Did you try nushell ? It's one of the best shell that has ever existed
I was waiting for something like kotlin development or android reverse engineering. Btw what other program do you use to debug Rust?
strongly agree on all of it. good video!
thanks!
Totally agree. That's why I use Alacritty + Tmux + Neovim, and the Git CLI.
Theme? Been looking for something like it.
catppuccin mocha
And neovim is also not very convenient for constant work with AI helpers, as it is in these fancy new code editors like Cursor. Some people don't like AI assistants at all, but we can't deny that they're changing the way we write code right now.
In earnest, I still dont understand comments like these. I still struggle to find use for AI outside of replacing the occasional google search of a reminder of something i already understand but need a refresher of
@@hamm8934 Same
When the hype was high i tried multiple AIs in multiple IDE/editors and i came to conclusion that in the end code is better to be written without them for multiple reasons (random AI hallucinations, dumping ones brain, debugging someone else code sucks, etc.). But i admit AI is useful for administrative souse like docs and emails.
avante.nvim
@@hamm8934 Getting a complete answer on exactly what you want to know through a natural language query is exactly what AI assistants do best instead of some Stack Overflow thread from eleven years ago only tangentially related to the topic
Great vid, it's always good to ask when you should stop injecting "features" into apps and instead use an app designed for what you are trying to to.
I don't know man, when I like a tool or a language I want to use it for everything all the time, even things that go beyond it's original intended use and even if it is not the best tool for the job. How can we call that? The Emacs philosophy?
great video, and thanks for pointing at Yazi, i'll give that a try. My biggest "dilemma" these days is chosing between ai-heavy work using Cursor, vs. neovim. I would love to stay in neovim, but the ai stuff I get from cursor is crazy good. Ive been trying out Avante the last couple of days, but it's miles away from cursor. Not sure it will never get close. What do you think?
Personally, sometimes I'll use cursor to get something started. Then edit the rest in neovim
@@typecraft_dev Yeah, I guess a combo will stick for a while even though we wish it was different :P
@@typecraft_dev Have you tested Avante?
I just ❤ videos that make you think.
I must say I disagree about the file management oil is very nice for moving a lot of files, but for terminal I just use ctrl-z instead of tmux.
No more hyprland? Gnome is good enough? :)
The Ubuntu logo on ur terminal prompt did u change ur distro from arch
uhhhh....... don't be mad okay?
heresy.
You have a point in this matter. I do have the same felling about neovim plugs
I attempted to use Neovim as a Go IDE for two weeks and failed. I've been using VI/VIM for a lot of years so there is a certain affinity there which lead me to try Neovim. I took a slightly more advanced 'Hello World" tutorial application from "How to Write Go Code" which totally failed in Neovim/NVChad because the LSP/formatter kept breaking the source. I tried the same tutorial steps with another IDE (supposedly using the same LSP and formatter) and had no issues. I know - 'skill issues' are at play here, and I'm not going to deny that to some degree as I suck at Lua... Work is paying me to produce code - not to get an editor/IDE to work LOL.
The only scenarios you should not use vim/neovim are:
1. If you are awake;
2. If you are alive;
Vim is all about speed, so if a tool or a plugin speeds you up, use it. Otherwise, what kind of advantages do you take by using software the right way? Just a satisfaction?
I never thought about using something like lazygit in a tmux window instead of a git plugin... I'll have to give it a try. Thanks!
I don't use tmux, mostly because I use a TM. I assume that in NVIM, you also don't need to use tmux for creating terminal panes - NVIM has a built-in terminal emulator.
Tmux also breaks UNIX philosophy - it has session and window management.
Great video. 🙌
it's the Stache the trick to be good at Neovim?
in my setup i prefer save time. So for me neovim is the tool for "saving edit time" if i need commit i use lazygit in neovim leader gg and commit like normal lazygit if i need a file i use neotree if i need manage files i use ranger but if i need to move a file only 1 file i use neotree it realy depends on the job .
tldr if the job is not editing and if its big i use an other tool if job can handle quicker in neovim than i dont change the pane and come back .
You used nvim to write the script for this video didn’t ya?
I might've used notion
Don't use vi/vim/neovim when you should use sed. When is that?
1. When you need to script editor actions (for example change a config file during a build)
2. When you need to make identical/similar edits to multiple files
Note: Many people use awk or something similar for this type of job, but sed is faster AND it makes you look like a UNUX wizard 🙂
It all boils down to personal preference. I agree with some of your examples, i disagree with others. When should we not be using neovim? When it doesnt make sense to us. Dont listen to videos for how your workflow should be if it doesnt resinate with you.
PS neovim debugging has become my favorite debugger of all time. Ive created to most efficient debugging workflow ive ever had.
Agree with the video! You should not use nvim for Java and debugging :)
I think about Neovim now not as just a text editor but as an environment, meaning it's similar to terminal more, despite the fact that it's not really meant to be used as one. Neovim being an environment has it's own unix philosophy within with plugins, what I mean is that every plugin inside of Neovim has one and only task and is really good at it, however the "editor" itself is not an editor now, but a runtime for those little unix-like plugins. That being said, it's not an ideal solution, and I would much rather have separate tools for each task, sadly with things like LSP and treesitter it's nearly impossible to make such a tool that would inject information inside an editor without a need for a plugin ecosystem.
I don't quite agree on the point of not using a terminal within nvim. Text editing is not only about modifiction, but also about navigating, reading and searching. If I need to copy a part of some command's output into the file I have open, there is no better way than to run it from the :term, this way the full power of nvim's text navigation can be used to find and select text needed.
This basically reopens the discussion why neovim was created in the first place: vim wasn't capable of having proper terminal support. Bram was against this. I think it really depends on the overall workflow. For me it's like this: I always start in CLI, open ranger, then open files in nvim. When I need a terminal, I either create a new kitty split pane or new tab. I never feel like I need a terminal inside of neovim. Even changing files is done 95% of the time with just ranger. Good integration is key to me. With that in mind, I don't need to live inside of neovim, but kitty.
@@freeo6242 agree. That's the power of simple tools, there is a million ways they can be combined to best suite particular workflow.
Honestly I mostly agree with what was said in the video, which is already what I tend to do these days with my dev workflow. However, I still think that git repository management can be done really well within the editor (I personally prefer to use neogit for that). I don't really want to have to switch tabs in tmux/zellij since I usually do a lot of small commits
When I used Intellij for development I turned off git integration. For me writing code and managing vcs are different tasks. Needs different thinking, so it is better to separate
I put a lot of effort into trying to use Neovim and Arch Linux recently (mainly because they looked cool...). Now that it's time to prepare for job hunting, I often encounter situations like "Please take the coding test using Chrome on Windows OS." After using Neovim for a while, I found it confusing to switch back to IDEs like PyCharm or VSCode, so I eventually decided to temporarily stop using Neovim and Linux.
Since my English isn't very good, I'm not sure if this is what the video was about, but I agree that it's important to use appropriate tools, IDEs, and operating systems according to the situation.
I hope I can get a job soon so I can dive back into the world of Linux and Neovim! Thank you for the interesting video.
Ive tried to use Neovim a couple times but I still dont get it
in my case:
I create data visualizations CONSTANTLY.
I’m always SSH'd into a new compute cluster, like every other week.
I usually don’t have apt-install privileges on the remote servers.
I use VS Code because, in my opinion:
The remote server experience is better.
Vim motions are available in VS Code.
The data visualization experience in nvim sucks.
Plugin setups are more portable in VS Code.
The voices in my head told me to steal your mug, so when you feel comfortable to reach out and make your selective tea / Coffee it doesn't exist anymore.
Give this guy an oscar. Pure genius!! Thanks for the talk!
For the first time where I don't agree with you. Reason I like to do all those task in Neovim is to be able to create a mapping for them
I prefers Emacs, as all that is easy done in plain Emacs. And if you want to run from terminal, there are emacsclient, so you don't start a new Emacs.
And if you really like the vi key bindings, there are evil and some other packages for Emacs to do all that. 🙂
I agree with almost everything, except using it for git, neogit is just too good...
Mr Typecraft, is everything alright?
Yup!
This talk on Neovim confference 2024 was one of the best!
awwwwwww you're making me blush
That is kind of the why I am not using NeoVim and I stay satisfied with just vanilla or almost vanilla Vim, despite me being just lazy and not willing to invest myself into NeoVim ;).
Why would I overcomplicate my environment (besides "because I can") :).
Make a new guide, 0 to NVIM + tmux IDE
Using neovim as an ide follows the Unix philosophy because it collaborates with LSP and debug adapter.
I use gitui, helix, yazi and terminal tabs a lot.
As always..catppuccin 😎
I expanded nvim with kickstart for Python development and hated ever last thing about it. The best way I can describe it is, feature-creep from hell.
Those whispers were just Nix users telling typecraft to use their nix configs.
this is a good take
I 100% agree.
Just in time I learned to use it on iOS development, now you saying don't use it!?? why man what should I learn now maannnn
Wait… wtf is Emacs then??!
an operating system with a decent editor
@@typecraft_dev still trying to work out what happens when people run Arch on Emacs then (btw)
I think the same. Just code in Neovim. The rest is "rest".
Exactly, the terminal already can handle all the tasks, what's the problem by just quitting the text editor, aah forget perhaps newbies don't know how to quit.