Some notable examples of things I would have used the command line for a decade ago:
- Gmail for email (I'll switch to Fastmail someday)
- The eight billion other chat apps I use — I dropped IRC many years ago but used IRCCloud to ask NetHack questions recently
- CyberChef for exploring binary data
- Pixlr for image tweaking
- Google Sheets, Airtable, and Notion for notes & databases
- A password manager for passwords
- Pinboard for bookmarks
- NextDNS & PiHole for DNS settings
- Postico for Postgres (not web-based, but massively I'm tremendously more productive with it than with psql)
for f in **/*.go~vendor/*; gofmt -w $f
for f in **/*.go~vendor/*; gofmt -w -r 'a == false -> !a' $f
I guess maybe you have some buttons for that VSCode, but this sort of stuff is pretty fast to type out, and you have a lot of control like "exclude this directory" (like the vendor directory in the example). You can also do more advanced stuff; some time ago I wanted to see how much space my qemu images were using so I could use reasonable defaults for new versions: for f in *.qcow2; printf '%-30s %-15s %s\n' \
$f \
"$(qemu-img info $f | grep -o '^virtual size: [0-9.]* [KMG]iB' | sed 's/virtual //')" \
"$(qemu-img info $f | grep -o '^disk size: [0-9.]* [KMG]iB' | sed 's/disk size/used/')"
Which is a bit hacky, but it's a one-time command and it prints a reasonable nice-ish table. This kind of stuff is much harder from a GUI.It's really flexible and just as "simple" or simpler once you know all the tricks. Learning all the tricks of course takes a long time; say hello to my teenage years with no friends or girlfriend.
Anyway, aside from file management and Vim I do almost everything in the browser, and more or less always have, but for some things it's hard to beat a good shell.
To be honest, that was true 25 years ago for most of us. Some programmers could have perhaps gotten away with only the terminal, but most people using computers in their work have long had to use word processors, spreadsheets, and other critical GUI software if we wanted to keep our jobs.
I used mutt for email, irssi and the bitlbee proxy for chat, wrote styled docs with LaTeX, etc. When I interned at IBM in 2005 I was even able to get Lotus123 or whatever horrible email thing they used to work with mutt, and my supervisor even encouraged me because he wanted to use it, too.
Running Neovim in something like WezTerm, Kitty or Alacrity is closer to what it was like to use a GUI version of Vim (like MacVim) not too long ago.
Full-color support, full OpenType support (like ligatures), built-in multiplexing at least in WezTerm, in a fast, GPU-accelerated UI.
Neovim's support for the same LSPs as VS Code + support for Treesitter.
+1 for LSP-Zero, which makes configuring LSPs and linters trivially easy for Neovim.
I'm not suggesting that you or anyone else should use Neovim instead of VS Code, but I've certainly read enough blog posts about TypeScript and Rust developers moving from VS Code or IntelliJ to Neovimn for a variety of reasons. I've seen Neovim core developers coding on YouTube and Twitch and they look pretty productive to me.
I've attempted to use VS Code; it usually starts okay but doesn't end well and I go back to Neovim.
Neovim hasn't made it to version 1.0 but so far, it's on the right track and I love the vibe of the Neovim community.
What I miss however from the good-old development in Terminal days:
1. How distraction-free terminal is by default without all the popups and extra things on the screen
2. How I could do anything in my development environment without having a mouse
Therefore naturally I checked your dotfiles and I think I will try to adopt your keybindings. Thanks for sharing.
The neovim lsp story with lspzero is as pain free as I can imagine things to be, so that also helps. In this day and age for the languages I use, neovim is a lovely and blazing fast IDE.
Finally, for the way I like to work, the terminal is often the IDE. One thing I couldn't ever get used to was terminal inside the editor rather terminal being the primary thing. It's why my many attempts at Emacs failed too.
I said then that if someone would make a text editor and IDE that used JavaScript from the ground up instead of elisp, that it would dominate, and that's what seems to have happened with VS Code.
Emacs can run the in a terminal too, that's how I have been using it forever inside tmux.
amazing what you can accomplish with a nice IDE :)
I know what its like to be burnt but messing with config, but man I cannot recommend kitty + neovim highly enough. It's absolutely AMAZING.
"Deliver a first-class Lua/LuaJIT scripting alternative to Vimscript." The rest seem fine but not really a reason to switch, and I don't know Lua so I'm not sure that's a reason either.
Is this the main reason? Are there other good reasons?
in any case, thanks for your comment
I think it's more reasonable to use VSCode rather than trying to turn Vim into a monster it wasn't supposed to be. I see Vim a simple modal editor, which can be integrated in other tools such as IDEs.
Maybe I'm in the wrong side, but I always tried to replicate the IDE experience on nvim, and it was a frustrating experience because there was also something else missing, at the end I had to manage 30+ Plugins that could break at any time.
Even though the vim experience inside VSCode is far from perfect (really lacking when we compare with IdeaVim for example), it's a breath of fresh air being able to manage my plugins/lsp/etc with a single click.
The only thing that I miss daily is something like Telescope/fzf. VSCode fuzzy search works fine for file names inside the open project, but searching for file content/other projects/previous open files is really bad.
Recently tried to develop something similar on vscode just for fun (Even I don't use it tho, just accepted the limitation): https://github.com/jpcrs/Binocular
I've been meaning to write a follow-up article, but unfortunately writing is low on the priority list. The main reason is that these days, when I _am_ coding, I mostly write TypeScript and React on my local machine (not much SSH these days), and VS Code Just Works™. I tried twice to get neovim and LSP stuff working but never could, and I can't justify spending time twiddling my editor these days. And as much as I love the terminal, using multiple font sizes lets me fit more information on the screen.
My dotfiles are always available: https://statico.link/dotfiles
(Also, I lost all the great comments on my blog somehow, so sorry to those who left them. I had Commento running for a while but it appears to be abandoned. Disqus has them but I refuse to use Disqus anymore because it's awful.)