LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1078|回复: 8

加快pacman -S的自动补全...

[复制链接]
发表于 2009-4-15 02:28:26 | 显示全部楼层 |阅读模式
原来那个速度,恶心死的...
每次按tab自动补全都要执行一系列的运算...
其实就是把原来的语句生成的东西换成固定文件,这样只需要在每次pacman -Sy之后更新那个固定的文件即可...
毕竟一个cat比两个嵌套的for要快多了...

pacmancompletion.bash
  1. #!/bin/bash

  2. export enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' )
  3. export available_pkgs=$( for r in $enabled_repos; do echo /var/lib/pacman/sync/$r/*; done )
  4. for i in $available_pkgs; do j=${i##*/}; echo ${j%-*-*}; done > /var/lib/pacman/availpackage
复制代码


pacmancompletion.patch
  1. diff -Naur old/pacman new/pacman
  2. --- old/pacman        2009-04-15 02:08:18.973646119 +0800
  3. +++ new/pacman        2009-04-15 02:05:02.209644337 +0800
  4. @@ -45,11 +45,13 @@
  5.    #find balks easilly on a find /foo/*/* type dir, especially one like
  6.    #   /var/lib/pacman/*/*
  7.    # This little change-up removes the find *and* only uses enabled repos
  8. -  local available_pkgs
  9. -  local enabled_repos
  10. -  enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' )
  11. -  available_pkgs=$( for r in $enabled_repos; do echo /var/lib/pacman/sync/$r/*; done )
  12. -  COMPREPLY=( $( compgen -W "$( for i in $available_pkgs; do j=${i##*/}; echo ${j%-*-*}; done )" -- $cur ) )
  13. +#  local available_pkgs
  14. +#  local enabled_repos
  15. +#  enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' )
  16. +#  available_pkgs=$( for r in $enabled_repos; do echo /var/lib/pacman/sync/$r/*; done )
  17. +#  COMPREPLY=( $( compgen -W "$( for i in $available_pkgs; do j=${i##*/}; echo ${j%-*-*}; done )" -- $cur ) )
  18. +  COMPREPLY=( $( compgen -W "$( cat /var/lib/pacman/availpackage )" -- $cur ) )
  19. +
  20. }

  21. _installed_groups ()
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2009-4-15 02:38:28 | 显示全部楼层
不提交给官方?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-15 03:43:20 | 显示全部楼层
Post by zhuqin_83;1974510
不提交给官方?


先看看大家的反映再说...
很简单的替换成文件而已...
忘了说那个pacman是/etc/bash_completion.d/下的那个...
照这方法来的话还有很多需要补全的东西可以用文件来做...
我普通用户pacman -S然后两下tab,4000+个包available,改前和改后还是有一定变化的...
man的补全也挺大,我机器上10000+...

如果觉得手动更新麻烦那文件的话,就把pacmancompletion.bash放到/etc/cron.daily里吧...
回复 支持 反对

使用道具 举报

发表于 2009-4-15 08:31:52 | 显示全部楼层
我体会到zsh的强大了
回复 支持 反对

使用道具 举报

发表于 2009-4-15 09:20:16 | 显示全部楼层
同用zsh……
回复 支持 反对

使用道具 举报

发表于 2009-4-15 09:47:00 | 显示全部楼层
ZSH,感觉很兴奋
回复 支持 反对

使用道具 举报

发表于 2009-4-15 11:56:06 | 显示全部楼层
o ye ,用上了
回复 支持 反对

使用道具 举报

发表于 2009-4-15 12:45:13 | 显示全部楼层
Post by saiddy;1974550
同用zsh……


还是zsh好啊
回复 支持 反对

使用道具 举报

发表于 2009-4-15 13:19:29 | 显示全部楼层
同用zsh……
还是zsh好啊
ZSH,感觉很兴奋
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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