72

私が次のようなことをするとイライラしman bindkeyます:

BUILTIN(1)BSD一般コマンドマニュアルBUILTIN(1)

名前
     ビルトイン、!、%、。、:、@、{、}、エイリアス、alloc、bg、bind、bindkey、break、breaksw、builtins、case、cd、chdir、command、
     complete、continue、default、dirs、do、done、echo、echotc、elif、else、end、endif、endsw、esac、eval、exec、exit、
     export、false、fc、fg、filetest、fi、for、foreach、getopts、glob、goto、hash、hashstat、history、hup、if、jobid、
     jobs、kill、limit、local、log、login、logout、ls-F、nice、nohup、notify、onintr、popd、printenv、pushd、pwd、read、
     readonly、rehash、repeat、return、sched、set、setenv、settc、setty、setvar、shift、source、stop、suspend、switch、
     telltc、test、then、time、times、trap、true、type、ulimit、umask、unalias、uncomplete、unhash、unlimit、unset、
     unsetenv、until、wait、where、which、while--シェルビルトインコマンド

概要
     組み込み[-options][args...]

説明
     シェルビルトインコマンドは、実行中のシェルのプロセス内で実行できるコマンドです。注意してください、

そのようなコマンドのドキュメントにアクセスする簡単な方法はありますか?

4

10 に答える 10

35

より便利なヘルプユーティリティを入手するための重要な情報は、実際にはZshに含まれています。これは、ウィジェットについて説明している重要なman zshcontrib(そしてほとんど発見できない)マニュアルページを見つけるだけの問題ですrun-help

デフォルトでrun-helpは、はコマンドのエイリアスであるためman、コマンドワードがシェルビルトインまたはユーザー定義関数である場合、これは失敗することがよくあります。エイリアスを再定義するrun-helpことで、シェルが提供するオンラインヘルプを改善できます。

さらに、組み込みの改善に置き換える方法についても説明します。

これを設定した後run-help、ビルトインの名前、補完関数などを呼び出すと、抽出されたドキュメントを表示したり、マニュアルページを含む権利を表示したりするようになります。たとえば、run-help bindkey出力:

