A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始



今天这个插件会助你一臂之力,加油,骚年!


今天说的这个东东看上去确实有尿性,不管我如何修饰都抵不过它的一张效果图.

想要你的shell有这样的效果,首先满足下面的条件:
1  你用oh-my-zsh 来协助你完成 zsh 的配置
配置方法请转到
Oh-my-zsh 配置 zsh 提高 shell 逼格
http://bbs.itheima.com/thread-252568-1-1.html
(出处: 黑马程序员IT技术论坛)
2  你开启了zsh
3  你下载了这个 插件
4  你把插件执行shell 写到了你的 .zshrc 配置文件中

把incr.zsh的脚本贴在下面,因为被墙,所以可以复制下面的脚本


  1. # Incremental completion for zsh
  2. # by y.fujii <y-fujii at mimosa-pudica.net>, public domain
  3. autoload -U compinit
  4. zle -N self-insert self-insert-incr
  5. zle -N vi-cmd-mode-incr
  6. zle -N vi-backward-delete-char-incr
  7. zle -N backward-delete-char-incr
  8. zle -N expand-or-complete-prefix-incr
  9. compinit
  10. bindkey -M viins '^[' vi-cmd-mode-incr
  11. bindkey -M viins '^h' vi-backward-delete-char-incr
  12. bindkey -M viins '^?' vi-backward-delete-char-incr
  13. bindkey -M viins '^i' expand-or-complete-prefix-incr
  14. bindkey -M emacs '^h' backward-delete-char-incr
  15. bindkey -M emacs '^?' backward-delete-char-incr
  16. bindkey -M emacs '^i' expand-or-complete-prefix-incr
  17. unsetopt automenu
  18. compdef -d scp
  19. compdef -d tar
  20. compdef -d make
  21. compdef -d java
  22. compdef -d svn
  23. compdef -d cvs
  24. # TODO:
  25. #     cp dir/
  26. now_predict=0
  27. function limit-completion
  28. {
  29.         if ((compstate[nmatches] <= 1)); then
  30.                 zle -M ""
  31.         elif ((compstate[list_lines] > 6)); then
  32.                 compstate[list]=""
  33.                 zle -M "too many matches."
  34.         fi
  35. }
  36. function correct-prediction
  37. {
  38.         if ((now_predict == 1)); then
  39.                 if [[ "$BUFFER" != "$buffer_prd" ]] || ((CURSOR != cursor_org)); then
  40.                         now_predict=0
  41.                 fi
  42.         fi
  43. }
  44. function remove-prediction
  45. {
  46.         if ((now_predict == 1)); then
  47.                 BUFFER="$buffer_org"
  48.                 now_predict=0
  49.         fi
  50. }
  51. function show-prediction
  52. {
  53.         # assert(now_predict == 0)
  54.         if
  55.                 ((PENDING == 0)) &&
  56.                 ((CURSOR > 1)) &&
  57.                 [[ "$PREBUFFER" == "" ]] &&
  58.                 [[ "$BUFFER[CURSOR]" != " " ]]
  59.         then
  60.                 cursor_org="$CURSOR"
  61.                 buffer_org="$BUFFER"
  62.                 comppostfuncs=(limit-completion)
  63.                 zle complete-word
  64.                 cursor_prd="$CURSOR"
  65.                 buffer_prd="$BUFFER"
  66.                 if [[ "$buffer_org[1,cursor_org]" == "$buffer_prd[1,cursor_org]" ]]; then
  67.                         CURSOR="$cursor_org"
  68.                         if [[ "$buffer_org" != "$buffer_prd" ]] || ((cursor_org != cursor_prd)); then
  69.                                 now_predict=1
  70.                         fi
  71.                 else
  72.                         BUFFER="$buffer_org"
  73.                         CURSOR="$cursor_org"
  74.                 fi
  75.                 echo -n "\e[32m"
  76.         else
  77.                 zle -M ""
  78.         fi
  79. }
  80. function preexec
  81. {
  82.         echo -n "\e[39m"
  83. }
  84. function vi-cmd-mode-incr
  85. {
  86.         correct-prediction
  87.         remove-prediction
  88.         zle vi-cmd-mode
  89. }
  90. function self-insert-incr
  91. {
  92.         correct-prediction
  93.         remove-prediction
  94.         if zle .self-insert; then
  95.                 show-prediction
  96.         fi
  97. }
  98. function vi-backward-delete-char-incr
  99. {
  100.         correct-prediction
  101.         remove-prediction
  102.         if zle vi-backward-delete-char; then
  103.                 show-prediction
  104.         fi
  105. }
  106. function backward-delete-char-incr
  107. {
  108.         correct-prediction
  109.         remove-prediction
  110.         if zle backward-delete-char; then
  111.                 show-prediction
  112.         fi
  113. }
  114. function expand-or-complete-prefix-incr
  115. {
  116.         correct-prediction
  117.         if ((now_predict == 1)); then
  118.                 CURSOR="$cursor_prd"
  119.                 now_predict=0
  120.                 comppostfuncs=(limit-completion)
  121.                 zle list-choices
  122.         else
  123.                 remove-prediction
  124.                 zle expand-or-complete-prefix
  125.         fi
  126. }
复制代码
从上面把这个 shell 文件内容copy 下来,然后放到一个指定的目录下..我推荐oh-my-zsh 目录的插件目录下

然后新建一个 incr 目录(sudo mkdir incr),最后在 incr 目录下创建一个shell 文档,把你copy 的内容放进去.
上面的操作有几个注意点: 创建文件夹用sudo 权限.

然后是配置 .zshrc 文件:
➜ >nano .zshrc

然后插入一句下面的 shell 脚本:
source ~/.oh-my-zsh/plugins/incr/incr*.zsh
我把她放在了配置文件最下方.
请注意上面的路径地址,你要改成你的 incr*.zsh 所在的目录
然后保存 .zshrc 配置文件,这时如果你想让它立即生效
➜ >source .zshrc
这样就可以了.其他 shell 窗口可以关闭重新打开及有了补全提示.

它不仅仅是对指令的补全,而且也会补全路径,文件名,最重要的是实时的,掌握好你的 tab 键,去飞吧!


此教程需要一定的linux基础,懂得linux命令

1 个回复

倒序浏览
just do it
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马