Tom Ryder writes about Unix tools, Vim, shell scripting and the ed editor, plus some opinion pieces on software hosting.
Commenters often cite his Unix as IDE series as a favorite way to work, and his ed post draws curiosity.
I will try to answer your questions as I have seen both sides of the fence.
I initially used Visual Studio (around 2012) and really loved the power it gave me. I never felt slow or inefficient until I saw a screencast about Apache config that used vim and I was amazed to see how the person could simply jump to places he wanted. So I set out to try vim. I switched it for all my hobby work but it didn't catch on. So I went back to Visual Studio and in 2014 I thought I should give it another go. This time I started by installing the VsVim extension for Visual Studio.
This is how I got good with Vim:
- In the beginning (I think 2 weeks) I only focused on using the motions (word, next character, paragraph, blocks and regex motion), common commands like d, c and R.
If it helps I saw a screencast (one of the Vim London meetup videos) which broke down Vim into a grammar to be thought of as "operator + count + motion".
I also slowed the key repeat rate to make sure I don't hold arrow keys to move. DISABLE ARROW KEYS IN VSVIMRC.
- After around 2 weeks I got comfortable with that and switched to pure Vim whenever I could. You can set up an external program to call up on the current file in Visual Studio. I also learned to touch type in the next 2 weeks so that I could reap more benefits.
- After a week of moving to Vim, I started writing my vimrc with things like colorcolumn, autoindent and other simple stuff. I also installed relevant text object plugins [1]. I installed some…
You could go back a couple of decades earlier (1960s--1980s) and point at AT&T who specifically prohibited third-party devices on their network (answering machines and even neck-rests or phone-book covers were among the prohibited items),[1] and had flatly rejected packet-switched routing as an obvious threat to their monopoly.[2]
Unix itself (and Linux, Android, and MacOS) wouldn't have existed save for a 1954 consent decree which prohibited AT&T from entering the software business.[3] When the company found itself with an accidental operating system the only thing they could do was give it away for free. "From Ken with love".[4]
________________________________
Notes:
1. Partially supported here: <https://www.promarket.org/2023/02/20/when-considering-breaking-up-big-tech-we-should-look-back-to-att/>. Phone book covers was AT&T v. Winback & Conserve Program, Inc. Hush-a-Phone was an earlier case in 1956 involving a cup-like device, physical only, with no electrical or electronic components: <https://en.wikipedia.org/wiki/Hush-A-Phone_Corp._v._United_States>.
2. <https://en.wikipedia.org/wiki/Protocol_Wars#Early_computer_networking>
3. <https://arstechnica.com/tech-policy/2011/07/should-we-thank-for-feds-for-the-success-of-unix/> <https://www.aeaweb.org/articles?id=10.1257/pol.20190086> and <https://pubs.aeaweb.org/doi/pdfplus/10.1257/pol.20190086> (PDF)
4. <https://sanctum.geek.nz/presentations/a-brief-history-of-unix.pdf>
A young traveller came to visit Emperor Sh, and found him sitting in his
sparsely furnished temple.
“Emperor Sh,” he said, “I am told you are the greatest scholar of shell that
the world has known.”
Emperor Sh made no reply. The traveller continued.
“I have come to ask your advice. I am thinking of developing a character-based
graphing tool. It will interactively change the plot based on key presses.
Which shell commands should I use?”
“Don’t do it in shell,” said Emperor Sh, curtly.
The young traveller was confused. He tried again. “Well… I am also working on
a database audit script. It needs to verify that certain characters do not
appear in any fields in several tables. What should—”
“Don’t do it in shell,” interrupted Emperor Sh.
The traveller began to despair. “I have journeyed one thousand miles, tried
thirteen distributions of my operating system, and waded through hundreds of
badly-written manual pages,” he cried, “and now I have finally come to Emperor
Sh, the greatest shell programmer in the world, and I am told to use no shell
at all! Perhaps I should do what my Python user friends told me to do, and
just pipe together some scripts in venv environments!”
“Good idea,” said Emperor Sh. “Do it in shell.”
Enlightenment crushed down on the young traveller and he bowed to the Emperor,
sobbing with reverent joy.
https://sanctum.geek.nz/etc/emperor-sh-and-the-traveller.txt
Well, there are ways to use such commands on windows too, like WSL, git-bash, cygwin, etc. And, there's powershell on windows (though I haven't used it and not sure about its capabilities)
As to why use shell, that depends on your use case and working environment. Shell is something like an IDE [0] where you can solve multiple tasks from single environment. You don't have to use multiple programs (window manager, text editor, IDE, etc). Since it is all text, you can save and repeat a command, share it with others, edit a previously written command, etc. This is quite different from a GUI based workflow. Personally, I find using command line more productive, but as mentioned earlier, it'll depend on the task at hand.
[0] https://sanctum.geek.nz/arabesque/series/unix-as-ide/
After reading lots of similar anecdotes about Ed (Steven Levy's "Hackers" dedicates quite a few words to it), I was quite sure it was pretty much unusable for today's UI patterns, but also morbidly curious about how it might eventually work.
Then I came across "Actually using ed"[1], which did such a great job at explaining how to use the tool that I decided to throw in my 2 cents by submitting an entry to the tldr-pages project[2]. The rendered page looks can be found on [3]. Any feedback welcome!
1. https://sanctum.geek.nz/arabesque/actually-using-ed/
2. https://github.com/tldr-pages/tldr/pull/944
3. https://github.com/tldr-pages/tldr/blob/master/pages/common/ed.md
My answer is in this excellent series I read a while ago: https://sanctum.geek.nz/arabesque/series/unix-as-ide/
Which, admittedly, is essentially the same as the other answers you got, but that's how I've been working for three years, since I decided to use vim exclusively.
At the start, I was really tempted to install plugins, but ultimately I decided not to. Both to practice with the terminal (which has been immeasurably beneficial) and to make it as easy as possible to switch computers at the drop of a hat without losing productivity: just install vim and I'm good to go (and often not even that is required since vim comes preinstalled often enough).