bindkey
   See the section `Zle Builtins' in zshzle(1).

これはもっと良いかもしれません。より良い例として、の基礎となるコマンドであるrun-help historyのZshマニュアルページセクションを示します。fchistory

また、注意してください:現在の入力行でコマンドESC-hを呼び出します。run-help

詳細なヘルプデータを抽出し、HELPDIRそれを指すように設定することは、OSディストリビューションに残されたパッケージ化の決定である可能性があるため、この設定はデフォルトではないと思います。ユーザーの選択もありますautoload run-help。utilは設定しなくても便利ですHELPDIR。1つのアイテムの正確なセクションにジャンプできない場合でも、適切なマニュアルページに移動するのは得意なようです。bindkey上記の例のように時間を無駄にするケースに遭遇するよりも、これを好む人もいるかもしれません。(なぜ彼らがデフォルトになっているのかalias run-help=man、私は理解できません)。

Zshバージョン5.0.3以降の場合

helpfiles抽出はZshディストリビューションに含まれている可能性があります。必要に応じて、システム上でそれらを見つけて設定HELPDIRするだけです。候補がにある/usr/share/zsh/usr/local/share/zsh、サブディレクトリを探している可能性がありますhelp

5.0.3より前のバージョンのZshの場合

man zshcontribヘルプファイルを生成するには、自分で詳しく説明した手順に従う必要があります。これを行う必要があるのは少し面倒ですが、それ以外の場合は迅速で痛みはありません。

インストールされているバージョンをで検索し、sourceforgeアーカイブからzsh --version対応するソースtarballを取得します。次に、マニュアルページに示されているようにスクリプトを実行し、のようにターゲットを設定します。helpfilesHELPDIR~/.zshrc

于 2011-08-15T00:31:36.013 に答える
31

次のいずれかを試してください。

man zshbuiltins

また

man zshall

zshのマニュアルページはトピックごとに分かれており、man zshほとんどが目次と紹介man zshallですが、すべてです(私のシステムでは24628行であるのに対し、の5242行man bash​​)。

bindkeyman zshbuiltinsを参照してくださいman zshzle

于 2010-12-10T09:41:36.140 に答える
18

.zshrcこれらの行をプロファイルに追加できます。

unalias run-help 2>/dev/null
autoload run-help
HELPDIR=/path/to/zsh_help_directory
alias help=run-help

ここで/path/to/zsh_help_directory、zshヘルプフォルダに置き換える必要があります。Homebrew経由でzshがインストールされたOSXを使用している場合、このフォルダーは/usr/local/share/zsh/help

これにより、zshのbashのようなヘルプが有効になります。

zshログインシェルのヘルプファイルのデフォルトのインストールパスが存在し、目的のファイルが含まれている場合は、3行目HELPDIR=/path/to/zsh_help_directoryは必要ないことに注意してください。

.zshrc($ source .zshrc)を入手し、たとえばすべてが正常に機能することを確認します(必要なzshビルトインを選択します。ここで選択しましたautoload):

$ help autoload

2>/dev/nullこの部分がないと、stdエラー'unalias:no such hash table element:run-help'が、すでにエイリアス化されていないときに.zshrcファイルをソースするたびに発生するため、この部分が必要であることに注意してくださいrun-help

于 2016-02-17T12:07:03.800 に答える
13

他の答えは長すぎます...

run-help以下を追加して関数を設定します.zshrc

unalias run-help
autoload run-help

ヒント:設定をでリロードし. ~/.zshrcます。

これで、を実行すると手動エントリが表示されますrun-help bindkey。それが機能しない場合は、オンラインヘルプにアクセスするための詳細な手順を参照する必要があります(man zshcontrib)。

場合によっては、run-helpで手動エントリが見つからないため、を検索する必要がありますman zshall

于 2019-07-03T16:01:29.867 に答える
6

私はbashからzshに移動し、組み込みの「ヘルプ」を見逃しました。それで私はそれを呼ぶエイリアスを書きました。それから私はもっと良いものを見つけました。必要なマニュアルの行にたどり着くために、「n」を1回以上押す必要がある場合もありますが。

help(){
    #This function used to call the "bash" builtin.
    #bash -c "help $@"

    #Better way: look it up in the man pages. I often look up "test" which doesn't give a usefull result,
    #so I added that as a special case.
    if [[ $1 == "test" ]]; then
        man --pager="less -p'^CONDITIONAL EXPRESSIONS$'" zshall
    else
        man --pager="less -p'^ *$@ '" zshall
    fi
}
于 2012-05-16T13:18:32.863 に答える
6

Zsh情報を取得する必要があるたびに、ようやくmanページやオンライン検索を探すのにうんざりしました。私はZshのすべてのマニュアルページに目を通し、かなり拡張性のある優れた「ヘルプ」機能をまとめました。

これを使用するには、「help」というファイルをどこかに作成し、zshrcfpathに追加します。autoload -Uz help

# better help function than zsh's crappy run-help
local ZSHPAGE=zshall LESSQUERY
LESS="-RM~gIsw"
LESS_TERMCAP_mb=$'\E[01;31m'
LESS_TERMCAP_md=$'\E[01;31m'
LESS_TERMCAP_me=$'\E[0m'
LESS_TERMCAP_se=$'\E[0m'
LESS_TERMCAP_so=$'\E[01;44;33m'
LESS_TERMCAP_ue=$'\E[0m'
LESS_TERMCAP_us=$'\E[01;32m'

case "$@" in
    ""|--help|-h)
        local cmds='
RESERVED WORDS
do done esac then elif else fi for case if while function  repeat  time until  select  coproc nocorrect foreach end ! [[ { } declare export float integer local readonly typeset

BUILTIN COMMANDS
- . : [ [[ alias autoload bg bindkey break builtin bye cap cd chdir clone command comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues continue declare dirs disable disown echo echotc echoti emulate enable eval exec exit export false fc fg float functions getcap getln getopts hash history integer jobs kill lets limit local log logout noglob popd print printf pushd pushln pwd r read readonly rehash return sched set setcap setopt shift source stat suspend test times trap true ttyctl type typeset ulimit umask unalias unfunction unhash unlimit unset unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp
        '
        if whence -p fold >/dev/null; then
            fold -sw$COLUMNS <<< $cmds
        else
            print -- $cmds
        fi
        return;;
    '-- '*)
        shift
        LESSQUERY="$@";;
    loop*|while|do|done|if|then|elif|else|fi|until)
        LESSQUERY='^COMPLEX COMMANDS$'
        ZSHPAGE=zshmisc;;
    for)
        LESSQUERY='^       for name \.\.\. '
        ZSHPAGE=zshmisc;;
    foreach|end)
        LESSQUERY='^       foreach name \.\.\.'
        ZSHPAGE=zshmisc;;
    case|esac)
        LESSQUERY='^       case word'
        ZSHPAGE=zshmisc;;
    coproc)
        LESSQUERY='coproc'
        ZSHPAGE=zshmisc;;
    repeat)
        LESSQUERY='^       repeat word do'
        ZSHPAGE=zshmisc;;
    select)
        LESSQUERY='^       select name \[ in word'
        ZSHPAGE=zshmisc;;
    time)
        LESSQUERY='^       time \[ pipeline \]'
        ZSHPAGE=zshmisc;;
    list|'('*|'{'*|subshell)
        LESSQUERY='^       time \[ pipeline \]'
        ZSHPAGE=zshmisc;;
    '!'|not)
        LESSQUERY='^       \! exp  true if exp is false\.'
        ZSHPAGE=zshmisc;;
    .)
        LESSQUERY='^       \. file \[ arg \.\.\. \]'
        ZSHPAGE=zshbuiltins;;
    :)
        LESSQUERY='^       : \['
        ZSHPAGE=zshbuiltins;;
    alias)
        LESSQUERY='^       alias \['
        ZSHPAGE=zshbuiltins;;
    autoload)
        LESSQUERY='^       autoload \['
        ZSHPAGE=zshbuiltins;;
    *autoload*)
        LESSQUERY='^AUTOLOADING FUNCTIONS$'
        ZSHPAGE=zshmisc;;
    bg)
        LESSQUERY='^       bg \['
        ZSHPAGE=zshbuiltins;;
    bindkey)
        LESSQUERY='^ZLE BUILTINS$'
        ZSHPAGE=zshzle;;
    break)
        LESSQUERY='^       break \[ n \]'
        ZSHPAGE=zshbuiltins;;
    -|exec|command|noglob|nocorrect|builtin|precommand*)
        LESSQUERY='^PRECOMMAND MODIFIERS$'
        ZSHPAGE=zshmisc;;
    bye)
        LESSQUERY='^       bye    Same as exit\.'
        ZSHPAGE=zshbuiltins;;
    cap)
        LESSQUERY='^The zsh/cap Module$'
        ZSHPAGE=zshmodules;;
    cd)
        LESSQUERY='^       cd \[ -qsLP \] \[ arg \]'
        ZSHPAGE=zshbuiltins;;
    chdir)
        LESSQUERY='^       chdir  Same as cd\.'
        ZSHPAGE=zshbuiltins;;
    clone)
        LESSQUERY='^The zsh/clone Module'
        ZSHPAGE=zshmodules;;
    compargu*)
        LESSQUERY='^       comparguments$'
        ZSHPAGE=zshmodules;;
    compcall)
        LESSQUERY='^       compcall \[ -TD'
        ZSHPAGE=zshcompwid;;
    compctl)
        LESSQUERY='^       compctl \[ -CDT'
        ZSHPAGE=zshcompctl;;
    compdes*)
        LESSQUERY='^       compdescribe$'
        ZSHPAGE=zshmodules;;
    compfiles)
        LESSQUERY='^       compfiles$'
        ZSHPAGE=zshmodules;;
    compgroups)
        LESSQUERY='^       compgroups$'
        ZSHPAGE=zshmodules;;
    compquote)
        LESSQUERY='^       compquote$'
        ZSHPAGE=zshmodules;;
    comptags)
        LESSQUERY='^       comptags$'
        ZSHPAGE=zshmodules;;
    comptry)
        LESSQUERY='^       comptry$'
        ZSHPAGE=zshmodules;;
    compvalues)
        LESSQUERY='^       compvalues$'
        ZSHPAGE=zshmodules;;
    continue)
        LESSQUERY='^       continue \[ n \]'
        ZSHPAGE=zshbuiltins;;
    dirs)
        LESSQUERY='^       dirs \[ -c \]'
        ZSHPAGE=zshbuiltins;;
    disable)
        LESSQUERY='^       disable \[ -afmprs \]'
        ZSHPAGE=zshbuiltins;;
    disown)
        LESSQUERY='^       disown \[ job \.\.\. \]'
        ZSHPAGE=zshbuiltins;;
    echo)
        LESSQUERY='^       echo \[ -neE \]'
        ZSHPAGE=zshbuiltins;;
    echotc)
        LESSQUERY='^The zsh/termcap Module$'
        ZSHPAGE=zshmodules;;
    echoti)
        LESSQUERY='^The zsh/terminfo Module$'
        ZSHPAGE=zshmodules;;
    emulate)
        LESSQUERY='^       emulate \[ -LR \]'
        ZSHPAGE=zshbuiltins;;
    enable)
        LESSQUERY='^       enable \[ -afmprs \]'
        ZSHPAGE=zshbuiltins;;
    eval)
        LESSQUERY='^       eval \[ arg \.\.\. \]'
        ZSHPAGE=zshbuiltins;;
    exit)
        LESSQUERY='^       exit \[ n \]'
        ZSHPAGE=zshbuiltins;;
    export)
        LESSQUERY='^       export \[ name'
        ZSHPAGE=zshbuiltins;;
    fc)
        LESSQUERY='^       fc \[ -e ename \] \[ -LI \]'
        ZSHPAGE=zshbuiltins;;
    fg)
        LESSQUERY='^       fg \[ job \.\.\. \]S'
        ZSHPAGE=zshbuiltins;;
    functions)
        LESSQUERY='^       functions \[ \{\+\|-\}UkmtTuz'
        ZSHPAGE=zshbuiltins;;
    getcap)
        LESSQUERY='^The zsh/cap Module$'
        ZSHPAGE=zshmodules;;
    getln)
        LESSQUERY='^       getln \[ -AclneE \]'
        ZSHPAGE=zshbuiltins;;
    getopts)
        LESSQUERY='^       getopts optstring name'
        ZSHPAGE=zshbuiltins;;
    hash)
        LESSQUERY='^       hash \[ -Ldfmrv \]'
        ZSHPAGE=zshbuiltins;;
    history)
        LESSQUERY='^HISTORY EXPANSION$';;
    integer)
        LESSQUERY='^       integer \[ \{\+\|-\}Hghlprtux'
        ZSHPAGE=zshbuiltins;;
    jobs)
        LESSQUERY='^       jobs \[ -dlprs \]'
        ZSHPAGE=zshbuiltins;;
    kill)
        LESSQUERY='^       kill \[ -s signal_name'
        ZSHPAGE=zshbuiltins;;
    limit)
        LESSQUERY='^       limit \[ -hs \]'
        ZSHPAGE=zshbuiltins;;
    local)
        LESSQUERY='^       local \[ \{\+\|-\}AHUahlprtux '
        ZSHPAGE=zshbuiltins;;
    log)
        LESSQUERY='^       log    List all'
        ZSHPAGE=zshbuiltins;;
    logout)
        LESSQUERY='^       logout \[ n \]'
        ZSHPAGE=zshbuiltins;;
    popd)
        LESSQUERY='^       popd \[ -q \]'
        ZSHPAGE=zshbuiltins;;
    print)
        LESSQUERY='^       print \[ -abcDilmnNoOpPrsSz \]'
        ZSHPAGE=zshbuiltins;;
    printf)
        LESSQUERY='^       printf format \[ arg \.\.\. \]'
        ZSHPAGE=zshbuiltins;;
    pushd)
        LESSQUERY='^       pushd \[ -qsLP \]'
        ZSHPAGE=zshbuiltins;;
    pushln)
        LESSQUERY='^       pushln \[ arg \.\.\. \]'
        ZSHPAGE=zshbuiltins;;
    pwd)
        LESSQUERY='^       pwd \[ -rLP \]'
        ZSHPAGE=zshbuiltins;;
    r)
        LESSQUERY='^       r      Same as fc -e -\.'
        ZSHPAGE=zshbuiltins;;
    read)
        LESSQUERY='^       read \[ -rszpqAclneE \]'
        ZSHPAGE=zshbuiltins;;
    readonly)
        LESSQUERY='^       readonly$'
        ZSHPAGE=zshbuiltins;;
    rehash)
        LESSQUERY='^       rehash Same as hash -r\.'
        ZSHPAGE=zshbuiltins;;
    return)
        LESSQUERY='^       return \[ n \]'
        ZSHPAGE=zshbuiltins;;
    sched|'sched module')
        LESSQUERY='^THE ZSH/SCHED MODULE$'
        ZSHPAGE=zshmodules;;
    set)
        LESSQUERY='^       set \[ \{\+\|-\}options'
        ZSHPAGE=zshbuiltins;;
    setcap)
        LESSQUERY='^The zsh/cap Module$'
        ZSHPAGE=zshmodules;;
    setopt)
        LESSQUERY='^       setopt \[ \{\+\|-\}options'
        ZSHPAGE=zshbuiltins;;
    shift)
        LESSQUERY='^       shift \[ -p \]'
        ZSHPAGE=zshbuiltins;;
    source)
        LESSQUERY='^       source file \[ arg'
        ZSHPAGE=zshbuiltins;;
    stat|zstat|'stat module')
        LESSQUERY='^The zsh/stat Module$'
        ZSHPAGE=zshmodules;;
    times)
        LESSQUERY='^       times  Print'
        ZSHPAGE=zshbuiltins;;
    test|'[['*|'['*)
        LESSQUERY='^CONDITIONAL EXPRESSIONS$'
        ZSHPAGE=zshmisc;;
    trap)
        LESSQUERY='^       trap \[ arg \] \[ sig \.\.\. \]'
        ZSHPAGE=zshbuiltins;;
    true)
        LESSQUERY='^       true \[ arg \.\.\. \]'
        ZSHPAGE=zshbuiltins;;
    ttyctl)
        LESSQUERY='^       ttyctl \[ -fu \]'
        ZSHPAGE=zshbuiltins;;
    type)
        LESSQUERY='^       type \[ -wfpamsS \]'
        ZSHPAGE=zshbuiltins;;
    typeset|declare)
        LESSQUERY='^       typeset \[ \{\+\|-\}AHUaghlmprtux \]'
        ZSHPAGE=zshbuiltins;;
    ulimit)
        LESSQUERY='^       ulimit \[ -HSa \] \['
        ZSHPAGE=zshbuiltins;;
    umask)
        LESSQUERY='^       umask \[ -S \] \[ mask \]'
        ZSHPAGE=zshbuiltins;;
    unalias)
        LESSQUERY='^       unalias \[ -ams \]'
        ZSHPAGE=zshbuiltins;;
    unfunction)
        LESSQUERY='^       unfunction$'
        ZSHPAGE=zshbuiltins;;
    unhash)
        LESSQUERY='^       unhash \[ -adfms \]'
        ZSHPAGE=zshbuiltins;;
    unset)
        LESSQUERY='^       unset \[ -fmv \]'
        ZSHPAGE=zshbuiltins;;
    unsetopt)
        LESSQUERY='^       unsetopt \[ \{\+\|-\}options'
        ZSHPAGE=zshbuiltins;;
    vared)
        LESSQUERY='^       vared \[ -Aache \]'
        ZSHPAGE=zshzle;;
    wait)
        LESSQUERY='^       wait \[ job \.\.\. \]'
        ZSHPAGE=zshbuiltins;;
    whence)
        LESSQUERY='^       whence \[ -vcwfpamsS \]'
        ZSHPAGE=zshbuiltins;;
    where)
        LESSQUERY='^       where \[ -wpmsS \]'
        ZSHPAGE=zshbuiltins;;
    which)
        LESSQUERY='^       which \[ -wpamsS \]'
        ZSHPAGE=zshbuiltins;;
    zcompile)
        LESSQUERY='^       zcompile \[ -U \] \[ -z \|'
        ZSHPAGE=zshbuiltins;;
    zformat)
        LESSQUERY='^       zformat -f param format'
        ZSHPAGE=zshmodules;;
    zftp|'ftp module')
        LESSQUERY='^The zsh/zftp Module$'
        ZSHPAGE=zshmodules;;
    zle)
        LESSQUERY='^       zle -l \[ -L \| -a \] \[ string \.\.\. \]'
        ZSHPAGE=zshzle;;
    widget)
        LESSQUERY='^              widget \[ -n num \] \[ -Nw \]'
        ZSHPAGE=zshzle;;
    zmodload)
        LESSQUERY='^       zmodload \[ -dL \] \[ \.\.\. \]'
        ZSHPAGE=zshbuiltins;;
    zparseopts)
        LESSQUERY='^       zparseopts \[ -DKME \]'
        ZSHPAGE=zshmodules;;
    zprof|'zprof module')
        LESSQUERY='^THE ZSH/ZPROF MODULE$'
        ZSHPAGE=zshmodules;;
    zpty|'zpty module')
        LESSQUERY='^THE ZSH/ZPTY MODULE$'
        ZSHPAGE=zshmodules;;
    zregexparse)
        LESSQUERY='^       zregexparse$'
        ZSHPAGE=zshmodules;;
    zsocket|(net|socket)' module')
        LESSQUERY='^THE ZSH/NET/SOCKET MODULE$'
        ZSHPAGE=zshmodules;;
    zstyle|'zutil module')
        LESSQUERY='^The zsh/zutil Module$'
        ZSHPAGE=zshmodules;;
    ztcp|'tcp module')
        LESSQUERY='^THE ZSH/NET/TCP MODULE$'
        ZSHPAGE=zshmodules;;
    attr*mod*|zgetattr|zsetattr|zdelattr|zlistattr)
        LESSQUERY='^THE ZSH/ATTR MODULE$'
        ZSHPAGE=zshmodules;;
    complist*mod*)
        LESSQUERY='^THE ZSH/COMPLIST MODULE'
        ZSHPAGE=zshmodules;;
    computil*mod*)
        LESSQUERY='^THE ZSH/COMPUTIL MODULE'
        ZSHPAGE=zshmodules;;
    curses*|zcurses)
        LESSQUERY='^THE ZSH/CURSES MODULE'
        ZSHPAGE=zshmodules;;
    datetime*|strftime)
        LESSQUERY='^THE ZSH/DATETIME MODULE'
        ZSHPAGE=zshmodules;;
    (db|gdbm)*|ztie|zuntie)
        LESSQUERY='^THE ZSH/DB/GDBM MODULE'
        ZSHPAGE=zshmodules;;
    delto*|delete-to-char|zap-to-char)
        LESSQUERY='^THE ZSH/DELTOCHAR MODULE'
        ZSHPAGE=zshmodules;;
    example*)
        LESSQUERY='^THE ZSH/EXAMPLE MODULE'
        ZSHPAGE=zshmodules;;
    files*mod*|chgrp|chown|ln|mkdir|mv|rm|rmdir|sync)
        LESSQUERY='^THE ZSH/FILES MODULE'
        ZSHPAGE=zshmodules;;
    langinfo*)
        LESSQUERY='^THE ZSH/LANGINFO MODULE'
        ZSHPAGE=zshmodules;;
    mapfile*)
        LESSQUERY='^THE ZSH/MAPFILE MODULE'
        ZSHPAGE=zshmodules;;
    mathfunc*mod*)
        LESSQUERY='^THE ZSH/MATHFUNC MODULE'
        ZSHPAGE=zshmodules;;
    param*mod*)
        LESSQUERY='^THE ZSH/PARAMETER MODULE'
        ZSHPAGE=zshmodules;;
    pcre*)
        LESSQUERY='^THE ZSH/PCRE MODULE'
        ZSHPAGE=zshmodules;;
    regex*mod*)
        LESSQUERY='^THE ZSH/REGEX MODULE'
        ZSHPAGE=zshmodules;;
    system*mod*|syserror|sysopen|sysread|sysseek|syswrite|zsystem*)
        LESSQUERY='^THE ZSH/SYSTEM MODULE'
        ZSHPAGE=zshmodules;;
    zselect*)
        LESSQUERY='^THE ZSH/ZSELECT MODULE'
        ZSHPAGE=zshmodules;;
    start*flag*|invok*|initial*)
        LESSQUERY='^INVOCATION$'
        ZSHPAGE=zsh;;
    (start|shut)*file*|*zshenv|*zshrc|*zprofile|*zlogin|*zlogout|*zdotdir*|*ZDOTDIR*)
        LESSQUERY='^STARTUP/SHUTDOWN FILES$'
        ZSHPAGE=zsh;;
    subscript*)
        LESSQUERY='^   Subscript Flags'
        ZSHPAGE=zshparam;;
    simple*|pipe*)
        LESSQUERY='^SIMPLE COMMANDS & PIPELINES'
        ZSHPAGE=zshmisc;;
    function*)
        LESSQUERY='^       function word'
        ZSHPAGE=zshmisc;;
    alt*)
        LESSQUERY='^ALTERNATE FORMS$'
        ZSHPAGE=zshmisc;;
    reserv*)
        LESSQUERY='^RESERVED WORDS$'
        ZSHPAGE=zshmisc;;
    error*)
        LESSQUERY='^ERRORS$'
        ZSHPAGE=zshmisc;;
    alias*)
        LESSQUERY='^ALIASING$'
        ZSHPAGE=zshmisc;;
    quot*)
        LESSQUERY='^QUOTING$'
        ZSHPAGE=zshmisc;;
    redirect*|*'>'*|*'<'*|*'&>'*|*'2>'*|*'>>'*|*'<<'*)
        LESSQUERY='^REDIRECTION$'
        ZSHPAGE=zshmisc;;
    file*desc*)
        LESSQUERY='^OPENING FILE DESCRIPTORS USING PARAMETERS$'
        ZSHPAGE=zshmisc;;
    multios)
        LESSQUERY='^MULTIOS$'
        ZSHPAGE=zshmisc;;
    anon*func*)
        LESSQUERY='^ANONYMOUS FUNCTIONS$'
        ZSHPAGE=zshmisc;;
    hook*)
        LESSQUERY='^   Hook Functions$'
        ZSHPAGE=zshmisc;;
    trap*)
        LESSQUERY='^   Trap Functions$'
        ZSHPAGE=zshmisc;;
    job*)
        LESSQUERY='^JOBS$'
        ZSHPAGE=zshmisc;;
    math*|'(('*|'$(('|let*|arith*)
        LESSQUERY='^ARITHMETIC EVALUATION$'
        ZSHPAGE=zshmisc;;
    prompt|promptinit|prompt*theme*)
        LESSQUERY='^       prompt \[ -c \| -l \]'
        ZSHPAGE=zshcontrib;;
    PS1|prompt*|PROMPT*)
        LESSQUERY='^SIMPLE PROMPT ESCAPES$'
        ZSHPAGE=zshmisc;;
    history*)
        LESSQUERY='^HISTORY EXPANSION$'
        ZSHPAGE=zshexpn;;
    proc*sub*|*'<('*|*')>'*)
        LESSQUERY='^PROCESS SUBSTITUTION$'
        ZSHPAGE=zshexpn;;
    param*flag*)
        LESSQUERY='^   Parameter Expansion Flags$'
        ZSHPAGE=zshexpn;;
    param*rule*|nested*sub*)
        LESSQUERY='^   Rules$'
        ZSHPAGE=zshexpn;;
    param*ex*)
        LESSQUERY='^   Examples$'
        ZSHPAGE=zshexpn;;
    param*|'${')
        LESSQUERY='^PARAMETER EXPANSION$'
        ZSHPAGE=zshexpn;;
    brace*expan*)
        LESSQUERY='^BRACE EXPANSION$'
        ZSHPAGE=zshexpn;;
    filename*expan*)
        LESSQUERY='^FILENAME EXPANSION$'
        ZSHPAGE=zshexpn;;
    expan*|subst*)
        LESSQUERY='^       zshexpn - zsh expansion and substitution$'
        ZSHPAGE=zshexpn;;
    dyn*dir*)
        LESSQUERY='^   Dynamic named directories$'
        ZSHPAGE=zshexpn;;
    static*dir*)
        LESSQUERY='^   Static named directories$'
        ZSHPAGE=zshexpn;;
    approx*match*)
        LESSQUERY='^   Approximate Matching$'
        ZSHPAGE=zshexpn;;
    recurs*glob*)
        LESSQUERY='^   Recursive Globbing$'
        ZSHPAGE=zshexpn;;
    glob*qual*)
        LESSQUERY='^   Glob Qualifiers$'
        ZSHPAGE=zshexpn;;
    glob*flag*)
        LESSQUERY='^   Globbing Flags$'
        ZSHPAGE=zshexpn;;
    glob*)
        LESSQUERY='^   Glob Operators$'
        ZSHPAGE=zshexpn;;
    ksh*glob*)
        LESSQUERY='^   ksh-like Glob Operators'
        ZSHPAGE=zshexpn;;
    array*sub*)
        LESSQUERY='^   Array Subscripts$'
        ZSHPAGE=zshparam;;
    array*)
        LESSQUERY='^ARRAY PARAMETERS$'
        ZSHPAGE=zshparam;;
    positional*)
        LESSQUERY='^POSITIONAL PARAMETERS$'
        ZSHPAGE=zshparam;;
    shell*(param*|var*)|env*)
        LESSQUERY='^PARAMETERS SET BY THE SHELL$'
        ZSHPAGE=zshparam;;
    watchfmt*)
        LESSQUERY='^       WATCHFMT$'
        ZSHPAGE=zshparam;;
    set*|(shell|spec)*op*)
        LESSQUERY='^SPECIFYING OPTIONS$'
        ZSHPAGE=zshoptions;;
    single*opt*|short*flag*|single*letter*)
        LESSQUERY='^SINGLE LETTER OPTIONS$'
        ZSHPAGE=zshoptions;;
    (shell|zsh)*builtin*)
        LESSQUERY='^SHELL BUILTIN COMMANDS$'
        ZSHPAGE=zshbuiltins;;
    key*)
        LESSQUERY='^KEYMAPS$'
        ZSHPAGE=zshzle;;
    widget*)
        LESSQUERY='^USER-DEFINED WIDGETS$'
        ZSHPAGE=zshzle;;
    highlight*)
        LESSQUERY='^CHARACTER HIGHLIGHTING$'
        ZSHPAGE=zshzle;;
    comp*wid*)
        LESSQUERY='^       zshcompwid - zsh completion widgets'
        ZSHPAGE=zshcompwid;;
    complet*param*|*PREFIX*|*CURRENT*|*SUFFIX*)
        LESSQUERY='^COMPLETION SPECIAL PARAMETERS$'
        ZSHPAGE=zshcompwid;;
    compstate)
        LESSQUERY='^       compstate$'
        ZSHPAGE=zshcompwid;;
    compadd)
        LESSQUERY='^       compadd \[ -akqQfenUlo12C '
        ZSHPAGE=zshcompwid;;
    compset)
        LESSQUERY='^       compset -p number'
        ZSHPAGE=zshcompwid;;
    compcall)
        LESSQUERY='^       compcall \[ -TD'
        ZSHPAGE=zshcompwid;;
    *match*)
        LESSQUERY='^COMPLETION MATCHING CONTROL$'
        ZSHPAGE=zshcompwid;;
    *compsys*)
        LESSQUERY='^       zshcompsys - zsh completion system'
        ZSHPAGE=zshcompsys;;
    compdef*)
        LESSQUERY='^       compdef \[ -ane \]'
        ZSHPAGE=zshcompsys;;
    '#'compdef*)
        LESSQUERY='^       #compdef name'
        ZSHPAGE=zshcompsys;;
    *completer*)
        LESSQUERY='^       completer$'
        ZSHPAGE=zshcompsys;;
    *complet*|*'zstyle '*)
        LESSQUERY='^COMPLETION SYSTEM CONFIGURATION$'
        ZSHPAGE=zshcompsys;;
    utility*func*|_argu*|_descr*)
        LESSQUERY='^UTILITY FUNCTIONS$'
        ZSHPAGE=zshcompsys;;
    control*func*|_func*)
        LESSQUERY='^CONTROL FUNCTIONS$'
        ZSHPAGE=zshcompsys;;
    calendar*)
        LESSQUERY='^       calendar \[ -abdDsv'
        ZSHPAGE=zshcalsys;;
    calsys*)
        LESSQUERY='^       zshcalsys - zsh calendar system'
        ZSHPAGE=zshcalsys;;
    tcp*)
        LESSQUERY='^       zshtcpsys - zsh tcp system'
        ZSHPAGE=zshtcpsys;;
    ftp*|zftp*)
        LESSQUERY='^       zshzftpsys - zftp function front-end'
        ZSHPAGE=zshzftpsys;;
    contrib*)
        LESSQUERY='^       zshcontrib - user contributions to zsh'
        ZSHPAGE=zshcontrib;;
    special*func*)
        LESSQUERY='^SPECIAL FUNCTIONS'
        ZSHPAGE=zshmisc;;
    color*comp*)
        LESSQUERY='^   Colored completion listings'
        ZSHPAGE=zshmodules;;
    colors)
        LESSQUERY='^       colors This  function'
        ZSHPAGE=zshcontrib;;
    vcs*|version*control*)
        LESSQUERY='^GATHERING INFORMATION FROM VERSION CONTROL SYSTEMS$'
        ZSHPAGE=zshcontrib;;
    zle*)
        LESSQUERY='^ZLE FUNCTIONS$'
        ZSHPAGE=zshzle;;
    mime*)
        LESSQUERY='^MIME FUNCTIONS$'
        ZSHPAGE=zshcontrib;;
    zcalc*)
        LESSQUERY='^       zcalc \[ -ef'
        ZSHPAGE=zshcontrib;;
    zmathfuncdef)
        LESSQUERY='^       zmathfuncdef \['
        ZSHPAGE=zshcontrib;;
    other*func*)
        LESSQUERY='^OTHER FUNCTIONS'
        ZSHPAGE=zshcontrib;;
    zargs)
        LESSQUERY='       zargs \[ option'
        ZSHPAGE=zshcontrib;;
    tetris*)
        LESSQUERY='^       tetris Zsh'
        ZSHPAGE=zshcontrib;;
    zed)
        LESSQUERY='^       zed \[ -f'
        ZSHPAGE=zshcontrib;;
    zmv|zcp|zln|zkbd)
        LESSQUERY='^       zmv \[ -finq'
        ZSHPAGE=zshcontrib;;
    zstyle+)
        LESSQUERY='^       zstyle\+ context'
        ZSHPAGE=zshcontrib;;
    file*)
        LESSQUERY='^FILES$'
        ZSHPAGE=zsh;;
    except*|throw|catch|always)
        LESSQUERY='^EXCEPTION HANDLING$'
        ZSHPAGE=zshcontrib;;
    *)
        LESSQUERY="$@";;
esac
man --pager="less -p'$LESSQUERY'" "$ZSHPAGE"

ポケットベルとしての使用量が少なく、カラーmanページのtermcapサポートが少なくなります。helpパラメータなしで実行する--helpか、-h予約語と組み込みコマンドを一覧表示します。これらの単語の1つを入力helpすると、適切なマニュアルページのエントリが表示されます。を使用するのではなく、速度/効率を最適化するために、特定のマニュアルページのエントリを調べて絞り込みましたman ... zshall。このヘルプ関数は、予約語や組み込みコマンド以外にも多くの機能を検索します。モジュール、モジュールコマンド、compadd、compsetなどの特定の重要な完了コマンドのエントリを検索します。

算術、完了、グロブ、配列、環境変数、例外処理などの多くのセクションは、、、、、、、と入力することhelp mathで表示されます。ヘルプ機能をより使いやすくするために、ワイルドカードと複数の一致用語があります。これは、210を少し超える一致条件を持つ、かなり単純なcaseステートメントです。一致するものがない場合は、デフォルトでzshall検索になります。一致条件が探しているものを示していないか、邪魔になっているように見える場合は、検索語の後に次のように入力して、すべての一致をバイパスします。help complethelp globhelp arrayshelp envhelp excepthelp --

Zshのマニュアルページでカバーされているものをたくさん含めましたが、アンダースコアの接頭辞付き補完関数などを含めることで、よりスマートに、またはより完全にすることができます。


編集:^[h(esc / alt + h)のバインドキー関数を作成しました。run-helpデフォルトでそこにバインドされており、これがこれに置き換わります。

_helpprefix(){
    OLDBUFFER="$BUFFER"
    zle backward-kill-word
    BUFFER="help $CUTBUFFER"
    zle accept-line
    zle -U "$OLDBUFFER"
}
zle -N _helpprefix _helpprefix
bindkey '^[h' _helpprefix

これが行うことは、最後に入力された単語を切り取り、その単語で実行helpしてから、元の行にプッシュバックすることです。readしたがって、これを使用して、次のようなコマンドでヘルプを実行できます。

find /usr -print0 | while IFS= read

のエントリを表示した後でも、コマンドの最後にいることになりますread

また、注目に値するのは、特定のビルトインのフラグに関するヘルプが必要な場合は-、コマンドの後にいつでも追加してタブを押すと、各フラグの簡単な説明が表示されます。たとえば、read -+タブはこれを出力します。

-A  -- first name is taken as an array
-E  -- input read is echoed
-d  -- specify delimiter to terminate input instead of newline
-e  -- input read is echoed and not assigned
-k  -- specify number of characters to read
-q  -- read y or n character from terminal
-r  -- raw mode
-s  -- suppress terminal echoing
-t  -- test if input is available before reading
-u  -- specify file descriptor to read from
-z  -- read entry from editor buffer stack
于 2015-09-30T00:25:00.293 に答える
5

Bashを使用すると、「ヘルプ」が機能します。

jcomeau @ intrepid:〜/ etc /apache2$ヘルプまで
まで:コマンドまで; コマンドを実行します。終わり
    テストが成功しない限り、コマンドを実行します。

    コマンドの最後のコマンドが
    `until'COMMANDSの終了ステータスがゼロではありません。

    終了ステータス:
    最後に実行されたコマンドのステータスを返します。
