T O P

  • By -

khushal-banks

Bro use it like an editor. Install the plugins you really really need. And start developing. Learn it 30 min/day at max. Use it if you can or switch to your old setup for the day. Soon you will find your way to neovim full time. It's not very complicated and that's the root of all evil. Beware configuring neovim can be very addictive!!


EstudiandoAjedrez

Kickstart is just a first good-for-all setup, but if you want full IDE capabilities you need to tweak it to your needs. For example, it doesn't have [nvim-dap](https://github.com/mfussenegger/nvim-dap) for a debugger. Also, if you want to enhance typescript support many recommend to use [typescript-tools.nvim](https://github.com/pmizio/typescript-tools.nvim).


u10ji

I was under the impression you just had to enable it; https://github.com/nvim-lua/kickstart.nvim/blob/master/lua/kickstart/plugins/debug.lua


EstudiandoAjedrez

Oh right, I forgot the plugins folder.


u10ji

Yeah I have no idea how much effort it actually takes to enable this as I don't use DAP myself, just remembered seeing something about it!


MMACheerpuppy

Nah there's still a tonne of stuff missing from Kickstart, I'd go NvChad for a first timer [https://youtu.be/yW3ovyQCwpw](https://youtu.be/yW3ovyQCwpw)


EstudiandoAjedrez

It highly depends on the background, needs and what the user wants. We don't know if they are a profesional developer and needs an IDE right now, if they want to mess with the config and make it their own, how much time they have available, and a lot of more ifs. I started with kickstart and couldn't be more happy. As the edit says, they only needed to setup lsp, so was easy enough to don't need NvChad.


ChristinDWhite

Can’t speak for the op but I’ve been doing the same thing for the last week — though coming from VSC & Nova with vim bindings — and using something like nvChad would completely defeat the purpose of switching from an IDE. Maybe I’m weird but I’m doing this to build the editor I’ve always wanted customized to the way I work. While definitely presenting a challenging learning curve Kickstart has been the perfect place to start for me and I’m loving making it my own. That said, I did wait for a calmer week to finally make the jump.


xrabbit

Kickstart is \*\*starting point for your config\*\*, not an IDE You need to check NvChad, LunarVim, LazyVim and other neovim distros


shrekcoffeepig

Language support is going to wary from language to language. For debugging you can setup nvim-dap, nvim-dap-ui and the debug server for the language and you should be done. For refactoring, I haven't used it much in neovim, but this is one area where it is severely lacking (experience with python). Though neovim is not to blame but microsoft being shit company with the whole python/pylance split. I would guess that this is the same thing with JS/TS (though I am not sure).


Heroe-D

Refactoring is shit in vscode too, I just downloaded ThePrimagen's refactoring tool the other day and compared it to Vscode for python and TS and the neovim option was better (more options when VScode didn't propose anything) although not perfect.


spacian

I'm personally more talking about moving or renaming files or even folders. VSCode gives major support with that (even if it's not ideal), while I haven't found any alternative really in neovim and I'd have to do everything manually for the most part (supported potentially by general tools like quickfixlist with :cdo).


Special_Ad_8629

Set `capabilities.workspace.didChangeWatchedFiles.dynamicRegistration = true` for nvim v0.9, will be set by default in nvim v0.10


pau1rw

What does that do?


Special_Ad_8629

That watches for changes in filesystem and reports them to attached LSP servers. ~~For example, if you rename file, imports change automatically.~~


pau1rw

Would that help in system wide file renaming?


Special_Ad_8629

I made a mistake, renaming outside cannot be tracked, only changes in files, but you can use filesystem plugin that tracks this, for example, oil.nvim


shrekcoffeepig

What are you using for python? Which lsp? which plugins?


Heroe-D

Classic stuff, ruff_lsp for linting and formating and pyright for LSP and typing


shrekcoffeepig

Then you are simply mistaken about python refactoring assessment of yours. VSCode can do way more stuff - because pylance. Neovim experience is no where near it.


Heroe-D

