3

ファイルを手動でgrepせずにコンソールから関数定義を取得するメカニズムはありますか?

既知の関数名の定義をすばやく見つける方法を探しています。

たとえば、「_kill」オートコンプリート関数がどこで定義されているか知りたいです。

詮索好きなルビーでは、次のようなものを手に入れることができます。

show-method find

差出人:app / models / search / object.rb @ 2行目:

行数:7

def self.find(conditions = {}, options = {})
  type = extract_object_type
  raise 'do not call Search::Object directly' if type == 'Object'
  search_logic = "Search::#{type.camelize}Logic".constantize.new(conditions, options)
  search_logic.process!
  search_logic.execute
end
4

2 に答える 2

2

zshの場合は、whence -fまたはを試してくださいtype -f。例えば:

myhost% whence -f _kill
_kill () {
    # undefined
    builtin autoload -XUz
}
于 2012-07-24T08:55:42.903 に答える
2

私にとって次の作品:

$ autoload +X _kill # important step
$ whence -v _kill
_kill is a shell function from /usr/share/zsh/5.2/functions/_kill

Zshドキュメント–9.1自動読み込み機能

myfuncを実行せずに自動ロードされた関数myfuncの定義をロードするには、次を使用します。

autoload +X myfunc

autoload +Xあなたも実際の機能を見ることができた後whence -f

$ whence -f _kill
_kill () {
    local curcontext="$curcontext" line state ret=1
    typeset -A opt_args
    _arguments -C '(-s -l 1)-n[specify signal number]:signal number' '(-n -l 1)-s[specify signal name]:signal:_signals -s' '(-n -s)-l[list signal names or numbers of specified signals]:*:signal:_signals' '(-n -s -l)1::signal:_signals -p -s' '*:processes:->processes' && ret=0
    if [[ -n "$state" ]]
    then
        local pgrp='process-groups:: _wanted '
        [[ -n "$opt_args[(i)-[ns]]${${(@)line:#--}}" && -prefix - ]] && pgrp+='-x '
        pgrp+="process-groups expl 'process-group' compadd - 0"
        _alternative 'processes:: _pids' 'jobs:: _jobs -t' $pgrp && ret=0
    fi
    return ret
}
于 2018-04-05T17:38:09.093 に答える