PATHを無視するために「ソース」補完を使用する方法

PATHを無視するために「ソース」補完を使用する方法

これについて「十分に詳細な」文書が見つからず、zstyle以前に誰もこの問題を経験していなかったことに驚きました。

タブ補完機能を使用すると、次のような結果が得られます。

source l<TAB>
l2ping*                  lefty*                   libwmf-fontmap*          locate*                  lpq.cups

これはもちろん/明らかに私のものです$PATH。しかし、私はsource使用したいと思います。地元のファイルを変更する方法がわかりません。

デフォルトでは、このコマンドはfile私が期待するように実行されるので、zstyle同じルールを使用するように言いたいと思います。

推測する私はそれを適用して:completion:*:killall:* 'ps -u $USER -o cmd h'それを行うことができますが、見苦しいので、zstyle組み込みオプションを探しています。

アイデア同様のものを適用できますが、':completion:*:cd:*' ignore-parents parent pwd完成しsourceた結果は決して変わりません。


情報:

$ zsh --version
zsh 4.3.17 (x86_64-redhat-linux-gnu)
$ zstyle
cache-path
        :completion::complete:* /home/kevin/.oh-my-zsh/cache/
command
        :completion:*:*:*:*:processes 'ps -u kevin -o pid,user,comm -w -w'
        :completion:*:killall:* 'ps -u $USER -o cmd h'
hosts
        :completion:*:hosts 192.168.0.101 git.bri.st.com crx672 bastion.inrialpes.fr 192.168.0.5 idrouille 129.88.69.73 idrouille.imag.fr koguis 192.168.1.4 127.0.0.1 koguis.imag.fr localhost crx672.cro.st.com 192.168.1.100 github.com 192.168.1.101 sourceware.org gnx2034.gnb.st.com gnx2528.gnb.st.com ctf.stri.pe 10.0.0.2 127.0.0.1 kevin localhost.localdomain localhost ::1 kevin localhost6.localdomain6 localhost6 kevin localhost
ignored-patterns
        :completion:*:*:*:users adm amanda apache avahi beaglidx bin cacti canna clamav daemon dbus distcache dovecot fax ftp games gdm gkrellmd gopher hacluster haldaemon halt hsqldb ident junkbust ldap lp mail mailman mailnull mldonkey mysql nagios named netdump news nfsnobody nobody nscd ntp nut nx openvpn operator pcap postfix postgres privoxy pulse pvm quagga radvd rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs
        :completion:*:functions '_*'
list-colors
        :completion:*:*:kill:*:processes '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
        :completion:* ''
menu
        :completion:*:*:*:*:* select
single-ignored
        * show
tag-order
        :completion:*:cd:* local-directories directory-stack path-directories
url-globbers
(eval)  :url-quote-magic 'zmodload -i zsh/parameter;
     reply=( noglob
         ${(k)galiases[(R)(* |)(noglob|urlglobber|globurl) *]:-}
         ${(k)aliases[(R)(* |)(noglob|urlglobber|globurl) *]:-} )'
url-local-schema
        :urlglobber ftp file
url-metas
        :url-quote-magic:* '*?[]^(|)~#{}='
url-other-schema
        :urlglobber http https ftp
url-seps
(eval)  :url-quote-magic:* 'reply=(";&<>${histchars[1]}")'
use-cache
        :completion::complete:* 1
user-commands
        :completion:*:*:git:* 'flow:description for foo'

ベストアンサー1

zsh 4.3.10以降、これはzstyleを見つけることなくsource実行されます。_source使用されるスタイルを設定することは可能かもしれませんが、_filesこれはzsh標準でもハッキングです。

_source必要に応じて関数を再構築することをお勧めします。長すぎません。たとえば、

_my_source () {
  if [[ CURRENT -ge 3 ]]; then
    compset -n 2
    _normal
  elif [[ $service = . ]]; then
      _files -W path
  else
    _files
  fi
}
compdef _my_source source

おすすめ記事