You actually gave me a very good idea and a potential solution to my problem. Cause the thing I found tiring about Neovim is exactly that: tinkering everyday and spending hours trying to learn all its details and the perfect set of plugins and keybinds that I end up not doing any development, but instead just customising my editor endlessly. The solution is as you mentioned: be satisfied with a "good enough" setup and THEN revisit it 6 months later to deal with its pain points and deficiencies. Do that every 6 months and dedicate a day for example to re-optimise the refactor my config. That's a great idea, with all honesty.
I had the exact same problem. Plus I never understood viml. My brain never parsed that language. Then I switched to emacs and it was even worse, but at least my braid could parse elisp. Then doom-emacs and it finally feels like I let somebody else care about the details. My config accumulated over the years of experience got replaced quickly.
@@pixelsam123 I thought about it but it just doesn't work for me for the same reasons in that article. For instance, I don't like the default keybinds set in most of those distros, I don't like the fact that there are things installed that I don't need nor want to use, I don't like the fact that someone made those choices for me where the whole idea of using Neovim is to be customisable and personal. For example, I like the interface of lazy more than packer so I don't like using a distro that is built on packer. Same goes for many little choices here and there.
It’s still a lot of work but well worth imo, start with a preconfig or build from scratch but spend some time with it. Decide what needs to change and batch it. As time goes on it can be less frequent but you may have to do this every other day, then weekly etc as you delve in. This is true for engaging with any system which has a dynamic nature, it can be very chaotic when it’s not imposing any rigid structure, you need order to develop trust and reliability.
Yeah, this is the answer. If I run into a problem with my config at work now, I note it down on a piece of paper and keep working. I revisit the paper every few weeks to clean up the pain points in my config
If I could provide a critique/comment on your experience, I would like to say that this is why you don't go down the customisation rabbit hole. I learned basic vim keybindings, and still use that. I have only two extensions (fzf + live server) and 4 configs (hlsearch, incsearch, number, relativenumber). Whenever I ssh anywhere, I know I can quickly get running, which I cannot do with code. If you want customisation, use an already configured keybinding and extension setup by any of the great people and setup dotfile config so it is automatically installed in whatever system you ssh to. In vscode, I was slow. In vim, I was slower. For 1 month. Now I'm atleast 2 times faster. No dragging the mouse to select something. No dragging the mouse to file tree to navigate and open a file. No opening folder, browsing through my files and selecting my project. Just open a new session on tmux and run vi, all good. Just pure code editing.
I am 100% a victim of trying to tinker things to perfection, the whole reason I went with Notion over Obsidian is because of how much more room I had to configure pages/etc
@@kublaikhan437 me too other than that I love there is git plugin support, so I could push the notes into private repo and then sync it with other device
I made the switch to Neovim earlier this year, all thanks to Primeagen. On my first night, I ended up playing around with configurations until 4am. I thought I had everything figured out, but little did I know that it was just the beginning of a never-ending journey of configuring Neovim. I spent weeks experimenting with different things, but eventually found my sweet spot with LazyVim. Once I got used to working within this configuration, things started falling into place. I totally get what TJ and Prime mean about personalizing your experience. With Neovim, it's all about constantly iterating and fine-tuning your configuration. It took me around 3-4 months to really nail down my setup using LazyVim. But now, I feel like a pro with Neovim, and it's customized perfectly for my needs. I even went the extra mile and created my own custom SolarizedDark theme, along with a few others that I couldn't find in VSCode. To sum it up, Neovim does require some time and effort to get it up and running smoothly. But once you do, the satisfaction is worth it. You become intimately familiar with your PDE and can troubleshoot any issue at a moment's notice. At this moment I rarely play my configuration and only focus on code.
Since we both use the same nvim distribution and you have experience working with themes, I was wondering if you could help me with a configuration issue. Specifically, I've been struggling to permanently set the guibg (background color) of my relative column line. Despite trying to create an autocmd for it, it keeps getting overridden by lazyvim. Currently, I have to manually type the command each time I launch nvim. Do you have any suggestions or solutions to ensure the guibg setting persists upon launching nvim?
@@WouterStudioHD proper code as in something that solves a problem for a business. It should bring value to people. Making ur ide feel good is not coding lol
How about remapping it and replacing shift with (space) leader :) Also, why wouldn’t we open a split terminal view for each of these executions instead? It might eliminate sleeping and being blocked from dev while executing without having a separate session
I've been trying to switch to Neovim for years. And I really tried, many times. But I always switched back to VSCode, because I just don't have time to learn. It always got in the way of me actually coding. You talk about the value of "Good Enough", for me VSCode is "Good Enough".
And there's also one other really annoying thing: I am an azerty user. And you can really feel that vim/tmux were made by qwerty users... I know you can remap everything, but I don't have time for that either.
@@chtcoder6439 If you like your current workflow, there's 0 reason to change it. However, I do remember my first neovim experiences being the exact as yours. It took me like 2 years and atleast 4 attempts to switch to neovim before I finally took a few days to actually properly learn some of the basic keybinds etc. For me, it was definitely worth it since it saves me so much time every day now, but yeah it was definitely not something you learn in a couple of minutes haha.
Baseline Neovim = fantastic example of minimalism As soon as Lazy was installed, every little action felt a bit off. Still pretty fast, but not AS fast. After much investigation, it turns out that there are many plugins installed and turned on by default with that feeling you described at 13:28. Went back to packer and dein without all the fancy plugins and I felt unchained like I got out of the gravity chamber after a 10 year stay. 🚄
@@coconutflour9868I would say nothing if it works for you. Lazy is weird with all its lazy loading. Every feature on every startup takes WAY to long to load. I'm a slug and use a preconfigured nvim because I wanted to try it out and got stuck. But Packer really seems like it has the advantage in speed.
If you are a coder you should not rice your dev host. Completely agree with that. I used to build my own desktop environment from scratch and learned really quickly that's not fun when you're trying to do get work done. Stay as close to default as possible to make updates smooth as possible.
@@ThePrimeTimeagen yeah agree, but still you are vimfluance people and laugh at one that use vscode. You just changed your mind when Theo did video about being default as possible...
I “rice” it in the more inobstrusive ways. I swapped out Gnome for KDE, I installed some new global theme, I swapped out window manager level shortcuts for caps lock as escape. Other than that, the customisation stays in my shell scripts I write and my window manager specific workflow (I like Yakuake w/ tmux)
Depends what you mean by rice, if ricing includes making your environment more productive then no you should, otherwise get stuck with using your mouse on a subpar OS and subpar floating wms
I needed so much to listen to this. This last weekend I spent all the time trying to improve my nvim config. And couldn't solve almost anything. Felt so frustrating, but it exactly it. Let's keep with the good enough. Thanks man!
11:14 the overview on the right is useful when dealing with existing legacy projects and some files are thousands of lines. It supports highlighting lines for a few different things (search, diff, errors, breakpoints) to get a quick way to jump to those lines visually. Yes, you can do the same sort of jump using keybinds or other keyboard-only interactions, but I've still found it convenient when editing monolithic typedef files on someone else's typescript project (or massive generated files when using a generator to quickly get up and going with graphql in a typescript project) or massive c files I need to update from an abandoned project I still rely on tools from.
As an indecisive beginner who's still all over the place and trying to find a path, this channel speaks to me a lot. I see it pop in the suggestions almost everytime I search a question and it's mostly here I find the answers I need. Thanks a lot!
I was a VIM (and earlier VI) user for decades, coming out of college having learned it on HP/UX systems. And for a long time I used it even when I went to Microsoft where I'd get weird looks from the GUI users. But eventually I capitulated, because all of the development effort was going towards those other systems, and they got to the "good enough" state where I no longer perceived a real benefit from my old experience. In the end, the amount of time I spend physically writing code is dwarfed by the amount of time I spend reasoning about the problem I am trying to solve, so tools that help me reason better or communicate better are so much more worth my time to learn to use effectively (and we only have so much time in the day). Others who get to spend more time "in the trenches" may not make this tradeoff, but that's what led be to VSCode and away from the VIM variants.
Yeah. I agree. In the end what matters that you get work done. VSCode is just that. That’s why vi or nano is amazing because it just does the job without needing to configure it. And it s available everywhere. What do you mean about the communication?
Or some people might not have to do this tradeoff and are using the best stool for the best job for every task, it has nothing to do with the "trenches", if your execution is slow and doesn't follow your mind's speed then you're just limiting yourself no matter what and are getting distracted by a subpar tool. I'd also add that your example is pure nonsense neo(vim) isn't just for when you "physically write code", this part is solved by every decent vim emulation in other editors, "thinking about a problem" requires switching between different files in different projects, grepping, finding, fuzzy finding, putting things to the quick fix list and so on, all that is done way faster in neovim, editors like vscode don't even have decent fuzzy finders for that matter. Unless what you mean by "thinking" is going to the woods and think about your project but at that point you don't even need a computer.
I switched from neovim to IntelliJ IDEA with ideavim plugin which gives 90% of the vim shortcuts on it. A modern IDE combined with vim keybindings is the way to go. vscode also has vscodevim which is pretty nice too. vim isn't just the editor, it's a way of life.. you can utilize it anywhere.
I suggest using the Neovim plugin for VSCode instead of the more popular and well known vim one. It's faster and has fewer issues and bugs, and it uses Neovim as the backend instead of trying to "re-implement" it in JS.
Thank you for the video. I actually liked it much more than the twitch style since you were more focused on the article and your point of view instead of interacting with a live chat. Very nice take, keep it up!
The FOMO on fancy new plugins is soo real! To be fair to Neovim, I have the same issue with every pluggable editor I've used. Don't know a great solution there except developing discipline (not gonna happen). Vim keybindings are DEFINITELY a godsend. It's like if you had copy and pasted by writing things BY HAND and someone suddenly told you about CTRL-C/V. It's a higher level of abstraction and composable, so you spend less time telling the computer HOW to do the thing, and more what to do.
@@banatibor83 That's an arbitrary number, ain't it? I get your point, it's that it's funny when people set a number, threshold that isn't really based on reality. For someone else having more than 3 plugins is stupid. For others, plugins are their way to tailoring their Neovim setup. I think the right criteria would be how much it affects the performance of the editor, and more importantly your performance. The latter is harder to quantify though. It's almost always better to just focus on mastering the tools you currently have, and stop worrying the better ways your can write code, and just write the damn code. But this problem is present there as well. When should you be satisfied with the code you write? Ugh, this is hard. Who thought that defining what is "enough" would be this deep of a problem.
The installation and management of plugins was the main reason I was thinking of moving over to emacs and later VCS. I never really managed because the bindings never really work and because if you nave to jump through multiple languages, NVim/Vim have always felt easier.
I was thinking about giving neovim a try, this has me questioning that decision again. For context, I only program maybe 30-50% of my time. Most of it is in completely different applications like Altium, yED or Innovus. So any benefits from being faster in an editor are rather small. Plus I kinda don‘t want to learn yet another set of shortcuts, I already confuse them quite often.
The Vim bindings are worth learning for basic text editing. That's why it's a popular editor in the first place -- and for some people, their only editor.
I've used vim for web server config in linux. Now I'm using Vim extension in Visual Studio for C# and intend to add it to my VSCode setup on Linux. This way you get used to the navigation and the main thing is to be able to move through a file by words.
hi! you dont have to use neovim for the configs. most ides support vim motions, so youll be fine. you should try it though, i cant go back to anything ive tried before. it does take some time to configure/get used to, but typecraft, tj and prime have good resources regarding that part
I would say that learning other people's setups is actually great as long as you learn *lots* of them. It allows you to take parts you like from all of them and synthesise them to get something perfect for you
Nvim has been super fun and fast to use so far. I have configured it to fit me and its golden. I came from a really nice setup and fit with VSCode and i have been able to get most of the functionality i am used to with Tmux, lspzero, Treesitter, and a few other little things like comments, snippets, etc. It feels great not having to leave the terminal at all too. Teaches a few things while setting up and once i got that I'm content. I love it because it made me realize i would be able to pull my config easily on whatever setup i create in the future. Not against VSCode at all but using Nvim in the terminal is just faster for me to STARTUP and get going these days.
Regarding the distro argument, I was getting tired of constantly finding things were missing or broken with my own config, and it is really annoying. I eventually tried out LunarVim and it's pretty intuitive out the box. Sure, I could fine tune a few things but to be honest, once you get to a point where you have the muscle memory for all the tools you need to be productive, that "becomes" my preference. Plus the way the config files are written make it really easy to include something like Harpoon into the mix and even give it all the first class treatment, like showing up in the quick menu etc..
I love using vim but for bigger projects I really like having my files in tabs on the top and having easy access to the file explorer. These visuals really help me as I don't have to keep this information in my memory.
So I do understand Prime's "function only" mentality. It certainly makes good logical sense and I think sometimes I wish that were me. But I don't rice my system just to rice it. I am extremely influenced by environment, aesthetics, cleanliness, and quality. Even my physical environment like my office, desk, shelves, lighting, monitors, etc. is important to me. I have to create an environment that I WANT to work in. And for me, bare walls, white lights, plain desk, stock keyboard, yada yada don't make me want to work in that environment. Now it's not like I CAN'T, but I work so much faster and with more enthusiasm when I'm in an aesthetically pleasing office space. Maybe it's feng shui, maybe it's OCD, maybe it's a disorder for all I know lol. But my computer is no different. I had been on Ubuntu since high school which was almost 15 years ago now. I ended up making the switch to Arch somewhere around 2017, and let me tell you, I don't think I left my room for 6 months. From the very start, and following the wiki (which is hands down the greatest OS wiki on Earth), I began installing everything from the command line. I learned so much about how my system even works, what components actually make up an OS, and how to basically build my own environment from the ground up. Nothing that went on my system wasn't directly put there by me. All of this made me want to customize every last detail and end up building a system that was uniquely mine, highly functional, and beautiful to look at. I hate bloat as much as the next guy, but that doesn't mean at all that you can't have a sleek experience. The beauty of software like Neovim and Linux is that you can create a beautiful looking experience and still avoid a lot of the bloat and fat that comes with Windows, Mac, VS Code, and prefab packages, and that's because YOU put it there. You can use your system with only the components you want, and avoid others. And my system is super fast. There is really nothing I use that I'm like "I wish this were faster." It's all about preference, and I completely understand the desire for minimalist functional environments with ZERO fat, but it's certainly not necessary to be a fast, efficient, and effective coder that knows your system inside and out and maintains a workflow that makes you excited to use and yes, even look at, to make the best out of your job. When you're losing performance to the point where it's slowing you down, or you perform repetitive tasks inefficiently because you can't do it any other way, then yes, fry off some of that rice and go get your life right with Christ.
This is kinda the reason why I switched from vscode and neovim to Emacs, not any variant, just vanilla Emacs with a book guide to help me with the most important keybindings. I don't even have plugins installed yet except for a few must-have, most functionality is in a responsive GUI, which already makes it less buggy and easier than neovim, but it's super fast compared to VSCode especially if you run it as a daemon. It's all about use cases and how much time you spend tinkering stuff compared to how much time you're actually productive
I went through the same process but decided to switch to Helix, it's written in rust, it's blazingly fast, super responsive, it's very minimalistic, lean, and effective you get the bare minimum of usefulness and no bloat. Out of the box you get full modal support like vim / nvim ( but based on kakoune motion ( which I personally prefer tho if you are switching from vim and want only vim bindings there's already a repo with pre-made config for that ) The configuration of the editor is so much better than neovim, there's no Lua file just a config.toml file which is very well documented and easy to use. You get the ability to split windows, a file gutter, fuzzy finder, lsp, themes ( you can add your own too it's very simple compare to vim, just create a theme directory in your .config/helix/themes and put the file ) it support transparency, debugging, through DAP, buffer, clipboard support, different registers for copy pasting, It's imo a superior neovim, I really liked neovim, but it's so unintuitive to configure, the documentation is inconsistent at best, and I'm probably not that good at lua. I get that you can configure it the way you want, but helix just work, it has everything I want, and it consistently work, with just a brew install helix, I get my nice editor, I symlink my config and hop I'm ready to work in no time.
Hmmm watched the video on their site, and it just looks like my NVim setup with Telescope. Not sure the point of making an editor from scratch when an NVim distro would essentially provide the same thing, but far more extendable.
@@brandongregori995 Yes, and no I've tried, many distros, like NvChad, LunarVim, AstroVim, SpaceVim. They are all very good implementation, and yes you are right, with them you get a lot out of the box, and you get the opportunity to customise it further. The thing is, they all require a bunch of dependencies, that may break in the future, with an update, it happened a few times and it's quite frustrating. I don't expect it to be perfect, because at the end of the day I know the maintainers are doing it for free, but Helix so fas has always been simple and reliable, and to me it's what I'm looking for, I don't need much for what I code, so I don't mind having less features, as long as the one integrated are well made, and coherent. Because with nvim, plugins, a lot of the times you get some conflict, and things that stop working, and it's quite annoying to go dig in to fix, at least it's my experience, some people might have another experience and it's totally fine.
@@gorudonuif you were designing bindings from scratch, would you reproduce vim? I certainly wouldn’t. If you like vim bindings because they’re so *common* that’s a different matter. Same logic as saying qwerty is the best keyboard layout
As someone who has never used copilot I actually never really feel the need for it. Sure, I may have encountered some difficulties trying to solve some shit out myself but I just treat is part of the learning process and I almost always manage to figure it out by looking it up. Also, I get the part where the neverending push to rice burns you out lol. Been there done that specially when I got really into ricing my window manager a while back, it's like an addiction. Whenever you see someone have that oh so good looking setup, you just feel the need to go back and improve on yours even though it already was working fine. I always ended up asking myself, man, are these sweet ass colors really making any difference on the way I write code or am I just wasting my time doing this in order to get a few thumbs up on reddit back then.
I think copilot is a hindrance if you're learning how to code, but it's a godsend when you need to write semi repetitive things, or you're working with an unfamiliar library trying to do *one* thing and don't feel like scouring the docs for how to get some type so you can do the thing
Another part of it is being able to share ide tooling across a team. You can create shared vscode files that have debugging, settings, snippets, and recommended plugins that just work out of the box.
My rule is that I don't change things unless they're actually a problem, and I solve problems, not inconveniences. It's not uncommon for me not to significantly touch configs for up to years on end unless I'm doing something outside of my past considerations, and that's just as it ought to be. It can be fun to tweak and to spend a lot of time creating a strong initial setup, but it gets really tiring sometimes making sure every program has non-horrible ff and fi ligatures and such. If I ever have extremely substantial reason to nuke my system or existing configs that's when I pull out my notes on inconveniences and important things and only then do I get blasting on config shenaniganary.
yeah, also it is easy to make small changes here and there and get used to them over time and not even being aware of the level of customization you are engaging with every day until for whatever reason you find yourself out of your setup struggling to make anything because everything you do out of your muscular memory doesn't work anymore.-
One thing I feel like this article touched on but didn’t really address directly is that numerous neovim plugins do not have nice defaults like VSCode plugins do. They’re way more configurable, but you have to spend a ton of time screwing around with things to get it right. Every VSCode plug-in I’ve ever used basically worked out of the box and if you wanted to then configure it further you could do that. VSCode is also way more portable. Understandably so since neovim plugins have a focus on speed, and portable languages like typescript are not known for being “blazingly fast”. But for somebody like me who has to work on both windows and Linux, the process of keeping parity between my systems was too much of a pain to be worth it. Especially when many plugins and even NVim itself essentially have a “Windows 2nd” (if at all) mentality
Vim out of the box has a horrible user experience. I wrote a *Vim Cheat Sheet for Programmers* which mentions how to make Vim not suck out-of-the-box: :set nocompatible ruler laststatus=2 showcmd showmode number :set incsearch ignorecase smartcase hisearch :set shortmess+=I
been learning svelte and i was having so many issues with the svelte lsp in neovim that i had to switch to vscode. additionally, the svelte extension for vscode just improves the dev experience so much. still using neovim for everything else though.
Yeah it's very weird how svelte + nvim is worse than the vsc extension despite both being based on the lsp. It's weird. I still prefer neovim for svelte just because of how fast neovim can be compared to vscode for me.
I started programming in Java and C# so I've used Visual Studio (later Visual Studio + Resharper) and IntelliJ before going for Rider and IntelliJ. These big IDEs get extremely resource hungry for large projects where just indexing files upon startup can take 10+ minutes. One thing I learnt though is that they're not just spinning in idle while doing this. Jetbrains editors are extremely powerful. They'll have refactoring features and project wide symbol searching that'll blow anything else out of the water. When I tried to setup neovim there was just no getting around the fact that I would have to sacrifice a lot of editor features if I wanted faster load performance (and as it turns out not even that much faster because scanning large projects will take a long time no matter what editor you use). Neovim as a replacement for VS Code? Probably a no-brainer, it's almost exactly the same features with less bloat anyways, but as a replacement for Jetbrains editors? I don't think the answer is that obvious.
Exactly, nail on the head. The JetBrains IDEs are crazy powerful as orchestration tools, and once you get used to the refactor functionality, or their built in Git functionality tools (which I still haven't seen anywhere else), trying to use another editor feels like I'm trying to work without arms.
@@thebluriam JetBrains' git integration is terrific. That's what kept me in their camp. Refactoring is also really good though varies depending on language ( C++ > Python > Rust )
I also switched to helix but I did not know about kakoune before. I think the bindings are mostly like vim, you just select before you execute something. I love that helix has all I need built into it and is so easy to configure and even to write own functionality, though some rough edges still exist (basically some inconsistencies).
I never got the copilot thing, if i want boilerplate i can either get snippets for that or i can just ask chat gpt, i don't need it bothering me when i didn't ask it to do anything
Using Copilot for a few months now, and I completely agree with you, I find myself turning off copilot a lot because it gets in they way of my logical thinking, sometimes I know what I want to write and Copilot just tries to generate something random that sometimes takes me out of my logical thinking line.
I used to be a big config tuner. Could sink a lot of time trying to get some stupid 'convinience' feature to work. You're spot on about good enough and self control. I don't tinker with the config much except to occasionally add a new key binding, and then every once in a while maybe something larger. If things are working, I don't feel like i need to make it better anymore.
I'm a Linux user for over 15 years now, and for the last 5ish years I've been building my own DE of sorts on top of the Openbox wm, meaning I'm super into configuring, customizing and tinkering.. The main difference is, I have a clear goal of what I'm trying to achieve, and once I manage to reach that, I forget about the config file (unless the update breaks something, since I use Arch, btw). My point is, I think it's just a matter of personality.. I'm a minimalist, and I know exactly what feature I need/want in order to get more productive, and once I get that, there's no need for me to search for the next thing.. No, what I need is what I get.. I'm using neovim with a couple plugins installed, but the ones I'm actually using are just fzf as a file searcher and floating terminal to give me quick access to bash.. Lsp is great, but it's too heavy on my old 4gb ram pc :) That being said, when I set those two to work exactly the way I like it, I didn't touch it since (which is over a year now) and everything works amazing.. Now, I totally see how most of the people would need more plugins than that, but still, when you reach the point of satisfaction you can simply stop and enjoy :) I don't think there's anything wrong with trying to always add something new, I just personally don't see the point :)
The last thing I updated on my neovim config was removing a plugin I didn't use that I forgot I had installed, that was last month, before then it was probably 8 months since I migrated from standard vim to neovim for better LSP support and ez autoconfiguration of LSP. That, treesitter and the better performance from lua made me switch. The core vim/nvim config remains mostly the same as before, near default.
primeagen, disculpa que lo redacte en español. Me gusto mucho lo que mencionaste de buscar la eficiencia y segui, usando lo que mas comodo te parezca, personalmente me paso lo mismo de nexxeln y es que cuando neovim salto a lua no fui capaz de adaptarme pues ya tenia todo mi entorno en vimscript, ya me habia acostumbrado y no tenia tiempo para aprender lua y empezar a configurar todo otra vez. tambien se me hizo mas complejo algunas configuraciones, algo tan simple como hacer un remap y tenia aun mas pasos y me desmotivo bastante. Voy a volver a darla la oportunidad mas adelante.
Regarding copilot, it's not just fancy code completion. The ability to generate large blocks of (mostly) functional code quickly is a game changer. I was skeptical at first, but once I got copilot working well in neovim, my productivity has increased significantly.
Couple of questions if I may: 1) what languages do you use? Phyton? TS/JS? I haven't used copilot yet, so I don't know if there's a difference in capabilities there. 2) any tutorial or resource you would recommend to set it up on neovim? Thanks!
actually i am very happy to use neovim now. i tried notepad++ / netbeans / vscode / atom / dreamweaver many years ago and their speed made me frustrated. even i don't have time to learn lua, still i can download some professional works to make my neovim beautiful and efficient. i have used neovim for about nine months, and i can do coding, markdown note-taking, doing latex exercises, all in neovim. yes, i am doing note-taking also since notion is too slow for long notes. the most important thing is , i do not need to move my hand to and fro keyboard and mouse anymore.
I have a similar state with Emacs. I got into a rice loop, although I had no actual project. The moment I had to start doing some coding, Emacs gave me just that bit more friction that I returned to VS Code LSP works flawlessly, and I can edit just as fast if not faster. And since then I've also been deepening my shortcut knowledge. However, I do not regret customizing my Emacs, It's not perfect the LSP and autocomplete may need some work but since I don't use it for big stuff I don't care, like OP I still use Emacs to take notes and stuff like that it's just fun to spam commands, although I'm not actually doing nothing, cuz happy keyboard noises. And I agree that it is an experience that everyone should do. Heck I would argue a similar thing with using a bare git repo for dotfiles. I can replicate my setup with relative speed, sure that have been some complications mainly due to the fact that one of my environments is Arch Linux and the other is WSL (ArchWSL, so kinda arch still, I actually like arch it's not the BTW meme here, the recency of the packets I like, and I've only had it break on the grub issue which was now replaced by systemd-boot and when I was too sleepy to wait for the update to finish and the poor machine hanged and so I had to chroot into it after mounting the btrfs subvols, so I could mkinipcio -P since that's what I broke, I actually wrote a script to build that environment from scratch although I still had no reason to test it, ok I did the BTW didn't I...) so as I'm doing a native Linux and WSL some configurations differ and to add to the complication the bare metal is Wayland and WSL has GWSL which is X11 based so I already had issues with pulse audio variables (metal uses pipewire) and $DISPLAY, so yea it has been a ride, but even so I like it since I can configure something on one side and just dot commit; dot push and on the other machine dot pull and done. TL;DR Tinkering is good and I think necessary, but when you need to do a job just use tools that work.
i've tried using primes i3 and nvim setup. it's defo fun but i just wasn't up for re-fixing it every few months, reinstalling on new laptops and actually building the muscle memory however i'm happy i'm knowing it all exists if it ever tempts me again. It defo handy knowing vim. Using it as my daily driver, just has a lot of overheads as a frontend guy IMO. just can't really beat installing in one place, click a few UI buttons for vscode extensions, and you're done. In addition to helping junior or other devs do the same on my team. It's easier for me to lead by example. The idea of flexing some NVIM on them is appealing but i'd rather just be better at helping them out.
I agree with many points of ThePrimagean. Although, I don't tend to use the default but seek out people who have configured programs in a nice way (such as his neovim config) an either take their whole config or steal bits and pieces. Keeping up with all updates and trying to configure everything all the time just is very boring to me. Having a phase like that is useful for learning how things work, but don't get stuck in it. My method of course has downsides as well but it feels like an overall productive and frictionless approach to me.
The description you have for how you handle your NeoVim config is pretty analogous to taking a look at how you organize an office or physical workshop. Set it up right and once or twice a year double check it is working for you the way you want
I was a hardcore vim user and later neovim when it started, during more than 5 years, when VScode came out I switched for similar reasons. Happy with that decision.
Nvim's customisability attracts programmers like the Hot Wheel's section at the store. Tinkering with it is fun. Making your IDE your own is fun. Customising every little detail is fun. But if you're really asking if it's good enough, then I find myself answering that VSC is good enough. It's light, fast, no BS, easy configuration. Plus the keybindings that you use in VSC/IntelliJ/WS are the same ones that you normally use in your machine (MacOS/Windows). For vim, you have to learn a whole bunch of keybindings just to do the same things that just work in your one text editor. It's fun, but if I am looking for good enough, then VSC is good enough. Nvim It's borderline gimicky.
I have questions, how you guys get to know about the vim and learn about how to use them? How much time you devote to configuring and practicing using this kind of editors? Even though this will speed up coding, sometime I just feel confused about these complex configs.
I guess this thing sums up a bit my experience as well: nvim has nice set of plugins, has couple fine precollected setups (astro/lazy/kcikstart) but... If you have freebsd you want to talk with - nothing will save you. vscode fails to work with csh, neovim fails with installing majority of the LSP plugins, even lua_lsp doesn't work. So it requires bolts and screws to make it work, and i never got to the end where everything works flawlessly, since it'll consume so much more time. Half of it true for windows as well. Astrovim/Lazyvim/other basically try to mimic vscode behavior in terminal, but in vim way. Okay for starters, pain for advanced users. Hell on the inside part. Another issue - terminal multiplexers. tmux, screen, zellij - if you run nvim there you'll have tons more tiny issues you need to fix to be productive enough - colors, keybindings, clipboard. And no, nvim is not good as multiplexer by itself, especially if some connection hangs - you can't just kill certain buffer, because it doesn't made that way. Working with :terminal kinda painful and doesn't respect many things you have in regular terminal. I use windows at home. And windows support in neovim is kinda meh. Basically it's terminals make things more complicated like multiplexers, so you need to fiddle configs one more time to make you flow productive. And config becomes slightly unportable for those reasons. So not nvim config to rule them all. Vscode/Sublime has some pretty unique behaviors unreproducable in nvim, at least for now - there's no such plugin to select things like does in sublime/vscode. Multiline editing in nvim sucks. There's no good substitutes in neovim for these. Many such little things also non existent by default and require more hours to configure. For some reason LSPs works only half of the time and I have no idea how to check whats wrong with them. Also it will consume a lot of time like porting things i mentioned above. And generally C/C++ LSP sucks and if you has to cross compile or build system has weird quirks combined of shell, python and makefiles you basically have no chance to receive LSP assistance. Or you do, but I guess no one can guess when and why. It's a deep deep dive in the compiler's world. Took me hours of attempts to make it somewhat behave consistently but I failed it in the end. The minor issue is the way of installing neovim. On non-RR distrubutions it requires some workarounds because default repos will have outdated versions. So it basically cries "make install me". Just aint good. And finally - if your alphabet is not just ascii you also will have some fun time. So my setup generally is a weird combination of nvim, vscode and some other editors, working side by side inside this zoo environment.
When I started on VSCode and modified it as much as I could. I was a heavy VSCode user, I knew all the shortcuts and I was really fast with it. When I had an old Mac that couldn't run VSCode I tried NeoVim, since I was already using the Vim VSCode plugin. I loved it. I was so glad I could modify it specifically to my personal needs, I still like the file explorer btw. In the beginning I was modifying my config like every other day. The thing I have observed is as time goes on I need to modify it less and less often. Right now I might touch my config once a month if I want to try a new plugin. My config still has some minor bugs but again the are not that problematic and I'll try to solve them once a month. I am using AstroNvim because I wanted an quick start but I have been modifying its plugins anyways. Apart from some tsserver stuff, that I probably haven't setup yet, I haven't seen any difference in my coding to VSCode, Copilot runs smoothly as well. I love to try new plugins but I am quick to dispose of them if I don't like them or I don't need them. Also, Updating my packages is fine. I update them regularly and the interesting thing about lazy.nvim is it will tell me if there are some breaking changes and I can take a look at them, so no problem there. Really liked the article as well! Some valid points where made and I do thing you should use what ever editor you feel comfortable with, just learn the damm editor really well!
Speed is the most inconsequential thing when it comes to programming, most professional programmers will spend most of their time reading other peoples code then writing any new code anyways, so I don't understand wasting time memorizing shortcuts and setting up config files etc. for some command line editor when you can just install Sublime, VSCode, or any other modern IDE and get to work instantly right out of the box, almost all of these programs come with some form of command pallet with fuzzy search, so you don't even have to learn any of the menus or keyboard shortcuts, just type the initial of whatever command you want to run, it will be the first result in the command palette window and you just have to press enter, if you run a command frequently enough, then you can setup / learn it's keyboard shortcut, for everything else just use the palette
The 6-8 months turnaround seems about right to me. Personally, I have been using neovim distros for a few years but will be going back to a purely personal config at some point here. The writer is dead-on about the issues that they cause. I used to use SpaceVim but, stopped because getting more up-to-date plugins to replace EOLed ones was a nightmare. I'm currently using LunarVim but already see some issues as I don't particularly care for LazyGit and a few of the other plugins are not useful in my workflows or just get in the way. My opinion, as someone who wasn't lua-y before, is that they are a great starting point and way to keep you from sinking daily time tinkering as they can be nearly "Good Enough™" out of the box. Figuring them out can be very useful in picking up the lua needed to effectively customize your config. Ultimately though, it will always be a better fit if done from scratch.
I haven't touched neovim yet. For years my primary editor was GNU nano. Seriously. I wrote thousands of lines of javascript with GNU nano at work. Once I started learning TypeScript is when I finally decided that GNU nano wasn't enough. I went with VSCode. It was ok. Then, I started diving into devcontainers. That's where I live now: Creating PDE's for the projects I actually want to contribute to. I love that. Configuration, extensions, cli tools, os tools, and even sidecar services all wrapped into just a few files. YES!
Nice summary. Reflects my experience so far. I started with vscode, and then I discovered this ultra fast vim thing, spent some time figuring some stuff up in vim script most of which I did not understand at that time. Kinda turned me off for wome time Then I tried a neovim and I finally loved it: telescope, treesitter, lualine, LSPs and everything else everything works nice. I can now even change my theme vased on what hour is it for day/night more comfortable coding. But can't say I'm comfortable with it enough to be as productive as I am in vscode. Especially in large codebases vs starting new projects. I am yet to figure out actually useful go-to definition, like in vscode its just ctrl+click on function. I know I'll learn to set it up someday, but it just takes time
My problem with neovim is 2 fold. 1. I don't want node.js on my system. The other LSPs don't seem to work. 2. I started working with unity. And neovim is a nightmare to work with in unity.
I spent 20 hours configuring my Neovim setup. I spent 15 mins setting up my VS Code setup. Using Neovim taught me how to setup VS Code in a more efficient way.
when I'm new to a project, I need the file tree, even if it follows a "standard" directory structure because In every project I have been, they have standard file structure and a lot more than that, so I spend a few hours, reading through the code, jumping from definition to definition, memorizing the directory structure, making additional key bindings I consider will be helpful and keep optimizing on that as I go.
i started with Sublime, then Eclipse, then Brackets. I settled with VSCode because, really the massive amounts of extensions is just too useful to ignore. i feel like the versatility of VSCode really boils down to how much time your willing to spend learning it and configuring what you want to do with it. i made my workspace config MONTHS ago and only ever move things around when something annoys the crap outa me enough to spend an hour trying to fix it. Visual Studio annoyed the BAjeezus outa me so much I managed to make VSCode compile C++ JUST SO i dont ever have to use the god awful VS. VS feels like the team developing it had some Romeo Juliet level family infighting and refuse to use any of the tools, features, and dev experiences that made VSCode the world champ.
I tried to be an Arch + WM + Vim person but ended as an Arch + Gnome + VSCode person, at least I got 1/3 of them :) The editor that you use doesn't matter as long as you put enough time and effort to learn how to extract as much productivity as possible when using them. Nowadays, I use VSCode as if I am using Neovim, I rarely do anything with the mouse and only rely on the keyboard to do most of the stuff, like navigating and jumping through files and editing stuff.
A couple of months ago I configured my Neovim completely to match my workspace in VSCode and it worked pretty good but some configs I wasn't able to setup correctly, such as Tailwind and a few other things I use. In the end I switched back to VSCode although I use Neovim for Rust programming sometimes. But generally speaking, I agree with some of the author's opinions and also agree with Prime and I can even say that I'm really looking forward to the development of Zed, it seems to be a really powerful >blazingly fast lol< code editor :)
I didn't get a point when his packages broke. I use Plug which has lock file and it locks all commits. If I want to update packages (which I didn't do for 2 years and I'm fine) I do it in a separate branch and check that all works before I merge it back. Obviously I plan some time to make updates. Plugins for VsCode can also break which I felt myself. Again it's not necessary to update your config and try all new packages if you don't need to.
About people tinkering their config all the time, I keep seeing that everywhere but I copied your last config video series cause I liked the flow, the only change I made is adding m to auto run :make so I can setup projects to have a phony for the thing im working on and it's super quick to iterate but havent touched it in as long as you ironically
I liked this format. On RUclips, I'm generally looking for content that's on point, whereas a stream is more about spending time with the audience, so it's fine to meander off topic there.
Interesting reflections, mostly watching this to understand how other developers think about their editor choice. For myself I have a vimrc that is old enough to drink and I'm at a point where I make maybe a handful of changes to it a year, if that. Used to tinker with it constantly in my early years, but at some point you grow into a workflow where you're so comfortable with what you're doing that there's not much that is bothering you enough to change things around. I guess one could probably argue this might just as likely be an indication of things getting stale though. Watching your videoes is helpful in that regard to challenge what I'm ingrained with, so cheers for that. Keep'em coming.
Hey, not a big deal, but just thought I should point out you don't actually have any link to the blog post on your description (I ended up manually copying it from the URL in the video, but still, would be nice to have the source directly on description).
Personally, I've found copilot to be very useful for repetitive tasks, and now I have the copilot chat extension in VSCode so it's convenient for me to ask stuff like Regex or date time formatting. I can give it the response object from an API and ask it to give me a TS interface for it. It definitely has saved me a lot of time when doing things that are time consuming but easy.
I use neovim daily, but I have GoLand and VSCode installed as well. For VSCode the neovim extension (which embeds your neovim directly into vscode) is pretty good.
I use neovim for script writing, vscode for general coding, Intellij Idea for Java coding, Emacs for note taking, Vim for default editor to edit command (the C-x C-e stuff). I love all these tools.
1:13 I remember people told not to call them "laptops", but to call them "portable computers" This was because people going to the hostile with burns. Takes about 10 mins for the keyboard of my old laptop to get so hot it burns calluses onto my fingertips :/ I'm so glad I no longer have to use it :D
Agree on Copilot. Boilerplate, repetitive data, SQL script generation with mock data to insert - yes. In most of other cases - it just annoys more than gives some real value. For ex. I wrote two small unit tests for my helper functions, basic tests with checking out of bounds or null values in parameters. Copilot generated some code. Partially, it was fine, some code was just nonsense. But the problem is that it actually repeats after you or your code, it didn't suggested me to write a data driven unit tests.
Although in my experience SQL boilerplating with Copilot, it really dislikes sanitizing inputs and is a massive hindrance. Kind of horrified to think about how some understandably lazy and overworked devs trying to ship out the features with very easy exploitation issues like SQL injections. But maybe that’s how Copilot handles Java JDBC libraries and other database connectors in other languages are fine and more secure.
I started to use Neovim this year and it has been an amazing experience. The only tools that I didn't like to use in Neovim are debug adapters and Jupyter Notebooks. I think that the debug adapters its on me to learn and set up in the way I prefer to use, but the Jupyter Notebooks I couldn't find a good alternative. I have a lot of fun setting my setup whenever I find something that I want or something that have broken, so I don't see time expended as a drawback 😂
Interesting, I was searching for Jupiter notebooks a while ago, but I stopped caring about it and just use vim slime. For data science task is enough for me.
Yes, i hated debug adaptor and coundn' get it work for 1 year , but my approch was wrong, i just should have used mason properly and everything would have configured automatically
I just restarted my config. Didn’t use Lazy until now, and the only reason I did now was because Packer got archived. Half an hour later I was reading the docs for native package support. I’m not using a package managing plugin again.
I don't think my Vim config changed significantly between 2012 and circa 2020. I setup the plugins for the frameworks I was using, it was working really well, and then I just got on with being fast with it. Tmux too; I invested the time in learning and configuring that once, never needed to revisit. Now I tend to take a look at the config every couple of years, or if I need to set it up for something totally new (e.g. picking up TypeScript) that depends on a good chunk of extra plugins or infrastructure like the LSP.
I'd like to share a bit of my personal dev experience. I first started learning coding in Swift, and as you can imagine the only available option (for a newbie) was Xcode. Then I tried out FE (JS+React) and switched to VS Code. Oh my, how fast and fluent it felt in comparison to Xcode. Even on a less prominent windows laptop that had an i5 that ran at 2.4 Ghz when turboing. However, when I landed my first FE job and loaded a real (rather massive project), that laptop started throttling all the way + it had all of its 16 Gb of Ram filled up. So, I was handed a more performant machine with an i7 (up to 5Ghz) and 32 Gb of Ram. When the project is 'on', my computer sits at 20Gb flat. There was an argument made in this video that dev software running better on newer hardware is only a temporary thing. And I tend to agree but in a way that you will always have to upgrade to more powerful hardware as the time gets by. P.S. It was my first big project and I got completely lost in its folder hierarchy. I can't imagine how one can navigate through 'thick woods' without visual prompts in IDE's like Vim or NVim.
I'm curious, how can you search files / directories with a fuzzy finder? Like you did at 8:10 . I think I just waste so much time using "cd" to move around and get to my project to start coding. Also great video!
For whatever reason, I spend almost no time on configuration in VSCode despite having 50 plugins installed. The experience is pretty seamless for me. I install plugins when I need a new language or want to do something vscode doesn’t support out of the box. I also auto-update immediately on every release and have never had an issue. For me, neovim will never be an option until they support multiple cursors out of the box. All other supposed efficiency and speed benefits are negated by the lack of that absolutely essential feature.
I too agree that one has to stop configuring when it is good enough. I use vanilla emacs and I spend too much time making its function and appearance perfect. Then one day when I was setting up a cloud environment I realised that my setup is reproducible with a small subset of my init file. That being said that is probably only possible in hindsight. As one do need a significant amount of time to experiment with different options to come up with a trimmed down setup that they need. So If I am to start from scratch again, I will probably start with some distribution then gradually disable the functionalities until I am left with the only stuff that I need.
The first thing I did when I tried out co-pilot was set up a keybinding to turn it off. It makes WILD predictions that end up being more distracting than helpful. I wanted to be able to turn it on and off quickly so that I only get help when I ask for it. I ended up leaving it off and forgetting that I was paying for it for over a month. It's a nice tool, but like you said it's only really GREAT at boiler plate. In my experience the time it saves by generating correct code is lost by the time you have to spend going through and fixing it when it's wrong. Side note... I'm a long time VS Code with Vim keybindings user. I'm tempted to make the change NeoVim, but I haven't made the plunge. What's a good way to try it out and see if it's for me without going through a lengthy setup process?
My 2 cents on why I'm not on neovim at the moment (though it's my favorite editor): * I've found Intellij's intellisense to be better than LSP for javascript (and maybe also typescript), I constantly use refactor shortcuts to extract things into variables, methods, etc, and I never felt like the refactor capabilities in neovim were on par (or maybe they are and I just never got the config right?). * The debugging/run configs experience is better in intellij. * I love configuring it, but many really useful plugins are not trivial to configure and you actually need to read, sometimes find the right github issue etc to understand what you're doing wrong or how the config could be better. I feel like it's not just configuring things but also figuring out how to actually configure each plugin (may not apply for trivial plugins but i did feel it applies for LSP). * I feel like in your video you say multiple times IF your lsp is setup correctly. And that's the thing, it's easy to set up incorrectly imho. Having said all this, haven't been on neovim for like a year so maybe it's time to go back and give it a shot.
I keep going back and forth between nvim, VS Code, and Helix. Every time I go back to VS Code I find something stupid with it. Last time there were rendering errors that drove me bonkers. Helix is great, except not for debugging, and the way multiple cursors is handled is just awkward for me. Nvim is in fact a pain to set up. It just is. But once it’s set up it’s awesome.
I went from Notepad++ at start of uni, to a regrettable weekend with Atom, to VS Code from mid-uni to 6 months into job, to Neovim for the past year. Now, I'm swapping to doom emacs (maybe a scratch config after). Doom emacs is shockingly close to my hand rolled 500-1k line neovim config...except with GUI and a more powerful config experience. WTF. Ive integrated other unix philosphy "very good at one thing" tools into the neovim workflow like `lazygit` for git and `lf` for filesystem management + bash scripts (AMAZING tool), but no tool integration is perfect when the tool is complex enough (beyond pipes and text streams basically). The elisp-all-the-things emacs walled garden is very attractive since i can hand config everything to mesh perfectly.
The "everyday editor tinkerers" smells a lot like some "Brook's Law" ... The Second System Effect ... lack of a clear concept (goal) and maintaining conceptual integrity. If you don't have a concrete goal then you should take a step back and understand what you're trying to accomplish ... perhaps break something down into smaller goals .. because the constant tinkering is you trying to reach some "unknown state" and it will never be satisfied ... the reason why C is the goto for systems programming and C++ can't add enough features ... it lost its purpose years ago
This is the exact video that might actually get me to drop VSCode and pick up vim. Once I figure out these plugins, I like how the telescope example works, but I have no idea how to get anywhere from the Tilde wall, but I just put neovim on my machine so I guess we will see.
You actually gave me a very good idea and a potential solution to my problem. Cause the thing I found tiring about Neovim is exactly that: tinkering everyday and spending hours trying to learn all its details and the perfect set of plugins and keybinds that I end up not doing any development, but instead just customising my editor endlessly.
The solution is as you mentioned: be satisfied with a "good enough" setup and THEN revisit it 6 months later to deal with its pain points and deficiencies. Do that every 6 months and dedicate a day for example to re-optimise the refactor my config. That's a great idea, with all honesty.
Or just use a preconfig
I had the exact same problem. Plus I never understood viml. My brain never parsed that language. Then I switched to emacs and it was even worse, but at least my braid could parse elisp. Then doom-emacs and it finally feels like I let somebody else care about the details. My config accumulated over the years of experience got replaced quickly.
@@pixelsam123 I thought about it but it just doesn't work for me for the same reasons in that article. For instance, I don't like the default keybinds set in most of those distros, I don't like the fact that there are things installed that I don't need nor want to use, I don't like the fact that someone made those choices for me where the whole idea of using Neovim is to be customisable and personal. For example, I like the interface of lazy more than packer so I don't like using a distro that is built on packer. Same goes for many little choices here and there.
It’s still a lot of work but well worth imo, start with a preconfig or build from scratch but spend some time with it. Decide what needs to change and batch it. As time goes on it can be less frequent but you may have to do this every other day, then weekly etc as you delve in. This is true for engaging with any system which has a dynamic nature, it can be very chaotic when it’s not imposing any rigid structure, you need order to develop trust and reliability.
Yeah, this is the answer. If I run into a problem with my config at work now, I note it down on a piece of paper and keep working. I revisit the paper every few weeks to clean up the pain points in my config
thanks for featuring my article!
Great article!
If I could provide a critique/comment on your experience, I would like to say that this is why you don't go down the customisation rabbit hole. I learned basic vim keybindings, and still use that. I have only two extensions (fzf + live server) and 4 configs (hlsearch, incsearch, number, relativenumber). Whenever I ssh anywhere, I know I can quickly get running, which I cannot do with code. If you want customisation, use an already configured keybinding and extension setup by any of the great people and setup dotfile config so it is automatically installed in whatever system you ssh to. In vscode, I was slow. In vim, I was slower. For 1 month. Now I'm atleast 2 times faster. No dragging the mouse to select something. No dragging the mouse to file tree to navigate and open a file. No opening folder, browsing through my files and selecting my project. Just open a new session on tmux and run vi, all good. Just pure code editing.
I am 100% a victim of trying to tinker things to perfection, the whole reason I went with Notion over Obsidian is because of how much more room I had to configure pages/etc
I don't use notion because of the stupid shitty always cloud connectivity.
VimWiki > Notion > Obsidian
I moved to Logseq purely because the defaults are good enough that I don't find myself tinkering obsessively
@@QmVuamFtaW4 org-mode with org-roam
@@kublaikhan437 me too other than that I love there is git plugin support, so I could push the notes into private repo and then sync it with other device
I made the switch to Neovim earlier this year, all thanks to Primeagen. On my first night, I ended up playing around with configurations until 4am. I thought I had everything figured out, but little did I know that it was just the beginning of a never-ending journey of configuring Neovim.
I spent weeks experimenting with different things, but eventually found my sweet spot with LazyVim. Once I got used to working within this configuration, things started falling into place.
I totally get what TJ and Prime mean about personalizing your experience. With Neovim, it's all about constantly iterating and fine-tuning your configuration. It took me around 3-4 months to really nail down my setup using LazyVim. But now, I feel like a pro with Neovim, and it's customized perfectly for my needs.
I even went the extra mile and created my own custom SolarizedDark theme, along with a few others that I couldn't find in VSCode.
To sum it up, Neovim does require some time and effort to get it up and running smoothly. But once you do, the satisfaction is worth it. You become intimately familiar with your PDE and can troubleshoot any issue at a moment's notice. At this moment I rarely play my configuration and only focus on code.
Since we both use the same nvim distribution and you have experience working with themes, I was wondering if you could help me with a configuration issue. Specifically, I've been struggling to permanently set the guibg (background color) of my relative column line. Despite trying to create an autocmd for it, it keeps getting overridden by lazyvim. Currently, I have to manually type the command each time I launch nvim. Do you have any suggestions or solutions to ensure the guibg setting persists upon launching nvim?
Imagine if you had just spent your time learning how to make some proper code...
@@FainTMakodefine ‘proper code’. Setting up nvim also requires writing code.
@@WouterStudioHD look at what you just said, you had to write code before you could start writing code??
@@WouterStudioHD proper code as in something that solves a problem for a business. It should bring value to people. Making ur ide feel good is not coding lol
I finally left NVim as well... by figuring out how to use Shift + ZZ. Bwazingwy fwast ❤
bro just gave a cheatsheet for beginners
I always forget ZZ lol, my muscle always type :x
How about remapping it and replacing shift with (space) leader :)
Also, why wouldn’t we open a split terminal view for each of these executions instead? It might eliminate sleeping and being blocked from dev while executing without having a separate session
ZQ if you don’t care to save the buffer
@@liggodoggo998bro i’m still muscled to :wq
I've been trying to switch to Neovim for years. And I really tried, many times. But I always switched back to VSCode, because I just don't have time to learn. It always got in the way of me actually coding.
You talk about the value of "Good Enough", for me VSCode is "Good Enough".
If VSCode works for you, don't let anyone tell you that it's not good enough. Whatever works, works.
as long you enjoy it and it make you more productive, then VSCode is the best for you, dont look for another
And there's also one other really annoying thing: I am an azerty user. And you can really feel that vim/tmux were made by qwerty users...
I know you can remap everything, but I don't have time for that either.
@@chtcoder6439 If you like your current workflow, there's 0 reason to change it. However, I do remember my first neovim experiences being the exact as yours. It took me like 2 years and atleast 4 attempts to switch to neovim before I finally took a few days to actually properly learn some of the basic keybinds etc. For me, it was definitely worth it since it saves me so much time every day now, but yeah it was definitely not something you learn in a couple of minutes haha.
I switch to ubuntu like 10 times before i can not go back to winfows
Baseline Neovim = fantastic example of minimalism
As soon as Lazy was installed, every little action felt a bit off. Still pretty fast, but not AS fast. After much investigation, it turns out that there are many plugins installed and turned on by default with that feeling you described at 13:28.
Went back to packer and dein without all the fancy plugins and I felt unchained like I got out of the gravity chamber after a 10 year stay. 🚄
I don't do lazy.nvim because I want it to be a little bit painful to install a new plugin. Then I have to ask if it's worth it
I use AstroNvim, because I to lazy to configure Lazy ...
I just found out packer and lazy exist. What's wrong with vim-plug?
@@coconutflour9868I would say nothing if it works for you.
Lazy is weird with all its lazy loading. Every feature on every startup takes WAY to long to load. I'm a slug and use a preconfigured nvim because I wanted to try it out and got stuck. But Packer really seems like it has the advantage in speed.
@@coconutflour9868 I liked vim-plug. I switched to packer because it seemed easier when I went to a full Lua config
If you are a coder you should not rice your dev host. Completely agree with that. I used to build my own desktop environment from scratch and learned really quickly that's not fun when you're trying to do get work done. Stay as close to default as possible to make updates smooth as possible.
agreed
@@ThePrimeTimeagen yeah agree, but still you are vimfluance people and laugh at one that use vscode. You just changed your mind when Theo did video about being default as possible...
@@js-ny2ru vscode isn't the default though. It's just a software you can install.
I “rice” it in the more inobstrusive ways. I swapped out Gnome for KDE, I installed some new global theme, I swapped out window manager level shortcuts for caps lock as escape. Other than that, the customisation stays in my shell scripts I write and my window manager specific workflow (I like Yakuake w/ tmux)
Depends what you mean by rice, if ricing includes making your environment more productive then no you should, otherwise get stuck with using your mouse on a subpar OS and subpar floating wms
I needed so much to listen to this. This last weekend I spent all the time trying to improve my nvim config. And couldn't solve almost anything. Felt so frustrating, but it exactly it. Let's keep with the good enough. Thanks man!
11:14 the overview on the right is useful when dealing with existing legacy projects and some files are thousands of lines. It supports highlighting lines for a few different things (search, diff, errors, breakpoints) to get a quick way to jump to those lines visually. Yes, you can do the same sort of jump using keybinds or other keyboard-only interactions, but I've still found it convenient when editing monolithic typedef files on someone else's typescript project (or massive generated files when using a generator to quickly get up and going with graphql in a typescript project) or massive c files I need to update from an abandoned project I still rely on tools from.
As an indecisive beginner who's still all over the place and trying to find a path, this channel speaks to me a lot. I see it pop in the suggestions almost everytime I search a question and it's mostly here I find the answers I need.
Thanks a lot!
I was a VIM (and earlier VI) user for decades, coming out of college having learned it on HP/UX systems. And for a long time I used it even when I went to Microsoft where I'd get weird looks from the GUI users. But eventually I capitulated, because all of the development effort was going towards those other systems, and they got to the "good enough" state where I no longer perceived a real benefit from my old experience. In the end, the amount of time I spend physically writing code is dwarfed by the amount of time I spend reasoning about the problem I am trying to solve, so tools that help me reason better or communicate better are so much more worth my time to learn to use effectively (and we only have so much time in the day). Others who get to spend more time "in the trenches" may not make this tradeoff, but that's what led be to VSCode and away from the VIM variants.
This comment needs to be pinned! Thank you for sharing your experience
Yeah. I agree. In the end what matters that you get work done. VSCode is just that. That’s why vi or nano is amazing because it just does the job without needing to configure it. And it s available everywhere.
What do you mean about the communication?
Or some people might not have to do this tradeoff and are using the best stool for the best job for every task, it has nothing to do with the "trenches", if your execution is slow and doesn't follow your mind's speed then you're just limiting yourself no matter what and are getting distracted by a subpar tool.
I'd also add that your example is pure nonsense neo(vim) isn't just for when you "physically write code", this part is solved by every decent vim emulation in other editors, "thinking about a problem" requires switching between different files in different projects, grepping, finding, fuzzy finding, putting things to the quick fix list and so on, all that is done way faster in neovim, editors like vscode don't even have decent fuzzy finders for that matter.
Unless what you mean by "thinking" is going to the woods and think about your project but at that point you don't even need a computer.
I switched from neovim to IntelliJ IDEA with ideavim plugin which gives 90% of the vim shortcuts on it.
A modern IDE combined with vim keybindings is the way to go.
vscode also has vscodevim which is pretty nice too.
vim isn't just the editor, it's a way of life.. you can utilize it anywhere.
that's what I do too, intelliJ + ideavim, so I don't have to configure vim nor intellij, it's the best of both world with the minimal amount of work
Yeah, can't imagine browsing without vimium and bunch of shortcuts
meanwhile I use Emacs with evil mode lmao
I suggest using the Neovim plugin for VSCode instead of the more popular and well known vim one. It's faster and has fewer issues and bugs, and it uses Neovim as the backend instead of trying to "re-implement" it in JS.
I started with JetBrains IDEs then installed ideavim and now use exclusively neovim.
It's really satisfying to go minimal with the right tools.
Thank you for the video. I actually liked it much more than the twitch style since you were more focused on the article and your point of view instead of interacting with a live chat. Very nice take, keep it up!
Feel that. I wanted to become a Arch-Vim Person and ended up as Fedora-VS-Code+NvimBindings Person
Bro, that's LITERALLY me, wtf 💀
😭 ho my goooood, you explained me
debian based ->arch based -> arch -> fedora and never moved away
The FOMO on fancy new plugins is soo real! To be fair to Neovim, I have the same issue with every pluggable editor I've used. Don't know a great solution there except developing discipline (not gonna happen).
Vim keybindings are DEFINITELY a godsend. It's like if you had copy and pasted by writing things BY HAND and someone suddenly told you about CTRL-C/V. It's a higher level of abstraction and composable, so you spend less time telling the computer HOW to do the thing, and more what to do.
If you need more than 10 plugins for your editor it is the wrong tool for you. Keep the number of plugins under 10.
@@banatibor83 That's an arbitrary number, ain't it? I get your point, it's that it's funny when people set a number, threshold that isn't really based on reality.
For someone else having more than 3 plugins is stupid. For others, plugins are their way to tailoring their Neovim setup. I think the right criteria would be how much it affects the performance of the editor, and more importantly your performance. The latter is harder to quantify though. It's almost always better to just focus on mastering the tools you currently have, and stop worrying the better ways your can write code, and just write the damn code. But this problem is present there as well. When should you be satisfied with the code you write?
Ugh, this is hard. Who thought that defining what is "enough" would be this deep of a problem.
The installation and management of plugins was the main reason I was thinking of moving over to emacs and later VCS. I never really managed because the bindings never really work and because if you nave to jump through multiple languages, NVim/Vim have always felt easier.
I was thinking about giving neovim a try, this has me questioning that decision again.
For context, I only program maybe 30-50% of my time. Most of it is in completely different applications like Altium, yED or Innovus. So any benefits from being faster in an editor are rather small. Plus I kinda don‘t want to learn yet another set of shortcuts, I already confuse them quite often.
The Vim bindings are worth learning for basic text editing. That's why it's a popular editor in the first place -- and for some people, their only editor.
I've used vim for web server config in linux. Now I'm using Vim extension in Visual Studio for C# and intend to add it to my VSCode setup on Linux. This way you get used to the navigation and the main thing is to be able to move through a file by words.
Sure getting faster at something you do 50% of your time isn't worth, bro seriously
hi! you dont have to use neovim for the configs. most ides support vim motions, so youll be fine. you should try it though, i cant go back to anything ive tried before. it does take some time to configure/get used to, but typecraft, tj and prime have good resources regarding that part
I would say that learning other people's setups is actually great as long as you learn *lots* of them. It allows you to take parts you like from all of them and synthesise them to get something perfect for you
Nvim has been super fun and fast to use so far. I have configured it to fit me and its golden. I came from a really nice setup and fit with VSCode and i have been able to get most of the functionality i am used to with Tmux, lspzero, Treesitter, and a few other little things like comments, snippets, etc. It feels great not having to leave the terminal at all too. Teaches a few things while setting up and once i got that I'm content. I love it because it made me realize i would be able to pull my config easily on whatever setup i create in the future. Not against VSCode at all but using Nvim in the terminal is just faster for me to STARTUP and get going these days.
Regarding the distro argument, I was getting tired of constantly finding things were missing or broken with my own config, and it is really annoying. I eventually tried out LunarVim and it's pretty intuitive out the box. Sure, I could fine tune a few things but to be honest, once you get to a point where you have the muscle memory for all the tools you need to be productive, that "becomes" my preference. Plus the way the config files are written make it really easy to include something like Harpoon into the mix and even give it all the first class treatment, like showing up in the quick menu etc..
I love using vim but for bigger projects I really like having my files in tabs on the top and having easy access to the file explorer. These visuals really help me as I don't have to keep this information in my memory.
You can have that in neovim? 🤔
@@AlfWyeah but you also probably have to find the right plugins etc as well, ie more things to learn and know
Use bufferlines for tabs and nvim tree for file explorer. I personally use the oil plugin.
@@chrisdistant9040It literally takes less time to google and install bufferline and nerdtree/neotree or whatever than watching this video
So I do understand Prime's "function only" mentality. It certainly makes good logical sense and I think sometimes I wish that were me. But I don't rice my system just to rice it. I am extremely influenced by environment, aesthetics, cleanliness, and quality. Even my physical environment like my office, desk, shelves, lighting, monitors, etc. is important to me. I have to create an environment that I WANT to work in. And for me, bare walls, white lights, plain desk, stock keyboard, yada yada don't make me want to work in that environment. Now it's not like I CAN'T, but I work so much faster and with more enthusiasm when I'm in an aesthetically pleasing office space. Maybe it's feng shui, maybe it's OCD, maybe it's a disorder for all I know lol. But my computer is no different. I had been on Ubuntu since high school which was almost 15 years ago now. I ended up making the switch to Arch somewhere around 2017, and let me tell you, I don't think I left my room for 6 months.
From the very start, and following the wiki (which is hands down the greatest OS wiki on Earth), I began installing everything from the command line. I learned so much about how my system even works, what components actually make up an OS, and how to basically build my own environment from the ground up. Nothing that went on my system wasn't directly put there by me. All of this made me want to customize every last detail and end up building a system that was uniquely mine, highly functional, and beautiful to look at. I hate bloat as much as the next guy, but that doesn't mean at all that you can't have a sleek experience. The beauty of software like Neovim and Linux is that you can create a beautiful looking experience and still avoid a lot of the bloat and fat that comes with Windows, Mac, VS Code, and prefab packages, and that's because YOU put it there. You can use your system with only the components you want, and avoid others. And my system is super fast. There is really nothing I use that I'm like "I wish this were faster."
It's all about preference, and I completely understand the desire for minimalist functional environments with ZERO fat, but it's certainly not necessary to be a fast, efficient, and effective coder that knows your system inside and out and maintains a workflow that makes you excited to use and yes, even look at, to make the best out of your job. When you're losing performance to the point where it's slowing you down, or you perform repetitive tasks inefficiently because you can't do it any other way, then yes, fry off some of that rice and go get your life right with Christ.
I'm glad you went over this since the stream recording didn't work, very good conversation
This is kinda the reason why I switched from vscode and neovim to Emacs, not any variant, just vanilla Emacs with a book guide to help me with the most important keybindings. I don't even have plugins installed yet except for a few must-have, most functionality is in a responsive GUI, which already makes it less buggy and easier than neovim, but it's super fast compared to VSCode especially if you run it as a daemon. It's all about use cases and how much time you spend tinkering stuff compared to how much time you're actually productive
I went through the same process but decided to switch to Helix, it's written in rust, it's blazingly fast, super responsive, it's very minimalistic, lean, and effective you get the bare minimum of usefulness and no bloat. Out of the box you get full modal support like vim / nvim ( but based on kakoune motion ( which I personally prefer tho if you are switching from vim and want only vim bindings there's already a repo with pre-made config for that ) The configuration of the editor is so much better than neovim, there's no Lua file just a config.toml file which is very well documented and easy to use. You get the ability to split windows, a file gutter, fuzzy finder, lsp, themes ( you can add your own too it's very simple compare to vim, just create a theme directory in your .config/helix/themes and put the file ) it support transparency, debugging, through DAP, buffer, clipboard support, different registers for copy pasting, It's imo a superior neovim, I really liked neovim, but it's so unintuitive to configure, the documentation is inconsistent at best, and I'm probably not that good at lua. I get that you can configure it the way you want, but helix just work, it has everything I want, and it consistently work, with just a brew install helix, I get my nice editor, I symlink my config and hop I'm ready to work in no time.
Hmmm watched the video on their site, and it just looks like my NVim setup with Telescope. Not sure the point of making an editor from scratch when an NVim distro would essentially provide the same thing, but far more extendable.
@@brandongregori995 Yes, and no I've tried, many distros, like NvChad, LunarVim, AstroVim, SpaceVim. They are all very good implementation, and yes you are right, with them you get a lot out of the box, and you get the opportunity to customise it further. The thing is, they all require a bunch of dependencies, that may break in the future, with an update, it happened a few times and it's quite frustrating. I don't expect it to be perfect, because at the end of the day I know the maintainers are doing it for free, but Helix so fas has always been simple and reliable, and to me it's what I'm looking for, I don't need much for what I code, so I don't mind having less features, as long as the one integrated are well made, and coherent. Because with nvim, plugins, a lot of the times you get some conflict, and things that stop working, and it's quite annoying to go dig in to fix, at least it's my experience, some people might have another experience and it's totally fine.
MaDe WiTh RuSt… BlAzInGlY fAsT
@@internetsfinest8839 I had to for the meme, but it is fast.
The problem with packanges and config changes Helix is solving very well. Build in Treesitter and LSP
I like what helix is doing, but I really wish it would have vim bindings, becasue everything uses vim bindings
@@gorudonuF that. I like Object-Verb wayyy better. Helix and Kakoune got bindings right.
@@gorudonuif you were designing bindings from scratch, would you reproduce vim? I certainly wouldn’t.
If you like vim bindings because they’re so *common* that’s a different matter. Same logic as saying qwerty is the best keyboard layout
Great video, definitely prefer this style over a twitch live version.
As someone who has never used copilot I actually never really feel the need for it. Sure, I may have encountered some difficulties trying to solve some shit out myself but I just treat is part of the learning process and I almost always manage to figure it out by looking it up.
Also, I get the part where the neverending push to rice burns you out lol. Been there done that specially when I got really into ricing my window manager a while back, it's like an addiction. Whenever you see someone have that oh so good looking setup, you just feel the need to go back and improve on yours even though it already was working fine. I always ended up asking myself, man, are these sweet ass colors really making any difference on the way I write code or am I just wasting my time doing this in order to get a few thumbs up on reddit back then.
I think copilot is a hindrance if you're learning how to code, but it's a godsend when you need to write semi repetitive things, or you're working with an unfamiliar library trying to do *one* thing and don't feel like scouring the docs for how to get some type so you can do the thing
Another part of it is being able to share ide tooling across a team. You can create shared vscode files that have debugging, settings, snippets, and recommended plugins that just work out of the box.
My rule is that I don't change things unless they're actually a problem, and I solve problems, not inconveniences.
It's not uncommon for me not to significantly touch configs for up to years on end unless I'm doing something outside of my past considerations, and that's just as it ought to be. It can be fun to tweak and to spend a lot of time creating a strong initial setup, but it gets really tiring sometimes making sure every program has non-horrible ff and fi ligatures and such.
If I ever have extremely substantial reason to nuke my system or existing configs that's when I pull out my notes on inconveniences and important things and only then do I get blasting on config shenaniganary.
yeah, also it is easy to make small changes here and there and get used to them over time and not even being aware of the level of customization you are engaging with every day until for whatever reason you find yourself out of your setup struggling to make anything because everything you do out of your muscular memory doesn't work anymore.-
So what you are suggesting here is that NeoVIM is a great tool for those that can 80/20, but a very real trap for perfectionists.
One thing I feel like this article touched on but didn’t really address directly is that numerous neovim plugins do not have nice defaults like VSCode plugins do. They’re way more configurable, but you have to spend a ton of time screwing around with things to get it right. Every VSCode plug-in I’ve ever used basically worked out of the box and if you wanted to then configure it further you could do that.
VSCode is also way more portable. Understandably so since neovim plugins have a focus on speed, and portable languages like typescript are not known for being “blazingly fast”. But for somebody like me who has to work on both windows and Linux, the process of keeping parity between my systems was too much of a pain to be worth it. Especially when many plugins and even NVim itself essentially have a “Windows 2nd” (if at all) mentality
Vim out of the box has a horrible user experience. I wrote a *Vim Cheat Sheet for Programmers* which mentions how to make Vim not suck out-of-the-box:
:set nocompatible ruler laststatus=2 showcmd showmode number
:set incsearch ignorecase smartcase hisearch
:set shortmess+=I
been learning svelte and i was having so many issues with the svelte lsp in neovim that i had to switch to vscode. additionally, the svelte extension for vscode just improves the dev experience so much. still using neovim for everything else though.
Yeah it's very weird how svelte + nvim is worse than the vsc extension despite both being based on the lsp. It's weird. I still prefer neovim for svelte just because of how fast neovim can be compared to vscode for me.
I'm developing a svelte project with neovim, till know, didnt have any problems
Interesting, I've never had a problem with Svelte in neovim. VSCode was much easier to set up with ESLint and Prettier though
I had some issues, like treesitter is not injected in css parts
i just ignore it, for me good enough is fine
I started programming in Java and C# so I've used Visual Studio (later Visual Studio + Resharper) and IntelliJ before going for Rider and IntelliJ. These big IDEs get extremely resource hungry for large projects where just indexing files upon startup can take 10+ minutes. One thing I learnt though is that they're not just spinning in idle while doing this. Jetbrains editors are extremely powerful. They'll have refactoring features and project wide symbol searching that'll blow anything else out of the water. When I tried to setup neovim there was just no getting around the fact that I would have to sacrifice a lot of editor features if I wanted faster load performance (and as it turns out not even that much faster because scanning large projects will take a long time no matter what editor you use). Neovim as a replacement for VS Code? Probably a no-brainer, it's almost exactly the same features with less bloat anyways, but as a replacement for Jetbrains editors? I don't think the answer is that obvious.
Exactly, nail on the head. The JetBrains IDEs are crazy powerful as orchestration tools, and once you get used to the refactor functionality, or their built in Git functionality tools (which I still haven't seen anywhere else), trying to use another editor feels like I'm trying to work without arms.
@@thebluriam JetBrains' git integration is terrific. That's what kept me in their camp. Refactoring is also really good though varies depending on language ( C++ > Python > Rust )
The best thing for me was switching from neovim to helix and learning that kakoune bindings exist, they are so much better than vims
I also switched to helix but I did not know about kakoune before. I think the bindings are mostly like vim, you just select before you execute something. I love that helix has all I need built into it and is so easy to configure and even to write own functionality, though some rough edges still exist (basically some inconsistencies).
Helix is underrated and solves all the issues mentioned here which are much the same as my complaints I have loved it so far
I am glad to find fellow Helix users here 😁
I really liked Helix after trying the tutor but my vim muscle memory is too transferable to switch to something else :(
@raenastra yeah dd was a pain
But now whenever I'm on a system without helix, xd is a pain))
I never got the copilot thing, if i want boilerplate i can either get snippets for that or i can just ask chat gpt, i don't need it bothering me when i didn't ask it to do anything
I really love this video and very much needed someone to tell me this, thank you soo much!!!
Using Copilot for a few months now, and I completely agree with you, I find myself turning off copilot a lot because it gets in they way of my logical thinking, sometimes I know what I want to write and Copilot just tries to generate something random that sometimes takes me out of my logical thinking line.
Every 6-8 months? A new job or a project on a new stack are main reasons to look at emacs config for me 😊
I used to be a big config tuner. Could sink a lot of time trying to get some stupid 'convinience' feature to work. You're spot on about good enough and self control. I don't tinker with the config much except to occasionally add a new key binding, and then every once in a while maybe something larger. If things are working, I don't feel like i need to make it better anymore.
Sometimes its just nice to have a text editor that doesn't segmentation fault on a regular basis.
Which editor are you referring to? Could you be more specific, please?
well its definitely not neovim @@ncpeaksean4278
I left Neovim because of plugin exhaustion; I’ve been using Helix. I like the default motions better, though I miss some features a lot.
I'm a Linux user for over 15 years now, and for the last 5ish years I've been building my own DE of sorts on top of the Openbox wm, meaning I'm super into configuring, customizing and tinkering.. The main difference is, I have a clear goal of what I'm trying to achieve, and once I manage to reach that, I forget about the config file (unless the update breaks something, since I use Arch, btw). My point is, I think it's just a matter of personality.. I'm a minimalist, and I know exactly what feature I need/want in order to get more productive, and once I get that, there's no need for me to search for the next thing.. No, what I need is what I get..
I'm using neovim with a couple plugins installed, but the ones I'm actually using are just fzf as a file searcher and floating terminal to give me quick access to bash.. Lsp is great, but it's too heavy on my old 4gb ram pc :)
That being said, when I set those two to work exactly the way I like it, I didn't touch it since (which is over a year now) and everything works amazing..
Now, I totally see how most of the people would need more plugins than that, but still, when you reach the point of satisfaction you can simply stop and enjoy :)
I don't think there's anything wrong with trying to always add something new, I just personally don't see the point :)
The last thing I updated on my neovim config was removing a plugin I didn't use that I forgot I had installed, that was last month, before then it was probably 8 months since I migrated from standard vim to neovim for better LSP support and ez autoconfiguration of LSP. That, treesitter and the better performance from lua made me switch. The core vim/nvim config remains mostly the same as before, near default.
primeagen, disculpa que lo redacte en español. Me gusto mucho lo que mencionaste de buscar la eficiencia y segui, usando lo que mas comodo te parezca, personalmente me paso lo mismo de nexxeln y es que cuando neovim salto a lua no fui capaz de adaptarme pues ya tenia todo mi entorno en vimscript, ya me habia acostumbrado y no tenia tiempo para aprender lua y empezar a configurar todo otra vez. tambien se me hizo mas complejo algunas configuraciones, algo tan simple como hacer un remap y tenia aun mas pasos y me desmotivo bastante. Voy a volver a darla la oportunidad mas adelante.
11:48 - What? I've been using my Macbook air m1 for web development since it was released and its still a beast. What do you mean 'eventually'
Regarding copilot, it's not just fancy code completion. The ability to generate large blocks of (mostly) functional code quickly is a game changer.
I was skeptical at first, but once I got copilot working well in neovim, my productivity has increased significantly.
Couple of questions if I may:
1) what languages do you use? Phyton? TS/JS? I haven't used copilot yet, so I don't know if there's a difference in capabilities there.
2) any tutorial or resource you would recommend to set it up on neovim?
Thanks!
I mean snippets existed before, for generating larger blocks of code. vim had the plugin ultisnips plugin
actually i am very happy to use neovim now.
i tried notepad++ / netbeans / vscode / atom / dreamweaver many years ago and their speed made me frustrated.
even i don't have time to learn lua, still i can download some professional works to make my neovim beautiful and efficient.
i have used neovim for about nine months, and i can do coding, markdown note-taking, doing latex exercises, all in neovim.
yes, i am doing note-taking also since notion is too slow for long notes.
the most important thing is , i do not need to move my hand to and fro keyboard and mouse anymore.
I have a similar state with Emacs.
I got into a rice loop, although I had no actual project. The moment I had to start doing some coding, Emacs gave me just that bit more friction that I returned to VS Code LSP works flawlessly, and I can edit just as fast if not faster. And since then I've also been deepening my shortcut knowledge.
However, I do not regret customizing my Emacs, It's not perfect the LSP and autocomplete may need some work but since I don't use it for big stuff I don't care, like OP I still use Emacs to take notes and stuff like that it's just fun to spam commands, although I'm not actually doing nothing, cuz happy keyboard noises.
And I agree that it is an experience that everyone should do.
Heck I would argue a similar thing with using a bare git repo for dotfiles. I can replicate my setup with relative speed, sure that have been some complications mainly due to the fact that one of my environments is Arch Linux and the other is WSL (ArchWSL, so kinda arch still, I actually like arch it's not the BTW meme here, the recency of the packets I like, and I've only had it break on the grub issue which was now replaced by systemd-boot and when I was too sleepy to wait for the update to finish and the poor machine hanged and so I had to chroot into it after mounting the btrfs subvols, so I could mkinipcio -P since that's what I broke, I actually wrote a script to build that environment from scratch although I still had no reason to test it, ok I did the BTW didn't I...) so as I'm doing a native Linux and WSL some configurations differ and to add to the complication the bare metal is Wayland and WSL has GWSL which is X11 based so I already had issues with pulse audio variables (metal uses pipewire) and $DISPLAY, so yea it has been a ride, but even so I like it since I can configure something on one side and just dot commit; dot push and on the other machine dot pull and done.
TL;DR Tinkering is good and I think necessary, but when you need to do a job just use tools that work.
i've tried using primes i3 and nvim setup. it's defo fun but i just wasn't up for re-fixing it every few months, reinstalling on new laptops and actually building the muscle memory
however i'm happy i'm knowing it all exists if it ever tempts me again.
It defo handy knowing vim. Using it as my daily driver, just has a lot of overheads as a frontend guy IMO.
just can't really beat installing in one place, click a few UI buttons for vscode extensions, and you're done.
In addition to helping junior or other devs do the same on my team. It's easier for me to lead by example. The idea of flexing some NVIM on them is appealing but i'd rather just be better at helping them out.
It makes me feel so old that someone's first text editor was vscode... I was coding long before vscode or even electron was out and I'm only 20...
I agree with many points of ThePrimagean. Although, I don't tend to use the default but seek out people who have configured programs in a nice way (such as his neovim config) an either take their whole config or steal bits and pieces. Keeping up with all updates and trying to configure everything all the time just is very boring to me. Having a phase like that is useful for learning how things work, but don't get stuck in it. My method of course has downsides as well but it feels like an overall productive and frictionless approach to me.
The description you have for how you handle your NeoVim config is pretty analogous to taking a look at how you organize an office or physical workshop. Set it up right and once or twice a year double check it is working for you the way you want
I was a hardcore vim user and later neovim when it started, during more than 5 years, when VScode came out I switched for similar reasons. Happy with that decision.
Are you doing any live events in the mear future? I’m visiting SF for a few weeks and would love any tips for tech events to attend.
Nothing right now, but I am looking
Nvim's customisability attracts programmers like the Hot Wheel's section at the store. Tinkering with it is fun. Making your IDE your own is fun. Customising every little detail is fun. But if you're really asking if it's good enough, then I find myself answering that VSC is good enough. It's light, fast, no BS, easy configuration. Plus the keybindings that you use in VSC/IntelliJ/WS are the same ones that you normally use in your machine (MacOS/Windows). For vim, you have to learn a whole bunch of keybindings just to do the same things that just work in your one text editor. It's fun, but if I am looking for good enough, then VSC is good enough. Nvim It's borderline gimicky.
I have questions, how you guys get to know about the vim and learn about how to use them? How much time you devote to configuring and practicing using this kind of editors? Even though this will speed up coding, sometime I just feel confused about these complex configs.
I guess this thing sums up a bit my experience as well: nvim has nice set of plugins, has couple fine precollected setups (astro/lazy/kcikstart) but...
If you have freebsd you want to talk with - nothing will save you. vscode fails to work with csh, neovim fails with installing majority of the LSP plugins, even lua_lsp doesn't work. So it requires bolts and screws to make it work, and i never got to the end where everything works flawlessly, since it'll consume so much more time. Half of it true for windows as well.
Astrovim/Lazyvim/other basically try to mimic vscode behavior in terminal, but in vim way. Okay for starters, pain for advanced users. Hell on the inside part.
Another issue - terminal multiplexers. tmux, screen, zellij - if you run nvim there you'll have tons more tiny issues you need to fix to be productive enough - colors, keybindings, clipboard. And no, nvim is not good as multiplexer by itself, especially if some connection hangs - you can't just kill certain buffer, because it doesn't made that way. Working with :terminal kinda painful and doesn't respect many things you have in regular terminal.
I use windows at home. And windows support in neovim is kinda meh. Basically it's terminals make things more complicated like multiplexers, so you need to fiddle configs one more time to make you flow productive. And config becomes slightly unportable for those reasons. So not nvim config to rule them all.
Vscode/Sublime has some pretty unique behaviors unreproducable in nvim, at least for now - there's no such plugin to select things like does in sublime/vscode. Multiline editing in nvim sucks. There's no good substitutes in neovim for these. Many such little things also non existent by default and require more hours to configure.
For some reason LSPs works only half of the time and I have no idea how to check whats wrong with them. Also it will consume a lot of time like porting things i mentioned above.
And generally C/C++ LSP sucks and if you has to cross compile or build system has weird quirks combined of shell, python and makefiles you basically have no chance to receive LSP assistance. Or you do, but I guess no one can guess when and why. It's a deep deep dive in the compiler's world. Took me hours of attempts to make it somewhat behave consistently but I failed it in the end.
The minor issue is the way of installing neovim. On non-RR distrubutions it requires some workarounds because default repos will have outdated versions. So it basically cries "make install me". Just aint good.
And finally - if your alphabet is not just ascii you also will have some fun time.
So my setup generally is a weird combination of nvim, vscode and some other editors, working side by side inside this zoo environment.
I believe I heard you say (in one of your videos) that you use Linux as your OS for development work. Which laptop do you use?
When I started on VSCode and modified it as much as I could. I was a heavy VSCode user, I knew all the shortcuts and I was really fast with it. When I had an old Mac that couldn't run VSCode I tried NeoVim, since I was already using the Vim VSCode plugin. I loved it. I was so glad I could modify it specifically to my personal needs, I still like the file explorer btw. In the beginning I was modifying my config like every other day. The thing I have observed is as time goes on I need to modify it less and less often. Right now I might touch my config once a month if I want to try a new plugin. My config still has some minor bugs but again the are not that problematic and I'll try to solve them once a month. I am using AstroNvim because I wanted an quick start but I have been modifying its plugins anyways. Apart from some tsserver stuff, that I probably haven't setup yet, I haven't seen any difference in my coding to VSCode, Copilot runs smoothly as well. I love to try new plugins but I am quick to dispose of them if I don't like them or I don't need them. Also, Updating my packages is fine. I update them regularly and the interesting thing about lazy.nvim is it will tell me if there are some breaking changes and I can take a look at them, so no problem there.
Really liked the article as well! Some valid points where made and I do thing you should use what ever editor you feel comfortable with, just learn the damm editor really well!
Speed is the most inconsequential thing when it comes to programming, most professional programmers will spend most of their time reading other peoples code then writing any new code anyways, so I don't understand wasting time memorizing shortcuts and setting up config files etc. for some command line editor when you can just install Sublime, VSCode, or any other modern IDE and get to work instantly right out of the box, almost all of these programs come with some form of command pallet with fuzzy search, so you don't even have to learn any of the menus or keyboard shortcuts, just type the initial of whatever command you want to run, it will be the first result in the command palette window and you just have to press enter, if you run a command frequently enough, then you can setup / learn it's keyboard shortcut, for everything else just use the palette
Balance above all in everything 🙏
Finally!
Oh.. It's a reaction
The 6-8 months turnaround seems about right to me. Personally, I have been using neovim distros for a few years but will be going back to a purely personal config at some point here.
The writer is dead-on about the issues that they cause. I used to use SpaceVim but, stopped because getting more up-to-date plugins to replace EOLed ones was a nightmare. I'm currently using LunarVim but already see some issues as I don't particularly care for LazyGit and a few of the other plugins are not useful in my workflows or just get in the way.
My opinion, as someone who wasn't lua-y before, is that they are a great starting point and way to keep you from sinking daily time tinkering as they can be nearly "Good Enough™" out of the box. Figuring them out can be very useful in picking up the lua needed to effectively customize your config. Ultimately though, it will always be a better fit if done from scratch.
I haven't touched neovim yet. For years my primary editor was GNU nano. Seriously. I wrote thousands of lines of javascript with GNU nano at work. Once I started learning TypeScript is when I finally decided that GNU nano wasn't enough. I went with VSCode. It was ok. Then, I started diving into devcontainers.
That's where I live now: Creating PDE's for the projects I actually want to contribute to. I love that. Configuration, extensions, cli tools, os tools, and even sidecar services all wrapped into just a few files. YES!
I use both (VS and Neo) but I find Neo Vim a better fit for a Linux System.
Nice summary. Reflects my experience so far.
I started with vscode, and then I discovered this ultra fast vim thing, spent some time figuring some stuff up in vim script most of which I did not understand at that time. Kinda turned me off for wome time
Then I tried a neovim and I finally loved it: telescope, treesitter, lualine, LSPs and everything else everything works nice. I can now even change my theme vased on what hour is it for day/night more comfortable coding.
But can't say I'm comfortable with it enough to be as productive as I am in vscode. Especially in large codebases vs starting new projects. I am yet to figure out actually useful go-to definition, like in vscode its just ctrl+click on function. I know I'll learn to set it up someday, but it just takes time
I have had VSCode exts break before, FYI... it can happen...
My problem with neovim is 2 fold. 1. I don't want node.js on my system. The other LSPs don't seem to work.
2. I started working with unity. And neovim is a nightmare to work with in unity.
I spent 20 hours configuring my Neovim setup. I spent 15 mins setting up my VS Code setup.
Using Neovim taught me how to setup VS Code in a more efficient way.
For a second i thought prime had left nvim
when I'm new to a project, I need the file tree, even if it follows a "standard" directory structure because In every project I have been, they have standard file structure and a lot more than that, so I spend a few hours, reading through the code, jumping from definition to definition, memorizing the directory structure, making additional key bindings I consider will be helpful and keep optimizing on that as I go.
i started with Sublime, then Eclipse, then Brackets. I settled with VSCode because, really the massive amounts of extensions is just too useful to ignore. i feel like the versatility of VSCode really boils down to how much time your willing to spend learning it and configuring what you want to do with it. i made my workspace config MONTHS ago and only ever move things around when something annoys the crap outa me enough to spend an hour trying to fix it. Visual Studio annoyed the BAjeezus outa me so much I managed to make VSCode compile C++ JUST SO i dont ever have to use the god awful VS.
VS feels like the team developing it had some Romeo Juliet level family infighting and refuse to use any of the tools, features, and dev experiences that made VSCode the world champ.
Nice. I even forgot you weren't streaming, until the reminder at the end.
I tried to be an Arch + WM + Vim person but ended as an Arch + Gnome + VSCode person, at least I got 1/3 of them :)
The editor that you use doesn't matter as long as you put enough time and effort to learn how to extract as much productivity as possible when using them. Nowadays, I use VSCode as if I am using Neovim, I rarely do anything with the mouse and only rely on the keyboard to do most of the stuff, like navigating and jumping through files and editing stuff.
What kind of extensions do you use to assist with navigation to make it as buttery as neovim ?
@@codingdesk3637 I simply learned the necessary shortcuts that already come with the defaults and customized them to my tastes.
A couple of months ago I configured my Neovim completely to match my workspace in VSCode and it worked pretty good but some configs I wasn't able to setup correctly, such as Tailwind and a few other things I use. In the end I switched back to VSCode although I use Neovim for Rust programming sometimes. But generally speaking, I agree with some of the author's opinions and also agree with Prime and I can even say that I'm really looking forward to the development of Zed, it seems to be a really powerful >blazingly fast lol< code editor :)
I didn't get a point when his packages broke. I use Plug which has lock file and it locks all commits. If I want to update packages (which I didn't do for 2 years and I'm fine) I do it in a separate branch and check that all works before I merge it back. Obviously I plan some time to make updates.
Plugins for VsCode can also break which I felt myself.
Again it's not necessary to update your config and try all new packages if you don't need to.
About people tinkering their config all the time, I keep seeing that everywhere but I copied your last config video series cause I liked the flow, the only change I made is adding m to auto run :make so I can setup projects to have a phony for the thing im working on and it's super quick to iterate but havent touched it in as long as you ironically
I liked this format. On RUclips, I'm generally looking for content that's on point, whereas a stream is more about spending time with the audience, so it's fine to meander off topic there.
Interesting reflections, mostly watching this to understand how other developers think about their editor choice. For myself I have a vimrc that is old enough to drink and I'm at a point where I make maybe a handful of changes to it a year, if that. Used to tinker with it constantly in my early years, but at some point you grow into a workflow where you're so comfortable with what you're doing that there's not much that is bothering you enough to change things around. I guess one could probably argue this might just as likely be an indication of things getting stale though. Watching your videoes is helpful in that regard to challenge what I'm ingrained with, so cheers for that. Keep'em coming.
Hey, not a big deal, but just thought I should point out you don't actually have any link to the blog post on your description (I ended up manually copying it from the URL in the video, but still, would be nice to have the source directly on description).
Personally, I've found copilot to be very useful for repetitive tasks, and now I have the copilot chat extension in VSCode so it's convenient for me to ask stuff like Regex or date time formatting. I can give it the response object from an API and ask it to give me a TS interface for it. It definitely has saved me a lot of time when doing things that are time consuming but easy.
I use neovim daily, but I have GoLand and VSCode installed as well. For VSCode the neovim extension (which embeds your neovim directly into vscode) is pretty good.
I use neovim for script writing, vscode for general coding, Intellij Idea for Java coding, Emacs for note taking, Vim for default editor to edit command (the C-x C-e stuff). I love all these tools.
1:13
I remember people told not to call them "laptops", but to call them "portable computers"
This was because people going to the hostile with burns. Takes about 10 mins for the keyboard of my old laptop to get so hot it burns calluses onto my fingertips :/
I'm so glad I no longer have to use it :D
Agree on Copilot. Boilerplate, repetitive data, SQL script generation with mock data to insert - yes.
In most of other cases - it just annoys more than gives some real value.
For ex. I wrote two small unit tests for my helper functions, basic tests with checking out of bounds or null values in parameters.
Copilot generated some code. Partially, it was fine, some code was just nonsense.
But the problem is that it actually repeats after you or your code, it didn't suggested me to write a data driven unit tests.
Although in my experience SQL boilerplating with Copilot, it really dislikes sanitizing inputs and is a massive hindrance. Kind of horrified to think about how some understandably lazy and overworked devs trying to ship out the features with very easy exploitation issues like SQL injections.
But maybe that’s how Copilot handles Java JDBC libraries and other database connectors in other languages are fine and more secure.
I started to use Neovim this year and it has been an amazing experience. The only tools that I didn't like to use in Neovim are debug adapters and Jupyter Notebooks. I think that the debug adapters its on me to learn and set up in the way I prefer to use, but the Jupyter Notebooks I couldn't find a good alternative.
I have a lot of fun setting my setup whenever I find something that I want or something that have broken, so I don't see time expended as a drawback 😂
Interesting, I was searching for Jupiter notebooks a while ago, but I stopped caring about it and just use vim slime. For data science task is enough for me.
Yes, i hated debug adaptor and coundn' get it work for 1 year ,
but my approch was wrong, i just should have used mason properly and everything would have configured automatically
I just restarted my config. Didn’t use Lazy until now, and the only reason I did now was because Packer got archived.
Half an hour later I was reading the docs for native package support. I’m not using a package managing plugin again.
I don't think my Vim config changed significantly between 2012 and circa 2020. I setup the plugins for the frameworks I was using, it was working really well, and then I just got on with being fast with it. Tmux too; I invested the time in learning and configuring that once, never needed to revisit.
Now I tend to take a look at the config every couple of years, or if I need to set it up for something totally new (e.g. picking up TypeScript) that depends on a good chunk of extra plugins or infrastructure like the LSP.
I'd like to share a bit of my personal dev experience. I first started learning coding in Swift, and as you can imagine the only available option (for a newbie) was Xcode. Then I tried out FE (JS+React) and switched to VS Code.
Oh my, how fast and fluent it felt in comparison to Xcode. Even on a less prominent windows laptop that had an i5 that ran at 2.4 Ghz when turboing. However, when I landed my first FE job and loaded a real (rather massive project), that laptop started throttling all the way + it had all of its 16 Gb of Ram filled up.
So, I was handed a more performant machine with an i7 (up to 5Ghz) and 32 Gb of Ram. When the project is 'on', my computer sits at 20Gb flat. There was an argument made in this video that dev software running better on newer hardware is only a temporary thing. And I tend to agree but in a way that you will always have to upgrade to more powerful hardware as the time gets by.
P.S. It was my first big project and I got completely lost in its folder hierarchy. I can't imagine how one can navigate through 'thick woods' without visual prompts in IDE's like Vim or NVim.
I'm curious, how can you search files / directories with a fuzzy finder? Like you did at 8:10 . I think I just waste so much time using "cd" to move around and get to my project to start coding.
Also great video!
It looks like fzf to me.
@@notusingmyrealnamegoogle6232 Thanks for the reply, I'm searching how to use fzf. And looking it up it really does look like fzf.
For whatever reason, I spend almost no time on configuration in VSCode despite having 50 plugins installed. The experience is pretty seamless for me. I install plugins when I need a new language or want to do something vscode doesn’t support out of the box.
I also auto-update immediately on every release and have never had an issue.
For me, neovim will never be an option until they support multiple cursors out of the box. All other supposed efficiency and speed benefits are negated by the lack of that absolutely essential feature.
I too agree that one has to stop configuring when it is good enough.
I use vanilla emacs and I spend too much time making its function and appearance perfect. Then one day when I was setting up a cloud environment I realised that my setup is reproducible with a small subset of my init file.
That being said that is probably only possible in hindsight. As one do need a significant amount of time to experiment with different options to come up with a trimmed down setup that they need.
So If I am to start from scratch again, I will probably start with some distribution then gradually disable the functionalities until I am left with the only stuff that I need.
The first thing I did when I tried out co-pilot was set up a keybinding to turn it off. It makes WILD predictions that end up being more distracting than helpful. I wanted to be able to turn it on and off quickly so that I only get help when I ask for it. I ended up leaving it off and forgetting that I was paying for it for over a month.
It's a nice tool, but like you said it's only really GREAT at boiler plate. In my experience the time it saves by generating correct code is lost by the time you have to spend going through and fixing it when it's wrong.
Side note... I'm a long time VS Code with Vim keybindings user. I'm tempted to make the change NeoVim, but I haven't made the plunge. What's a good way to try it out and see if it's for me without going through a lengthy setup process?
My 2 cents on why I'm not on neovim at the moment (though it's my favorite editor):
* I've found Intellij's intellisense to be better than LSP for javascript (and maybe also typescript), I constantly use refactor shortcuts to extract things into variables, methods, etc, and I never felt like the refactor capabilities in neovim were on par (or maybe they are and I just never got the config right?).
* The debugging/run configs experience is better in intellij.
* I love configuring it, but many really useful plugins are not trivial to configure and you actually need to read, sometimes find the right github issue etc to understand what you're doing wrong or how the config could be better. I feel like it's not just configuring things but also figuring out how to actually configure each plugin (may not apply for trivial plugins but i did feel it applies for LSP).
* I feel like in your video you say multiple times IF your lsp is setup correctly. And that's the thing, it's easy to set up incorrectly imho.
Having said all this, haven't been on neovim for like a year so maybe it's time to go back and give it a shot.
I keep going back and forth between nvim, VS Code, and Helix. Every time I go back to VS Code I find something stupid with it. Last time there were rendering errors that drove me bonkers.
Helix is great, except not for debugging, and the way multiple cursors is handled is just awkward for me. Nvim is in fact a pain to set up. It just is. But once it’s set up it’s awesome.
I went from Notepad++ at start of uni, to a regrettable weekend with Atom, to VS Code from mid-uni to 6 months into job, to Neovim for the past year. Now, I'm swapping to doom emacs (maybe a scratch config after). Doom emacs is shockingly close to my hand rolled 500-1k line neovim config...except with GUI and a more powerful config experience. WTF.
Ive integrated other unix philosphy "very good at one thing" tools into the neovim workflow like `lazygit` for git and `lf` for filesystem management + bash scripts (AMAZING tool), but no tool integration is perfect when the tool is complex enough (beyond pipes and text streams basically). The elisp-all-the-things emacs walled garden is very attractive since i can hand config everything to mesh perfectly.
The "everyday editor tinkerers" smells a lot like some "Brook's Law" ... The Second System Effect ... lack of a clear concept (goal) and maintaining conceptual integrity. If you don't have a concrete goal then you should take a step back and understand what you're trying to accomplish ... perhaps break something down into smaller goals .. because the constant tinkering is you trying to reach some "unknown state" and it will never be satisfied ... the reason why C is the goto for systems programming and C++ can't add enough features ... it lost its purpose years ago
This is the exact video that might actually get me to drop VSCode and pick up vim. Once I figure out these plugins, I like how the telescope example works, but I have no idea how to get anywhere from the Tilde wall, but I just put neovim on my machine so I guess we will see.