this post was submitted on 02 Oct 2023
1407 points (96.7% liked)

Programmer Humor

19480 readers
175 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 11 points 1 year ago* (last edited 1 year ago) (10 children)

Op does not know about $CDPATH and tab completion keke

[–] [email protected] 5 points 1 year ago (9 children)

I've seen a number of comments imply the possibility of case insensitive tab completion. Is this real and how do I do it?

I have multiple times fumbled with forgetting to capitalize something, only for the terminal to 'dunk' at me

[–] [email protected] 8 points 1 year ago (3 children)

For bash, this is enough:

# Bash TAB-completition enhancements
# Case-insensitive
bind "set completion-ignore-case on"
# Treat - and _ as equivalent in tab-compl
bind "set completion-map-case on"
# Expand options on the _first_ TAB press.
bind "set show-all-if-ambiguous on"

If you also add e.g.CDPATH=~/Documents, it will also always autocomplete from your Documents no matter which directory you're on.

[–] [email protected] 3 points 1 year ago

Setting CDPATH=:~/Documents/Dev makes navigating to any of my projects so much easier.

Thanks for bringing it to my attention

[–] [email protected] 2 points 1 year ago (1 children)

Thanks kind stranger. Never knew of this.

[–] [email protected] 1 points 1 year ago

No problem!

As an aside, I see we're bringing the strangers thing over from Reddit. I hope more of the fun and funny stuff gets over, I miss some of the light shitposting.

[–] [email protected] 1 points 1 year ago* (last edited 1 year ago)

Well completion-ignore-case is enough to solve this particular problem, the other options are just sugar on top :)

I'm going to add completion-prefix-display-length to these related bonus tips (I have it set to 9). This makes it a lot easier to compare files with long names in your tab completion.

For example if you have a folder with these files:

FoobarSystem-v20.69.11-CrashLog2022-12-22 FoobarSystem-v20.69.11.config FoobarSystem-v20.69.12 FoobarSystem-v20.69.12-CrashLog2023-10-02 FoobarSystem-v20.69.12.config FoobarSystem-v20.69.12.userprofiles

Just type vim TAB to see

 ...1-CrashLog2022-12-22   ...1.config   ...2   ...2-CrashLog2023-10-02   ...2.config   ...2.userprofiles
$vim FoobarSystem-v20.69.1

GNU Readline (which is what Bash uses for input) has a lot of options (e.g. making it behave like vim), and your settings are also used in any other programs that use it for their CLI which is a nice bonus. The config file is ~/.inputrc and you'd enable the above mentioned options like this

$include /etc/inputrc

set completion-ignore-case on
set show-all-if-ambiguous on
set completion-map-case on
set completion-prefix-display-length 9
load more comments (5 replies)
load more comments (5 replies)