2009年5月4日

|Script|在控制台使用 cd 命令时,用拼音自动补全中文路径

在控制台使用 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
---------------------------------

没有评论: