more typos and spelling.
This commit is contained in:
parent
6b72cc3812
commit
e7d4442af6
8 changed files with 39 additions and 40 deletions
|
@ -100,7 +100,7 @@ The majority of the foundational CLI tools on a Linux pc, even one installed yes
|
|||
|
||||
## Ok, so?
|
||||
|
||||
Now, theres nothing wrong with this.
|
||||
Now, there's nothing wrong with this.
|
||||
The tools still work fine, but in the half-century since they were first written,
|
||||
terminals and the broader Linux ecosystem have all changed.
|
||||
Terminals now have capacity to display more colours, Unicode symbols, and even inline images.
|
||||
|
@ -110,7 +110,7 @@ whereas in the past, terminals were the only way one interacted with the compute
|
|||
|
||||
Perhaps more importantly, our knowledge has expanded:
|
||||
our knowledge of user interfaces,
|
||||
of what works and what doesnt,
|
||||
of what works and what doesn't,
|
||||
of what usecases are common and what usecases are niche,
|
||||
the way that error messages can teach,
|
||||
the value of a good out of the box experience,
|
||||
|
@ -119,9 +119,9 @@ and the value of documentation that is easy to find and digest.
|
|||
These changes to the environment surrounding CLI apps in recent years have
|
||||
led to a resurgence in development of command line utilities.
|
||||
Instead of just developing completely new tools or cloning old tools,
|
||||
Ive noticed that people are rethinking and reinventing tools that have existed since the early days of Unix.
|
||||
I've noticed that people are rethinking and reinventing tools that have existed since the early days of Unix.
|
||||
|
||||
This isnt just some compulsive need to rewrite every tool out there in your favorite language.
|
||||
This isn't just some compulsive need to rewrite every tool out there in your favorite language.
|
||||
People are looking at the problem these tools set out to solve,
|
||||
and coming up with their own solutions to them,
|
||||
exploring the space of possible solutions and taking new approaches.
|
||||
|
@ -172,12 +172,12 @@ It has a few colours, shows everything the bash prompt does, and additionally sh
|
|||
Text editors are another great example of the evolution of out of the box defaults.
|
||||
Vim and Neovim both improved on their predecessors,
|
||||
but much of that improvement is locked behind extremely complex configuration experiences and plugins.
|
||||
Heres four different terminal text editors with no configuration applied:
|
||||
Here's four different terminal text editors with no configuration applied:
|
||||
|
||||

|
||||
|
||||
Vi, (top left) is our baseline, and, as far as I can tell, doesnt actually
|
||||
Vi, (top left) is our baseline, and, as far as I can tell, doesn't actually
|
||||
support much for configuration. What you see out of the box is more or less
|
||||
whats there.
|
||||
|
||||
|
@ -192,12 +192,12 @@ In order to take advantage of the LSP and Treesitter support, you have to instal
|
|||
which means learning a Nvim package manager, learning how to configure LSPs,
|
||||
and configuring a new LSP for every language you want to use it with
|
||||
(or finding out about Mason and being OK with having multiple levels of package management in your Nvim install alone).
|
||||
Dont get me wrong: Neovim is a great editor once you get over the hump.
|
||||
Don't get me wrong: Neovim is a great editor once you get over the hump.
|
||||
I still use it as my daily driver, but so much of its functionality is simply hidden.
|
||||
|
||||
Then we have the Helix (bottom right) editor.
|
||||
Slightly glaring default colour scheme aside, everything is just *there*.
|
||||
Helix doesnt have plugin support [yet](https://github.com/helix-editor/helix/discussions/3806),
|
||||
Helix doesn't have plugin support [yet](https://github.com/helix-editor/helix/discussions/3806),
|
||||
but it has so much stuff in core that,
|
||||
looking through my neovim plugins,
|
||||
pretty much all of them are in the core editor!
|
||||
|
@ -216,19 +216,19 @@ but its an extremely usable IDE out of the box thanks to having all of its featu
|
|||
|
||||
In my nvim config, I use [which-key](https://github.com/folke/which-key.nvim),
|
||||
a plugin that displays available keybindings as you type.
|
||||
Ive been using vim for almost a decade, including a long time without which-key,
|
||||
I've been using vim for almost a decade, including a long time without which-key,
|
||||
so its not like I never learned the keybindings, but I still find which-key useful.
|
||||
Why is that, you may ask?
|
||||
Well, because even though I use (n)vim every day, I dont use all the keybindings every day.
|
||||
Well, because even though I use (n)vim every day, I don't use all the keybindings every day.
|
||||
I might go months between using, for example, `dap` (delete current paragraph), or `C-w x` (swap current window for next).
|
||||
Naturally, when you go months without using certain parts of a program, you tend to forget they exist.
|
||||
Which-key solves that handily, by offering quick, non-intrusive reminders of what is availible.
|
||||
Heres what my which-key config looks like:
|
||||
Which-key solves that handily, by offering quick, non-intrusive reminders of what is available.
|
||||
Here's what my which-key config looks like:
|
||||
|
||||

|
||||
|
||||
Now, which-key and its like have been around for a while,
|
||||
but other TUI programs have integreated contextual hints without the need for a plugin.
|
||||
but other TUI programs have integrated contextual hints without the need for a plugin.
|
||||
The two that I am aware of are zellij and helix.
|
||||
|
||||

|
||||
|
@ -237,7 +237,7 @@ Helix both has autocompletion for its built in command line and a contextual hin
|
|||
This drastically helps both new and experienced users learn and remember keybinds without making the editor any less powerful.
|
||||
|
||||
Zellij has a bottom bar displaying keybindings available in the current mode.
|
||||
This has proven invaluable for me, as I dont use a terminal multiplexer much
|
||||
This has proven invaluable for me, as I don't use a terminal multiplexer much
|
||||
(On GUI systems, I use the window manager for managing multiple terminals), and as such tend to forget the keybinds.
|
||||
|
||||
<!-- look at zellij and helix and their built in keymap cheatsheets-->
|
||||
|
@ -247,17 +247,17 @@ This has proven invaluable for me, as I dont use a terminal multiplexer much
|
|||
<!-- look at sd, rg, and fd-->
|
||||
Where possible, documentation should not even be required for the most common use cases.
|
||||
Whenever I want to use `find`, I almost always have to first look at the man page,
|
||||
as I dont use it quite often enough to memorize it.
|
||||
But thats totally unneeded! 90% of my uses of `find` take the form of `find ./ -name "*foo*"`.
|
||||
as I don't use it quite often enough to memorize it.
|
||||
But that's totally unneeded! 90% of my uses of `find` take the form of `find ./ -name "*foo*"`.
|
||||
With [fd](https://github.com/sharkdp/fd), the exact same invocation is a simple `fd foo`, dead simple, no man page needed.
|
||||
Of course, 10% of the time im doing something else and have to look at the manual even with fd,
|
||||
Of course, 10% of the time I'm doing something else and have to look at the manual even with fd,
|
||||
but the point is that manuals are for when you want to do something with the tool that is not the most common usecase.
|
||||
|
||||
There are many other examples as well. How many of your grep invocations are in the form of `grep -R 'foo' ./`?
|
||||
Most of mine are. [Ripgrep](https://github.com/BurntSushi/ripgrep) shortens that to `rg foo`
|
||||
while still having all the power of grep when I need it, and it is faster to boot!
|
||||
|
||||
This isnt to say that tools should 'dumb themselves down' or hobble themselves to make them easier to use.
|
||||
This isn't to say that tools should 'dumb themselves down' or hobble themselves to make them easier to use.
|
||||
However they should keep in mind the most common usecase that their tool is likely to be used in,
|
||||
and streamline that usecase.
|
||||
|
||||
|
@ -279,7 +279,7 @@ and file modification time laziness
|
|||
|
||||
These features are *good* features when make is being used as a build system,
|
||||
but another major use of make that has emerged has been as a way to run common tasks.
|
||||
so alongside `make build` to buld your program, you would have `make bootstrap`, `make test`, `make config`, etc.
|
||||
So alongside `make build` to build your program, you would have `make bootstrap`, `make test`, `make config`, etc.
|
||||
This is where the design decisions behind make the build system start to hinder make the task runner,
|
||||
making one learn about make the build system in order to work around those features to use make the task runner.
|
||||
However, make cant drop these features, both because projects still actively use make as a build system,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue