AstroNvim is an aesthetic and feature-rich Neovim config
github.com
github.com
The biggest goal of this latest major release was to decrease abstraction from our configuration schema. Rather than implementing our own ways of configuring plugins, we expose it to the user in the same way that they would configure it themselves. That way users don't have to relearn Neovim configuration.
Another cool project that we have been spinning up along side this new release is AstroCommunity! (https://github.com/AstroNvim/astrocommunity) This repository aims to empower the community to get more involved with the project and to share their own configurations of plugins that we might not want to ship with the base installation of AstroNvim. This ranges from single plugins such as colorschemes, all the way up to full language packs that setup language specific plugins/language servers/debuggers.
Glad to see this! This is one of the reasons I originally avoided AstroNvim and other pre-built configurations.
Overall though, my experience with neovim has been bad. I've tried hand-built configurations multiple times but (1) I could never port my vim config just right, some common features would crash, and it was a sour taste having to research how to build an editor out of all the random building blocks (2) LazyVim finally clicked for me but I still get a lot of configuration errors, intermittent crashes, etc. So far I'm still giving neovim a try though I still use vim when I want to avoid all of that mess (e.g. quickly opening / closing files without a lot of float windows).
I've been in the same boat. I've been using vim for a long time (and before that nvi, and before that vi) and have over time built up a configuration that mostly works. Opinionated configuration systems don't do it for me, since they inevitably conflict with my opinions and muscle memory.
Until quite recently neovim couldn't handle my vim configuration, and in particular my key maps (issues with modifyOtherKeys) so I always gave up quickly. Recently I tried again, in order to use rust.vim, and got much further; I now only need a little bit of conditional configuration and a bit of divergence in active packages.
I'm currently on a slightly customized NvChad setup and am happy with it. It mainly transitioned me to lua configs, which has been a good decision.
How do you compare with NvChad? It's a slightly different set of tools, yes, but why did you think it needed another 'preconfigured vim' distribution?
Next we really wanted to focus on providing a more stable base. NvChad at the time was not following any sort of version releases and had breaking changes all the time. This lead users to updating their editor and things just randomly breaking. We wanted to set up AstroNvim to follow more rigorous software development practices to help decrease this friction for the user. With our updater you can say that you only want to update within a major version release and then you don't have to worry about fixing breaking changes until you have the time to do so.
Along with this providing a stable base was the battle of managing the distribution of plugins that do not follow any set rules. This led us to our current approach to plugin management in AstroNvim. If you are using the stable release channel of AstroNvim we actually pin all of our core plugins to either a known working git commit or to their current major release version if they follow semantic versioning. This makes sure that updating plugins on the user side won't randomly break core AstroNvim functionality. Naturally this doesn't apply to plugins that the user manages themselves, but at least gets us to as "stable" as we can get it.
The main drive behind all of this is a lot of people use these types of tools to drive their work life. The goal I try to keep in mind is I want to minimize the number of work days people use to their text editor all of a sudden not working for some unknown reason.
Some other key differences:
NvChad also sets up a lot less than AstroNvim under the hood when it comes to language servers/etc. so this does lend to a faster startup time in NvChad than AstroNvim, but better out of the box experience (imo) in AstroNvim for an extremely small start up time cost. So if you want something that truly provides a very good base and do all the other heavy lifting of configuration yourself, NvChad is a really great option!
I am using a dark-on-black terminal style, but when I launch astrovim it seems to superimpose a light on dark color scheme. How can I default to a non-invasive colorscheme?
https://github.com/nvim-lua/kickstart.nvim
It's a single, well-commented config file that will provide you with a neovim that has TreeSitter, LSPs, Lazy, Telescope and a few other useful tools. It's intended to be customised and tailored to your needs.
Very happy with kickstart though.
Just watched it. Pretty decent introduction to kickstart!
Previously AstroVim like many toolkits had it's own configuration system, which was top down & not 1:1 for the plugins. Now there's a much more bottom-up configurability granted to users, and the existing docs on configuring whichever plugin still stand.
This has greatly assuage my concerns abouts picking an off the shelf vim toolkit & I've become a happy new AstroVim convert.
I also appreciate the leap from the Packer plugin manager — which AstroVim 2 & I had been using — to lazy.nvim. It's much faster & requires much less hand holding. Most work is async, automatically compiled. And LazyVim detects changes & deals with it, rather than needing to kick the plugin manager.
Really great set of leading edge tools, well integrated here. Sensible defaults for a lot of good things one would have to wire up themselves. Divine option to have. The switch in configuration style should become a textbook example of core computing principles, is such a night & day practical difference: an example of how dangerous over-encapsulation can be & how nice having a less compositional & more aggregative model can be.
There's a decent amount of good discussion on Reddit on the new 3.0: https://old.reddit.com/r/neovim/comments/11ntuef/astronvim_v...
Are there any other vim toolkits that take the astroVim 3.0 approach?
it is by folke I believe the same author of lazy.nvim.
Astro is more of an attempt to replicate the full IDE experience. You can just copy-paste the above, and you are going (personally, I don't think nvim should be used like a full IDE, you really don't need the file tree or tabs, nvim has a better system than this).
Could you expand on what is that system?
I do have nvim-tree installed but I rarely use it as most times I either navigate files from within definition or go to file from imports or use grep or just search to open from Telescope.
Check out TJDevries's videos about Personal IDE and about kickstart nvim, he is a neovim and Telescope maintainer so he highlights is various usage very well.
IMO, when switching to neovim you have to struggle for a week or so to learn its ways than trying to make it identical to VSCode. I did not switch to neovim until I learned basic file navigation through vim emulator on VSCode.As that was the hardest thing for me when I first tried vim/neovim.
I remember learning vim and not understanding how people used it because you couldn't change files. Using buffers, and some kind of search to load files in made it clear.
Telescope is a good option for file search, and this also has grep.
If you already have some experience and want to configure your own this is a great scaffold to build your own thing: https://github.com/LunarVim/nvim-basic-ide
The problem I had with these projects is that in order to use them, you first have to read the plugin documentation before understanding how to use it.
I used these projects to check what plugins they were using, and then I would go to the plugin Github and check what is does. Then if I like it, I would copy it inside.
But it's transparent in the sense that the lazyvim documentation site reveals how each part is configured.
Use Neovim just as if it were VIM. I've been doing that since I've started using Neovim, the only thing that I missed were encrypted files.
I assumed that the commenter had a relatively narrow list of what they deem acceptable, e.g. 2 or 3 or even 4 configurations.
The approach though is more general than this scenario and can be applied in almost every case with low stakes while absolving the person of the regret they might feel for their choice and reduce the time spent deciding in search for "perfection". The goal is to reduce regret and indecisiveness.
1. Tabs (like in vim). I've found only vim and emacs have tabs in a way that makes sense to me. Kakoune also has a cool model, where I can use my window manager (or tmux) to recreate tabs.
2. Code folding, I like to fold everything as soon as I open a file to get an "overview" and then slowly unfold as look into the details. Wasn't in Helix last time I checked.
3. Narrowing. Emacs has it built in [0], (neo)vim requires a plugin [1]. Similar to code folding, when I'm working on a large function, I want to pretend it's the entirety of my buffer.
Other than that, I'm not convinced that changing the order of key combinations makes sense. Kakoune did the same, I'm not a fan. I spent too long "thinking" in vim mode.
I think it's great at bringing the "floor" up, it's much easier to get productive in helix. But the ceiling is lower than vim.
[0] https://www.gnu.org/software/emacs/manual/html_node/emacs/Na...
[0] https://github.com/helix-editor/helix/issues/2295#issuecomme...
(FWIW I use neither, and format via pre-commit hooks instead of in-editor.)
An example is: I write a long comment string on one line, then `Vgq` breaks it into a comment block according to the line width I have set for the file.
- Love the possibility to download a single-file static executable that works out of the box, without need for a bizarre install method
- Love that basic vim keybindings work
- Hate that it does not come with a manpage hx.1
- Mildly annoyed by the default look and feel (line numbers taking horizontal space so that my code does not fit on the 80 column terminal, ugly white bar at the bottom, ugly negative-contrast completion hints, lines longer than 70 columns silently disappear to the right of the screen forcing me to do very unergonomical horizontal scroll, tabs should be 8 spaces by default not 2)
- There's really nothing wrong with this program, but it just feels like a vim clone, and I don't see the point to move from vim in my case.
It's a vim clone that works out of the box with LSP support, telescope, etc. that would require hours of plugin tinkering toil. I don't need to manage, configure, update, and depend on plugin authors.
It's great. I install it on every host I need to interact with. Quality of life things like `helix --health` further reduces toil.
The bad: -Still lacks certain features, apparently softwrapping lines at screen-width is currently being worked on, and that's a feature I've been waiting for -Can't do some of the fancy stuff you can do with vim plugins, eg. LaTeX support with PDF-viewer connection, or Jupyter notebooks, or whatever sort of highly specific thing you might want to do -Not as good at editing plaintext as Vim. Vim has eg. das ~ "delete as sentence", Helix doesn't. Couple that with lack of softwrapping (for now), and it's a pain
It's pretty great, and I see no reason not to use it. I run into situations where Helix isn't suitable (eg. LaTeX or plaintext), and then I just switch to regular NeoVim. The keybinds are close enough that it's easy to switch back and forth
https://docs.helix-editor.com/master/configuration.html#edit...
Documentation about adding languages seems more about adding new languages.
What should I do to get niceties ?
edit: ah, thanks search engine then arch wiki then https://docs.helix-editor.com/languages.html then https://github.com/helix-editor/helix/wiki/How-to-install-th...
it just seems missing so much still
a quick example - in emacs, I can do "comment-region" and I will get to comment out a selection with the right comment sequence - afaik even something as simple as that doesn't work in helix
so many other things
minor modes are important...in emacs I can have spell checking as a "minor mode" when editing markdown...how do I do this in helix?
easy support for lsp is fine but that means helix is useless if you don't have lsp for a file format you are working on...like .txt! emacs is still a great TEXT editor
maybe one day helix will be an option, not today
But it definitely misses support for multiple lsp's per file and plugins.
Otherwise it just works.
With `hx --health` you can see what executable you need to have a specific LSP working and most of the languages are really zero conf.
I'm also using the master branch version, as the last release is some time ago, but it still works even though it is not a "stable releae".
For example if you have typescript and eslint.
Helix right now can't run both.
So you would need to run eslint in the terminal.
Although I won't be using Astro because I like my current setup, I really enjoy looking through other people's configs.
Edit: why the downvotes? This is a Lua based neovim setup that can't be used with vim.
This comment will probably be a bat signal for vim users though.
For example how in many contexts "crypto" now refers to cryptocurrencies instead of cryptography.
Piping shit to bash and running npx whatever has really normalized this and it sucks. Your editor should be a safe haven.
I guess it’s the classic security vs. UX compromise!
This is ideal for people who can't be bothered to invest the time in a very personalized set up (like Linux desktop VS MacOS) but still want something more powerful and widely accessible than VSCode for most languages (the big exception being VSCode for Typescript/JS, as a Vim obsessed dev I've finally conceded to Code, since that's my day job).
And of course when I say reliability, I don't just mean from crashing. I mean from unnecessary work maintaining plugins and their infrastructure.
Just curious, do you also keep bash/zsh vanilla as possible? I hate sshing into servers without my rc, which is a downside. But I also don't do much sysadmin stuff so it's not a very common issue.
I've been using Linux (or Unix) for 25 years and it works well for me. I can work in large projects with many files and directories. I never even heard of people automatically transferring their RC files to remote servers. That sounds quite convenient to be fair.
Why? As a neovim user with a lot of ts/js at $job, curious what if I'm missing especially useful (outside of the proprietary live-remote-session stuff)
Even the base Vue VSCode plugin + native TS engine doesn't support my needs for modern Vue 3 <script setup /> syntax without a ton of false positive redline errors. When I switched to using Volar my life became way easier (Neovims LSP plugins are usually a year behind the VSCode native ones let alone plugins):
https://marketplace.visualstudio.com/items?itemName=Vue.vsco...
Otherwise our Ruby backend devs can use what they want. So can frontend but they'll be constantly fighting the current.
I'm slowly switching to helix, and this time around will be forcing myself to use the defaults, and not adding a single line of config.
Given this is how I use vim, it doesn't detract from the purpose of vim for me. I'm not entirely sure what you think the point of vim is? Do you use it as your primary editor and just choose to eschew plugins for the sake of stability or do you only use it for quick edits?
My config never broken because of a plugin.
If someone is new to VIM/NVIM: I would go first with the basic.
I have seen a lot of people being overwhelmed with this pre-made configs and lost interest really fast. Also if your not into config stuff and making it yours then maybe something like vim/nvim is not for you. If you want to use vscode use vscode. Its not about the tool but how good you know the tool :)
I love vim motions :D
However I also find those things overwhelming. Just looking at the readme I feel like I'll need a few nights of learning and weeks of practice to figure out a workflow, plus it won't be available soon on my few computers and ever on my many servers. What I like in vim is also it's ubiquity and simplicity. I know my vim config by heart (it's just 6 lines) and just type it in when I login and I don't like the installed config.
How would you or anyone recommend approaching a transition to those kind of framework or frontends or whatever it's called ?
Neovim is great, but does anyone know of any neovim front end that properly supports middle click copy and paste through the primary buffer? I've sort of hacked something with neovim-qt, but it misses highlighting that isn't click-drag-unclick.
Yet I found myself pretty far from any IDE level configuration that I'd have wanted. It'd have taken me months to get to the level of productivity that Intellij offers on day one. I settled on Intellij with Vim bindings.
At this point I just want JetBrains to make a terminal based editor.
Seems a bit daunting to move from an existing neovim setup. Lazy.nvim does look good so it’s a little tempting. Any hints to smooth the way?
Jokes aside, beautifully composed aesthetic, and particularly like the right window in the preview. Will prob do something similar with imenu in emacs. Seems like a way more usefull than seeing a non-readable minimap of your source code file.
It's a _lot_ saner than the JS ecosystem in my opinion.
- Neovim's native LSP (with the neovim-lspconfig plugin) handles completions, go-to-definition, linting, formatting and refactoring. (Here's my init.vim config for the LSP https://gist.github.com/bokwoon95/d9420fce4836f6b518b02bd60a...).
- Instead of trying to get an autcompletion plugin to work, just use vim's native omnicompletion <C-x><C-o>.
- Instead of a plugin manager, use Vim8 native packages (https://vi.stackexchange.com/a/9523). I use a custom shell script for updating plugins via git (https://gist.github.com/bokwoon95/172ecc04039afdbe9425678946...)
- I use Fern.vim for a file explorer.
- I use Telescope.nvim for fuzzy jump-to-file.
- Dynamic statusline is just a few lines of config (https://gist.github.com/bokwoon95/d9420fce4836f6b518b02bd60a...), no statusline plugin needed.
- No debugger support, I'll use a CLI debugger or an IDE if I need one.
I've been using this setup for very a long time, and I barely touch my init.vim anymore. Here's a recent thread from the neovim subreddit where the OP talks about how much effort it takes to properly setup a configuration framework https://www.reddit.com/r/neovim/comments/11p6iiu/i_love_vim_...:
> I want to fix my problems and consolidate my environments BUT setting it up is too painful and I don't another hobby as a job (I already have servers and a 3d printer lol). I've tried multiple times this week to setup either pure neovim, lunarvim, nvChad, astrovim and LazyVim starter and there's always something that I can't find how to change even after searching online and not even taking into account that setting it up takes like a day for each. I don't really want to dedicate a whole month to reading docs, debugging and discovering plugins to fix issues that i'm hitting and I don't wan to blindly learn some commands to then throw them away because that distro didn't work out.
First thing I tried -> :colorsc<tab>
Result: got a pop-up with colorscheme options.
So far, so good.
Second thing I tried -> :so ~/Documents/Session.vim
Result: a whole bunch of errors. Caught some about Lua. One file opened, and nothing else.
Verdict: my vim session scripts don't work with Neovim.
Third thing I tried-> :browse confirm e (intending to open my _gvimrc)
Result: [No file name] error.
Verdict: Neovim does not behave like vim.
Oh well.