woo*_*ngs 15 bash shell tab-completion
我正在使用 bash,我想知道 bash 或其他 shell 中是否有任何插件允许我执行此操作
cat tfnislong.txt+[tab]完成cat ThisFileNameIsSoLong.txt就像 Sublime Text 中的选项卡完成一样。
mwm*_*mwm 11
我知道https://github.com/mgalgs/fuzzy_bash_completion这是一堆与complete.
我认为我们可能会做得更好一些,更简洁。是时候打开你的 .bashrc 或 .profile ...
我们使用的基本钩子是这样的:
complete -o nospace -o filenames -F fuzzypath cd ls cat
-F 选项表示使用 shell 函数进行制表符补全,其中选项设置在COMPREPLY变量中。例如:
函数模糊路径(){
如果 [ -z $2 ]
然后
COMPREPLY=(`ls`)
别的
DIRPATH=`echo "$2" | gsed 's|[^/]*$||'`
BASENAME=`echo "$2" | gsed 's|.*/||'`
FILTER=`echo "$BASENAME" | gsed 's|.|\0.*|g'`
COMPREPLY=( `ls $DIRPATH | grep -i "$FILTER" | gsed "s|^|$DIRPATH|g"` )
菲
}
DIRPATH您正在输入的路径上的最后一个 / 之前的所有内容在哪里,以及BASENAME您的光标当前所在的位置。
FILTER是模糊性的来源。基本上,在每个字符之间BASENAME插入.*并生成我们的模糊正则表达式。
剩下的就是将正则表达式与 ls 结合起来产生COMPREPLY. 您可能会在这里找到更多聪明的事情要做,也许使用find.
我还发现http://fahdshariff.blogspot.com/2011/04/writing-your-own-bash-completion.html很有用。
| 归档时间: |
|
| 查看次数: |
5322 次 |
| 最近记录: |