implemented feedback.
This commit is contained in:
		
							parent
							
								
									c3c5c434f5
								
							
						
					
					
						commit
						1b6a59e952
					
				
					 1 changed files with 10 additions and 19 deletions
				
			
		| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
+++
 | 
					+++
 | 
				
			||||||
title = "A modern CLI renaissance?"
 | 
					title = "The modern CLI renaissance."
 | 
				
			||||||
date = 2024-03-04T12:20:02-06:00
 | 
					date = 2024-03-04T12:20:02-06:00
 | 
				
			||||||
draft = true
 | 
					draft = true
 | 
				
			||||||
+++
 | 
					+++
 | 
				
			||||||
| 
						 | 
					@ -83,10 +83,9 @@ xsel -bi
 | 
				
			||||||
ls specifically can trace its history to 1961 
 | 
					ls specifically can trace its history to 1961 
 | 
				
			||||||
-->
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Take a look at this [table](#appendix-the-tools) at the bottom of the page.
 | 
					Over the past few years, it seems like the rate at which new CLI tools are being written has picked back up again,
 | 
				
			||||||
I'll wait.
 | 
					accelerating after seeing relatively little activity between ~1995 and ~2015.
 | 
				
			||||||
Notice the relative scarcity between ~1995 and ~2015?
 | 
					I'd like to talk about this trend I've noticed,
 | 
				
			||||||
Id like to talk about a trend I've seen these past few years,
 | 
					 | 
				
			||||||
where people are rewriting and rethinking staples of the command line interface,
 | 
					where people are rewriting and rethinking staples of the command line interface,
 | 
				
			||||||
why I think this trend might be happening,
 | 
					why I think this trend might be happening,
 | 
				
			||||||
and why I think this trend is a good thing.
 | 
					and why I think this trend is a good thing.
 | 
				
			||||||
| 
						 | 
					@ -112,14 +111,6 @@ Terminal programs now coexist with graphical user interfaces,
 | 
				
			||||||
and only a small subset of computer users even know they exist,
 | 
					and only a small subset of computer users even know they exist,
 | 
				
			||||||
whereas in the past, terminals were the only way one interacted with the computer.
 | 
					whereas in the past, terminals were the only way one interacted with the computer.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Perhaps more importantly, our knowledge has expanded:
 | 
					 | 
				
			||||||
our knowledge of user interfaces,
 | 
					 | 
				
			||||||
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,
 | 
					 | 
				
			||||||
and the value of documentation that is easy to find and digest.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
These changes to the environment surrounding CLI apps in recent years have
 | 
					These changes to the environment surrounding CLI apps in recent years have
 | 
				
			||||||
led to a resurgence in development of command line utilities.
 | 
					led to a resurgence in development of command line utilities.
 | 
				
			||||||
Instead of just developing completely new tools or cloning old tools,
 | 
					Instead of just developing completely new tools or cloning old tools,
 | 
				
			||||||
| 
						 | 
					@ -187,15 +178,15 @@ whats there.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Vim (top right) greatly improved on Vi, adding things such as syntax highlighting, line numbers, spellchecking, split windows, folding, and even basic autocompletion.
 | 
					Vim (top right) greatly improved on Vi, adding things such as syntax highlighting, line numbers, spellchecking, split windows, folding, and even basic autocompletion.
 | 
				
			||||||
However, everything but syntax highlighting is either extremely clunky or outright disabled without configuration.
 | 
					However, everything but syntax highlighting is either extremely clunky or outright disabled without configuration.
 | 
				
			||||||
(for example, the earliest things I did when I first made a `.vimrc` was to enable indent folding,
 | 
					For example, the earliest things I did when I first made a `.vimrc` was to enable indent folding,
 | 
				
			||||||
make some better keybinds for navigating windows, and adding a line number ruler to the side)
 | 
					make some better keybinds for navigating windows, and adding a line number ruler to the side.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Neovim (bottom left) further improved on Vim, adding support for Treesitter and the Language Server Protocol, 
 | 
					Neovim (bottom left) further improved on Vim, adding support for Treesitter and the Language Server Protocol, 
 | 
				
			||||||
but the out of the box experience is the *exact* same as vim!
 | 
					but the out of the box experience is the *exact* same as vim!
 | 
				
			||||||
In order to take advantage of the LSP and Treesitter support, you have to install plugins,
 | 
					In order to take advantage of the LSP and Treesitter support, you have to install plugins,
 | 
				
			||||||
which means learning a Nvim package manager, learning how to configure LSPs,
 | 
					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
 | 
					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).
 | 
					or finding out about Mason and being OK with having multiple levels of package management in your Nvim install alone.
 | 
				
			||||||
Don't 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.
 | 
					I still use it as my daily driver, but so much of its functionality is simply hidden.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -205,8 +196,8 @@ Helix doesn't have plugin support [yet](https://github.com/helix-editor/helix/di
 | 
				
			||||||
but it has so much stuff in core that,
 | 
					but it has so much stuff in core that,
 | 
				
			||||||
looking through my neovim plugins,
 | 
					looking through my neovim plugins,
 | 
				
			||||||
pretty much all of them are in the core editor!
 | 
					pretty much all of them are in the core editor!
 | 
				
			||||||
(Ironically, the one feature that I feel helix is missing, [folding](https://github.com/helix-editor/helix/issues/1840),
 | 
					Ironically, the one feature that I feel helix is missing, [folding](https://github.com/helix-editor/helix/issues/1840),
 | 
				
			||||||
is a core part of neovim, albeit one that requires some configuration to get good use out of).
 | 
					is a core part of neovim, albeit one that requires some configuration to get good use out of.
 | 
				
			||||||
Helix does have a config file where you can change a huge amount of settings,
 | 
					Helix does have a config file where you can change a huge amount of settings,
 | 
				
			||||||
but its an extremely usable IDE out of the box thanks to having all of its features enabled by default.
 | 
					but its an extremely usable IDE out of the box thanks to having all of its features enabled by default.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -221,7 +212,7 @@ In the worst case, they can even point you in a completely different direction t
 | 
				
			||||||
Git is a good example of this. As much as I love git, sometimes its error messages are the  opposite of helpful.
 | 
					Git is a good example of this. As much as I love git, sometimes its error messages are the  opposite of helpful.
 | 
				
			||||||
To borrow an example from [Julia Evans](https://jvns.ca/blog/2024/04/10/notes-on-git-error-messages/#git-checkout-asdf),
 | 
					To borrow an example from [Julia Evans](https://jvns.ca/blog/2024/04/10/notes-on-git-error-messages/#git-checkout-asdf),
 | 
				
			||||||
if you run `git checkout SomeNonExistantBranch`, you get:
 | 
					if you run `git checkout SomeNonExistantBranch`, you get:
 | 
				
			||||||
`error: pathspec 'SomeNonexistantBranch` did not match any file(s) known to git`.
 | 
					`error: pathspec 'SomeNonexistantBranch' did not match any file(s) known to git`.
 | 
				
			||||||
This is confusing because you are trying to checkout a branch, you arent thinking about files.
 | 
					This is confusing because you are trying to checkout a branch, you arent thinking about files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Another example, I covered [before](../nushell) is the contrast between Bash and Nushell.
 | 
					Another example, I covered [before](../nushell) is the contrast between Bash and Nushell.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue