设为首页 收藏本站
查看: 624|回复: 0

开启终极效率shell之旅(1)

[复制链接]

尚未签到

发表于 2018-8-23 07:54:09 | 显示全部楼层 |阅读模式
# Incremental completion for zsh  
# by y.fujii , public domain
  

  

  
autoload -U compinit
  
zle -N self-insert self-insert-incr
  
zle -N vi-cmd-mode-incr
  
zle -N vi-backward-delete-char-incr
  
zle -N backward-delete-char-incr
  
zle -N expand-or-complete-prefix-incr
  
compinit
  

  
bindkey -M viins '^[' vi-cmd-mode-incr
  
bindkey -M viins '^h' vi-backward-delete-char-incr
  
bindkey -M viins '^?' vi-backward-delete-char-incr
  
bindkey -M viins '^i' expand-or-complete-prefix-incr
  
bindkey -M emacs '^h' backward-delete-char-incr
  
bindkey -M emacs '^?' backward-delete-char-incr
  
bindkey -M emacs '^i' expand-or-complete-prefix-incr
  

  
unsetopt automenu
  
compdef -d scp
  
compdef -d tar
  
compdef -d make
  
compdef -d java
  
compdef -d svn
  
compdef -d cvs
  

  
# TODO:
  
#     cp dir/
  

  
now_predict=0
  

  
function limit-completion
  
{
  if ((compstate[nmatches]  6)); then
  compstate
    =""
      zle -M "too many matches."
      fi
      
    }
      

      
    function correct-prediction
      
    {
      if ((now_predict == 1)); then
      if [[ "$BUFFER" != "$buffer_prd" ]] || ((CURSOR != cursor_org)); then
      now_predict=0
      fi
      fi
      
    }
      

      
    function remove-prediction
      
    {
      if ((now_predict == 1)); then
      BUFFER="$buffer_org"
      now_predict=0
      fi
      
    }
      

      
    function show-prediction
      
    {
      # assert(now_predict == 0)
      if
      ((PENDING == 0)) &&
      ((CURSOR > 1)) &&
      [[ "$PREBUFFER" == "" ]] &&
      [[ "$BUFFER[CURSOR]" != " " ]]
      then
      cursor_org="$CURSOR"
      buffer_org="$BUFFER"
      comppostfuncs=(limit-completion)
      zle complete-word
      cursor_prd="$CURSOR"
      buffer_prd="$BUFFER"
      if [[ "$buffer_org[1,cursor_org]" == "$buffer_prd[1,cursor_org]" ]]; then
      CURSOR="$cursor_org"
      if [[ "$buffer_org" != "$buffer_prd" ]] || ((cursor_org != cursor_prd)); then
      now_predict=1
      fi
      else
      BUFFER="$buffer_org"
      CURSOR="$cursor_org"
      fi
      echo -n "\e[32m"
      else
      zle -M ""
      fi
      
    }
      

      
    function preexec
      
    {
      echo -n "\e[39m"
      
    }
      

      
    function vi-cmd-mode-incr
      
    {
      correct-prediction
      remove-prediction
      zle vi-cmd-mode
      
    }
      

      
    function self-insert-incr
      
    {
      correct-prediction
      remove-prediction
      if zle .self-insert; then
      show-prediction
      fi
      
    }
      

      
    function vi-backward-delete-char-incr
      
    {
      correct-prediction
      remove-prediction
      if zle vi-backward-delete-char; then
      show-prediction
      fi
      
    }
      

      
    function backward-delete-char-incr
      
    {
      correct-prediction
      remove-prediction
      if zle backward-delete-char; then
      show-prediction
      fi
      
    }
      

      
    function expand-or-complete-prefix-incr
      
    {
      correct-prediction
      if ((now_predict == 1)); then
      CURSOR="$cursor_prd"
      now_predict=0
      comppostfuncs=(limit-completion)
      zle list-choices
      else
      remove-prediction
      zle expand-or-complete-prefix
      fi
      
    }



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-555308-1-1.html 上篇帖子: 25道shell面试题 下篇帖子: SHELL编程四剑客练习--sed
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表