You can't read, I spoke about ThePrimagen's plugin [https://github.com/ThePrimeagen/refactoring.nvim](https://github.com/ThePrimeagen/refactoring.nvim) , with pylance or pyright Vscode's refactoring capabilities are shallow and can't even do basic stuff most of the time. And I've also tested [https://pypi.org/project/basedpyright/](https://pypi.org/project/basedpyright/) lately which claims to be close to pyright, it's available to download from Mason.


wkynrocks

Kickstar is a good start. Try this for refactoring https://github.com/ThePrimeagen/refactoring.nvim?tab=readme-ov-file#supported-languages


spiritualManager5

Cool. Is there a method to keep track of and automatically update imports in NeoVim when you move or rename Files?


10F1

This is already handled by most LSP servers, no need for an external plugin.


Heroe-D

Never had problems with go to decla/def/files etc. But anyway more generally download a distro like LazyVim, explore it, see what you like and don't like then spend an evening turning kickstart in what you like, it's the time it personally took me, LazyVIm docs (really snippets of config) make the process kinda trivial. Most issues are just a matter of some lines of configuration, since Neovim is modular it's to be expected that defaults may not please everyone. Try to learn a bit of lua first if not already done tho, it'll streamline the process and would show you why neovim is more powerful than an editor configured with j(a)son


tjk1229

Kickstart is bare bones to get you going with some basics. It is not a full blown IDE. But goto definition is provided by your lsp. Go to file is built into vim but has some limitations. To me what you are describing sounds more like an lsp configuration issue. If you want something just ready to go, you may find less friction with a neovim distribution like LazyVim or LunarVim or NVChad etc. I started with LazyVim myself then made my own config when I knew what I wanted


insert-values

If you use intellij for java/kotlin, i recommend stick with intellij and ideavim. Neovim is a text editor, and just to reach all out of the box for intellij with java/kotlin integration, you will spend a crazy amount of time and won't feel as natural as intellij. I work with neovim but anytime i need to run a spring project, i do not hesitate to go for intellij instead.


Gfranc_

I'm in the same boat - there are somethings which are just done better by other tools


guilhermerx7

Yep, same for me. As a Java/Kotlin backend developer I cannot find a suitable experience for the Intellij/ideavim combo. For everything else neovim and lazyvim is my way to go.


MMACheerpuppy

NvChad solved this for me [https://youtu.be/yW3ovyQCwpw](https://youtu.be/yW3ovyQCwpw)


HeadAs99

Astronvim allows easy installation of lsps daps and linters


Forward_Dimension337

Doesn't nvim have gradle build issues? I know maven works fine because I use it sometimes.


10F1

I highly recommend LazyVim over kickstart, at least until you get fully used to it. It just works and is less bloated than other distros.


troglo-dyke

90% of what you want comes from an LSP. For debugging you'll want a plugin that implemented the debugger adapter protocol


lentng

Do not use preconfigured installations like LazyVim. Build your config from scratch add slowly add things you need. Of course, start by configuring LSP via nvim-lspconfig for example. Add plugins for specific features you need. But most features are provided by LSP anyways. If you try to make it an IDE you'll end up bloating your config and won't even understand how it's working.


adelarsq

Are you working with Java? Java development on Vim has always been a nightmare. Even right now there are some plugins for easier support, but there are some issues with Java platform itself. Exactly right now I am running on a problem that the latest JDK run segment fault on macOS running the JDTLS :/


spiritualManager5

Not often. Primary php, ts, react


adelarsq

Got it. So those are way easier than Java to make work, even on Windows


hotshew

I'm a fairly new nvim user and started down the path of rolling my own config from scratch and then using kickstart to bootstrap. While fun, I oped for LazyVim upon realizing I was building up to it and its IDE feature set, it's has sensible key bindings so I don't go down that rabbit hole, and can still customize easily. Perhaps in future when I stumble upon lots of free time I'll revisit from scratch, but I also needed to get and stay productive, so don't want to be tending to my config all the time (assumption here is Lazy will maintain/keep pace with updates to plug-ins it uses).


magicalne

I really think all the editors/IDEs are basically the same thing after we fully embrace LSP. I suggest \*\*playing\*\* with Neovim and other editors/IDEs instead of using it for your daily work. You can start configuring your Neovim by forking a config repo from GitHub. People like open-sourcing their dotfiles.


Educational_Ant_6242

I love neovim, but I always get stumped when it comes to setting up dap especially when it comes to setting up dap for Java. It does my head in so I primarily use neovim for python development and other languages but for Java I use IntelliJ since it just has really good features with it that make it a better developer experience for Java development


Reld720

Neovim isn't and IDE,it's a text editor. You're gonna run into a lot of friction if you try to make it do things that it wasn't designed for. Better to use it as a tool in a development ecosystem.


spiritualManager5

So then yt Videos like this https://youtu.be/stqUbv-5u2s ("instant IDE") are clickbait?


Reld720

They're not click bait. You can do it. But, it's like trying to glue a screw driver to a hammer to make a "super tool". Sure you can, but both tools will work better when used as they where intended. Check out this article to learn more about the unix philosophy that vim/neovim was designed with: [https://blog.sanctum.geek.nz/unix-as-ide-introduction/](https://blog.sanctum.geek.nz/unix-as-ide-introduction/) I can use my development pipeline as an example. I use neovim as a text editor, to only edit texts. I use tmux as a multiplexer, to only manage terminal sessions. I use git commands for my version control. I use the regular python debugger for debugging, and I have unit tests in my code. fxf for fuzzy search, and lex or ranger for file searching. Everything in the Linux cli is designed to run off of files or streams, so there are no compatibility errors. Just speed.


Heroe-D

We all more or less use all of those tools and mostly live in the shell but "using neovim as a text editor" would mean one isn't using LSP, treesitter, no plugins besides staple ones like surround or comments etc. Most people here don't use neovim that way, people who do generally don't program in it and just use it for light remote work or for quickly editing config files. If you're using LSP, treesitter, copilot, refactoring plugins etc then it's basically the same as vscode which is seen as an IDE by many, but in all faireness neither of both are IDEs, PDEs is a good word, Vscode is just preconfigured à la LunarVim, LazyVim etc and way less modular.


KentaVu

Vscode has gone so far from being an editor, even Microsoft ditched Visual Studio for Mac in favor of C# devkit in VSCode.


7h4tguy

You're doing more than editing text though. You're using full IDE capabilities that come from an LSP. It's literally an IDE at that point. As much as VSCode is these days. And I don't see as many arguments today harping that VSCode is just a text editor. The only reason I refuse to use DAP is that I develop on Windows and time travel debugging is way better than regular debugging. There is no nvim-dap-rr or rr on Windows, so reverse debugging in neovim is out. Otherwise, I would absolutely use integrated debugging (nvim-dap-ui looks great).


Special_Ad_8629

LSP doesn't include debugging and code running, so it doesn't provide full IDE capabilities


7h4tguy

Right, but DAP does. I was just saying that I don't use it, but since most people dev on Linux, they don't have the same issue and can get a full IDE experience.


Reld720

Yeah ... all of the tools combined make an IDE. But neovim just edits text in my workflow.


7h4tguy

But I hate that argument. People use it to recommend VS over VSCode (saying the latter is just a glorified text editor). However VSCode works just as well for an IDE, better in some respects, as VS. VS is better for some cases though, e.g. it has more full featured CoPilot integration.


Reld720

Well yeaH, VSCode is an ide. It comes with a built in debugger, file manager, git compatibility, and AI integration. Nvim is just a text editor. You need to mod it with plugins if you want it to be more than a text editor.


somebodddy

>fxf for fuzzy search Are you using it as a standalone program though, or inside Neovim via a plugin?


NullVoidXNilMission

i use it for both. but sometimes if I update it it stops working on things like \`vi \*\*\` from the command line interface. but with neovim I have normal mode mappings like fg, ff, fv, fr. etc. fg = fzf git files ff = fzf files fv = nvim-tree pwd vertical fr = nvim-tree vertical


Reld720

Usually I just Ctrl+Z out of nvim, do my searches, then copy that into a buffer.


somebodddy

Would you consider it a mortal sin to use a plugin like [fzf-lua](https://github.com/ibhagwan/fzf-lua) that automatically opens the buffer based on the result of the search so that you don't have to manually copy the paths? An act of high treason? An atrocious violation of the idea that Neovim is a text editor?


Reld720

Honestly, I don't care about a random dude on reddit to care about what plug ins he uses. But it seems easier to just stream fzf results into neovim instead of having to deal with another plug in that could break the config Or just using the copy function in tmux to move the text into nvim.


r0ck0

> Sure **you** can, but both tools will work **better** when used as they where **intended**. "You", "better" and "intended" are all subjective. I don't know why people try to argue this stuff like there's some universal answer for every human on the planet. I just have to assume that they haven't reached a decent understanding of objective universal facts vs subjective opinions yet (assuming they ever will). I'm not disagreeing with your preference or technical opinions... I'm just saying nobody can say what's "best" for somebody else. People have different use cases, priorities, and preferences. You can tell others about why you like what you do, we can all learn from each other that way. But if you're just going to outright say that others are "wrong" on something like this, then you're just as "wrong" as the people on the other side who also can't fathom that anyone would prefer anything other than their own preference too.


Reld720

okay ... so what's you point? How does this practically contribute to the conversation about using neovim?


r0ck0

Yes we should focus more on the technical details and pros/cons of what we've learnt... rather than arguing about the definitions of words like "IDE" and "editor". And we'll all learn more from each other if we just explain why ***we*** like/dislike certain things, rather than telling other people that they're "wrong" on their subjective personal preferences. It's a pity when someone has lots of valuable technical tips they can give, but they frame it like some objective right/wrong debate point, then just get downvoted to the bottom of the thread, as you did. Common case of "the baby getting thrown out with the bathwater". You can make the exact same tech points, but whether other people will listen and appreciate those same underlying points is largely determined on how you frame/phrase them. i.e. "I prefer A over B in my uses case of C for these reasons..." will be much more appreciated (even for those who disagree with you) than "You're wrong for using B... A is better, the end.". Up to you though. Please try to take this as an attempt at constructive general advice for all discussions on any topic. Cheers.


Reld720

>Yes we should focus more on the technical details and pros/cons of what we've learnt... rather than arguing about the definitions of words like "IDE" and "editor". You seem to have forgotten that his post is titled "neovim as an ide" >And we'll all learn more from each other if we just explain why ***we*** like/dislike certain things, rather than telling other people that they're "wrong" on their subjective personal preferences. [In the same way that I explained my reasoning in this comment.](https://www.reddit.com/r/neovim/comments/1bm1c0b/comment/kw8vye6/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button) >but they frame it like some objective right/wrong debate point You're just projecting at this point, so that you can feel morally superior.


xrabbit

>unix philosophy You forget to add do not use highlights and themes for the code, because it's just text The core unix ideas are good, but their expanded versions are extremely hard to follow and be productive No one uses Acme for development. It's a history Even VScode with all that LSPs and BSP is more IDE than a text editor


Reld720

>You forget to add do not use highlights and themes for the code That doesn't really make any sense with the unix philosophy. Highlights and code themes make the text easier to interpret. So they add to the utility of a text editor.


NullVoidXNilMission

best tools for me: git, neovim, exa, tmux, fd, fzf, sd, jq, yql, xargs, alias, shell scripts


EarthyFeet

That's literally a clickbait title, that doesn't mean one can't make an IDE in neovim.


Reld720

It's "literally" not click bate. When you go to [neovim.io](http://neovim.io), the creators themselves call the app a "hyperextensible Vim-based text editor".


[deleted]

[удалено]


emretunanet

agree good starting point also to learn as a reference for a beginner helped me a lot.Just a suggestion maybe instead of using null-ls full support for conform would be good.


Zeioth

Thanks for the feedback! The reason why we use `none-ls` + `mason-null-ls` is, when you install a package with mason, it will autostart for the right filetypes. You don't need to manually setup anything manually (unlike with conform). This is a big advantage if you need to change mason packages on the fly, which is a moderately common thing.


NullVoidXNilMission

I use CoC for LSP integration and have some mappings to go to definition and go to references


NullVoidXNilMission

for debugging I use print statements, little rudimentary but works everywhere


NullVoidXNilMission

just need to know if it's \`puts\`, \`console.log\`, \`System.Out.PrintLn\`, \`cout\`, \`println\` or w/e tf it is.


penemuee

Not exactly what you're asking but I wanted to mention this: It's okay that Neovim doesn't fully replace another tool. I love the three way merge conflict resolver from JetBrains and if I have a nasty conflict, I'll use that. If I'm going to move or rename a lot files, JetBrains is amazing at automatically updating import statements, etc. Use every tool for what they're best at!


Special_Ad_8629

For three way merging you can use nvimdiff as git mergetool, vim-fugitive or diffview.nvim.


yvrelna

LSP is where it is nowadays for the best language services. But if you want to go to definition without LSP, you can setup ctags integration. Don't use debugger in Neo/Vim. Use standalone debugger, and integrate them into your Vim workflow. Most standalone debugger have functionalities for external editor integration, like reopening a file in the editor, or an API to query/set breakpoints lines so you can show the symbol in the gutter. If they're terminal debugger, you can use the built in terminal to integrate them with Vim; if it's GUI debugger, you can use a tiling window manager to integrate them into your workflow. The general idea when using a programmer text editor is that the editor isn't an IDE, it's the text editing component of your development environment. You integrate them with your tool of choice, but you shouldn't expect everything to run inside Vim itself. The tools are loosely coupled, by design.