于 2010-12-10T03:35:56.390 に答える
4

これは過去により複雑でしたが、2017(Zsh v5.4)の時点で、非常に高速で便利なヘルプホットキーを指で取得するのは、以下を.zshrc(または同等のセットアップファイル)に入れるのと同じくらい簡単です。

unalias run-help
autoload run-help
bindkey "^[h" run-help

これで、呼び出そうとしている完全なコマンドの入力を開始できます(opts / argsに続く-たとえば、 "hello"-は無視されます):

print hello«Alt-h»

run-helpリストが表示されます。

print [ -abcDilmnNoOpPrsSz ] [ -u n ] [ -f format ] [ -C cols ]
  [ -v name ] [ -xX tabstop ] [ -R [ -en ]] [ arg ... ]
   With the `-f' option the arguments are printed as  described  by
   printf...

から抽出された、ほとんどのコマンドの短いリストが利用可能です zshbuiltins(1)。のシステムに109個のコマンドが記載されています /usr/share/zsh/5.4.2/help/。Zshのこの機能が大好きです!

すべてがrun-helpに統合されているわけではなく、zshall(1)探しているものを見つけるためにプルアップする必要がある場合があることに注意してください。

% run-help zargs
zargs is an autoload shell function
No manual entry for zargs

また、このAlt-h(または必要に応じて)パターンが、ZshコマンドなどのM-h通常の呼び出しに取って代わったことも素晴らしいことです。manそれ以外の:

% foo - # oh wait, how does this work
% foo -^C
% ^p^a  # recall, go to beginning of line
% man foo

今はただ:

% foo -«Alt-h»

Emacs / vtermなどのユーザーへの注意: M-hおそらくにバインドされてmark-paragraphいるため、このソリューションは機能しません。ただし、代わりにS-M-h(追加してShift)実行して、目的の動作を得ることができます。

于 2017-09-25T22:59:50.540 に答える
0

あなたのシェルのマンページはおそらくあなたに教えてくれるでしょう。

シェルで読み取る場合は、ポケットベルの検索機能(またはブラウザの検索機能)を使用します。そのためlessには/search string、検索を開始nし、次の一致に移動します。

于 2010-12-10T03:52:53.600 に答える
0

私にとっては、設定HELPDIRが鍵となります。

[ -d /usr/share/zsh/help ] && HELPDIR=/usr/share/zsh/help
[ -d /usr/local/share/zsh/help ] && HELPDIR=/usr/local/share/zsh/help

alias help=run-help
bindkey '^[^H' run-help  # ctrl alt h.  Because of zsh-vi-mode  delete-forward-word, I can't use ^[^H] here

終わり


run-helpをよりインテリジェントに使用するには

追加するだけです:

autoload -Uz run-help-sudo  # A very simple example
autoload -Uz run-help-ip  # A good example
autoload -Uz run-help-git

ctrl+alt+h 入力後にを押すsudo lsと、のマンページが表示されlsます。

ただし、これは私たちが期待するものを示していません(おそらくshiftin run-help?を使用しているためです)/usr/share/zsh/functions/Misc/run-help sudo ls

これを代わりに.zshrcに入れることができますautoload -Uz run-help-sudo

run-help-sudo(){
if [ $# -eq 0 ]; then
    man sudo
else
    man $1
fi
}

男よりtldrを好む?ビンを見つけたいですか?

h(){
    /usr/bin/tldr $1 | bat
    # todo https://zsh.sourceforge.io/Doc/Release/Expansion.html#Parameter-Expansion-Flags
    # parameter expansion
    VAR="$(/usr/bin/tldr $1)"
    if [[ ${VAR} == *"No tldr entry for"* ]]
    then
        PAGER=LESS run-help $1
    fi

    echo ''
    whence -ca $1

    # todo
    # man --pager="less --pattern 'MY_key word' " zshcontrib
    # man --pager="less --pattern 'keyboard definition'" zshcontrib

    # todo
    # use run-help-git etc
}

https://zsh.sourceforge.io/Doc/Release/User-Contributions.htmlから

cmdがファイルシステムパスの場合、最初に右端のコンポーネント(ファイル名)に縮小されます。

ヘルプは、HELPDIRパラメータで指定されたディレクトリでcmdという名前のファイルを探すことによって最初に検索されます。ファイルが見つからない場合は、run-help-cmdという名前のアシスタント関数、エイリアス、またはコマンドが検索されます。見つかった場合、アシスタントは現在のコマンドラインの残りの部分(コマンド名cmdの後のすべて)を引数として実行されます。ファイルもアシスタントも見つからない場合は、外部コマンド「mancmd」が実行されます。ファイルが見つからない場合は、run-help-という名前のアシスタント関数、エイリアス、またはコマンドが検索されcmdます

run-helpですか:

(多分この答えの機能をカバーしましたか?)

#!/bin/zsh
#
# Figure out where to get the best help, and get it.
#
# Install this function by placing it in your FPATH and then
# adding to your .zshrc the lines:
#   unalias run-help
#   autoload -Uz run-help
#

emulate -RL zsh

local HELPDIR=${HELPDIR:-/usr/share/zsh/help}

[[ $1 == "." ]] && 1="dot"
[[ $1 == ":" ]] && 1="colon"

# Check whether Util/helpfiles has been used to generate zsh help
if [[ $# == 0 || $1 == "-l" ]]
then
    if [[ -d $HELPDIR ]]
    then
    echo "Here is a list of topics for which special help is available:"
    echo ""
    print -rc $HELPDIR/*(:t)
    else
    echo "There is no list of special help topics available at this time."
    fi
    return 0
elif [[ -n "${HELPDIR:-}" && -r $HELPDIR/$1 && $1 != compctl ]]
then
    ${=PAGER:-/usr/bin/pager} $HELPDIR/$1
    return $?
fi

# No zsh help; use "whence" to figure out where else we might look
local what places noalias newline='
'
integer i=0 didman=0

places=( "${(@f)$(builtin whence -va $1)}" )
if [[ $places = *"not found"* && $1 != ${(Q)1} ]]; then
  # Different when unquoted, so try stripping quotes.
  places=( "${(@f)$(builtin whence -va ${(Q)1})}" )
  if (( ${#places} )); then
      set -- "${(Q)@}"
  fi
  # Quotation is significant to aliases, so suppress lookup.
  noalias=1
fi

{
while ((i++ < $#places))
do
    what=$places[$i]
    [[ -n $noalias && $what = *" is an alias "* ]] && continue
    builtin print -r $what
    case $what in
    (*( is an alias for (noglob|nocorrect))*)
    [[ ${what[(w)7]:t} != ${what[(w)1]} ]] &&
      run_help_orig_cmd=${what[(w)1]} run-help ${what[(w)7]:t}
    ;;
    (*( is an alias)*)
    [[ ${what[(w)6]:t} != ${what[(w)1]} ]] &&
      run_help_orig_cmd=${what[(w)1]} run-help ${what[(w)6]:t}
    ;;
    (*( is a * function))
    case ${what[(w)1]} in
    (comp*) man zshcompsys;;
    (zf*) man zshftpsys;;
    (run-help) man zshcontrib;;
    (*) builtin functions ${what[(w)1]} | ${=PAGER:-/usr/bin/pager};;
    esac;;
    (*( is a * builtin))
    case ${what[(w)1]} in
    (compctl) man zshcompctl;;
    (comp*) man zshcompwid;;
    (bindkey|vared|zle) man zshzle;;
    (*setopt) man zshoptions;;
    (cap|getcap|setcap) ;&
    (clone) ;&
    (ln|mkdir|mv|rm|rmdir|sync) ;&
    (sched) ;&
    (echotc|echoti|sched|stat|zprof|zpty|zsocket|zstyle|ztcp) man zshmodules;;
    (zftp) man zshftpsys;;
    (*) man zshbuiltins;;
    esac
    ;;
    (*( is hashed to *))
    man ${what[(w)-1]:t}
    ;;
    (*( is a reserved word))
    man zshmisc
    ;;
    (*)
    if ((! didman++))
    then
        if whence "run-help-$1:t" >/dev/null
        then
        local cmd_args
        builtin getln cmd_args
        builtin print -z "$cmd_args"
        cmd_args=( ${(z)cmd_args} )
        # Discard environment assignments, etc.
        while [[ $cmd_args[1] != ${run_help_orig_cmd:-$1} ]]
        do
            shift cmd_args || return 1
        done
        eval "run-help-$1:t ${(q@)cmd_args[2,-1]}"
        else
        POSIXLY_CORRECT=1 man $@:t
        fi
    fi
    ;;
    esac
    if ((i < $#places && ! didman))
    then
    builtin print -nP "%SPress any key for more help or q to quit%s"
    builtin read -k what
    [[ $what != $newline ]] && echo
    [[ $what == [qQ] ]] && break
    fi
done
} always {
  unset run_help_orig_cmd
}

于 2022-01-07T11:02:30.687 に答える