I've tried Emacs's various spell-checking modes, but they are bad. They are all based around dictionary lookups so not very useful for agglutinative languages. Nor do they work with text containing markup or text containing multiple languages (e.g., English cites, but text in a different language). I don't think neovim fares much better.
Reading. I find that reading a lot, especially one's own writing, helps :-)
Also, I would suggest that every student take a few years of Latin, Greek and at least one foreign language from middle school on. That foreign language should be one that stems from a different root than one's own.
I don't use any of that stuff, but then again I'm an old guy who was well taught back when our public schools were a lot more functional. And English was my first language.<p>If I tried to write in some other language, I would need every electronic aid available...
I prefer natural intelligence, but if I have any doubts I'll look something up on the internet which I do occasionally.<p>Not for grammar, just spelling if I get a wild hair.<p>Then again my standards are low, I speak zero languages fluently ;)