logoalt Hacker News

homebrewerlast Sunday at 10:34 AM9 repliesview on HN

With fish, if the program you're interested in hasn't betrayed the decades-old tradition of shipping man pages, it's often as simple as running `fish_update_completions`.

It parses all man pages on your system and generates completion files for you. By default, they go into ~/.cache/fish/generated_completions/*

If the man page was written poorly/is missing, you can always write your own completion (and hopefully send it upstream). fish uses such a simple format that I don't think there's any need for tutorials save the official doc:

https://fishshell.com/docs/current/completions.html

For example, here's an excerpt from curl

  complete --command curl --short-option 'L' --long-option 'location' --description 'Follow redirects' 
  complete --command curl --short-option 'O' --long-option 'remote-name' --description 'Write output to file named as remote file'

Replies

btreecatlast Sunday at 10:47 AM

When I screen share, people don't realize I'm not using zsh and dozen plugins. It's just fish and it's beautiful out of the box.

yencabulatorlast Sunday at 4:02 PM

I'll switch to fish after it stops expanding `car TAB` to `blkdiscard` when I don't have `cargo` in path. Non-prefix completion for commands is plain evil.

show 2 replies
cb321last Sunday at 12:43 PM

For those programs that have betrayed shipping man pages, instead say relying only on a --help system, do you happen to know if the fish shell has an analogue to Zsh `_gnu_generic` and Bash `complete -F _longopt`? If not, do you have any insight into why not/what it would take to make that happen?

show 2 replies
kekebolast Sunday at 11:22 AM

Thank you for the comment. https://github.com/umlx5h/zsh-manpage-completion-generator appears to adapt this to ZSH. Have yet to try through

sanewombatlast Sunday at 1:37 PM

It's surprising that on OpenSUSE `zypper search fish-completion` returns more than 200 packages. Something is fishy here.

show 1 reply
IgorPartolalast Sunday at 2:07 PM

man pages are so underrated. I mean every project nowadays has README.md so I don’t see why we can’t just auto generate them with or without an LLM helping. Also I wish programs would use standardized generic arguments for help, config file, version, background the task, PID file, log file, and log level.

jnpnjlast Sunday at 1:19 PM

oh wow, it's parsing all 9461 man pages on my arch install, for a cute total of 13MB

thanks a lot

hnlmorglast Monday at 7:19 AM

Fish isn’t the only shell that does this. Murex has supported man page completions for years too. And it’s fully automatic in Murex.

fishywanglast Monday at 2:55 AM

I tried to use fish on some of my debian servers that i only rarely update packages/kernel, so I don't have to carry my bashrc there, but found their completion for apt is pretty naive. for example after updated kernel i would want to clean up the old ones, but `apt purge linux-image-<TAB>` would list all available kernel versions, not just the ones currently installed.

in the end i switched back to bash.