如何使用“source”补全忽略 PATH

如何使用“source”补全忽略 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 pwdsource但完成结果永远不会改变......


信息:

$ 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 开始,source已完成,_source不查找任何 zstyle。或许可以设置 所使用的样式_files,但即使按照 zsh 标准,这也是很 hackish 的。

我建议你_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

相关内容