man: look for man page for subcommands (#8798)

This commit is contained in:
wurza 2020-05-21 20:24:43 +02:00 committed by GitHub
parent fcd0747bc1
commit 25d0b2dfbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 8 deletions

View File

@ -16,16 +16,22 @@ man-command-line() {
# if there is no command typed, use the last command
[[ -z "$BUFFER" ]] && zle up-history
# prepend man to only the first part of the typed command
# if typed command begins with man, do nothing
[[ "$BUFFER" = man\ * ]] && return
# get command and possible subcommand
# http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags
[[ "$BUFFER" != man\ * ]] && BUFFER="man ${${(Az)BUFFER}[1]}"
local -a args
args=(${${(Az)BUFFER}[1]} ${${(Az)BUFFER}[2]})
# check if man page exists for command and first argument
if man "${args[1]}-${args[2]}" >/dev/null 2>&1; then
BUFFER="man $args"
else
BUFFER="man ${args[1]}"
fi
}
zle -N man-command-line
# Defined shortcut keys: [Esc]man
bindkey "\e"man man-command-line
# ------------------------------------------------------------------------------
# Also, you might want to use man-preview included in 'osx' plugin
# just substitute "man" in the function with "man-preview" after you included OS X in
# the .zshrc