在控制台使用 cd 命令时,用拼音自动补全中文路径
实验目录如下:
biff@lenovo:/domain/WorkSpace$ ls
SVN培训  全球眼  浙江建行  浙江农信
使用: (输完后按 TAB 键自动补全)
  cd S     <tab>             进入[SVN培训]
  cd q     <tab>             进入[全球眼]
   cd z     <tab>             自动补全[浙江]
  cd zj    <tab><tab>        提示[浙江建行 浙江农信]备选
  cd 浙江j <tab>             进入[浙江建行]
  cd zjj   <tab>             进入[浙江建行]
  cd zj1   <tab>             进入[浙江建行]
   cd zj2   <tab>             进入[浙江农信]
配置:
   找到 /etc/bash_completion 中 _file_dir() 函数,将
      COMPREPLY=( "${COMPREPLY[@]}" "${toks[@]}" )
   改成 ( 其中chsdir为本脚的名字,注意指定路径和赋执行权限 )
       chs=($(chsdir "x$1" "$cur"))
      COMPREPLY=( "${COMPREPLY[@]}" "${toks[@]}" "${chs[@]}" )
   ( 这是最简单的,但也是最不安全的。还有其它的方法,比如将这段函数粘到$HOME/.bashrc文件中,在引用/etc/bash_completion之后再覆盖性的定义一遍。或者另起一个文件保存这段脚本,然后在.bashrc中用 . $HOME/bin/myscript.sh 导入一遍。注意小点点。)
    ( 上面的修改只对 cd 命令生效,如果其它地方也需要补全,比如vim,还要用相同的方法处理 _filedir_xspec() 函数 )
问题:
 1、多音字无法解决,比如[浙江建行]要输入[zjjx];
 2、可以用数字序号定位,但是现在序号有乱序问题,思考中...
 有问题邮件联系!
祝Linux之行一路顺风!
版本更新在: https://groups.google.com/group/binsos/browse_thread/thread/1951b77a2cf4bfab
---------------------------------
    google talk
shaozx@gmail.com
---------------------------------
 
 
没有评论:
发表评论