我正在尝试向自定义vs
函数添加完成,该函数基本上打开与参数匹配的第一个文件名。
可选(如果您想了解有关此功能的更多信息,请在此处找到我的中文帖子=> https://medium.com/@victor.boissiere/how-to-quickly-open-files-with-your-editor-1a51b3fe21bf)
在我当前的文件夹中,我有以下内容:
./example.sh
./custom/directory.sh
./custom/example.sh
vs direct<TAB>
=&gt;完成custom/directory.sh
成功
vs example<TAB>
=&gt; vs
为什么删除参数,并且不允许我在example.sh
和custom/example.sh
之间进行选择?
_vs() {
local curcontext="$curcontext" state line expl
_arguments -C \
'*:: :->open_files'
case "$state" in
open_files)
local file=${words[CURRENT]}
compadd -U - `find . -type f -ipath "*$file*" | sed "s|^\./||"`
;;
esac
return 0
}
compdef _vs vs
答案 0 :(得分:0)
我刚刚找到了解决方案,感谢这篇文章=&gt; https://superuser.com/questions/1264778/changing-to-a-directory-found-somewhere-in-the-tree-hierarchy/1278919#1278919
我只需要添加compstate[insert]=menu # no expand
_vs() {
local curcontext="$curcontext" state line expl
_arguments -C \
'*:: :->open_files'
case "$state" in
open_files)
local file=${words[CURRENT]}
compadd -U - `find . -type f -ipath "*$file*" | sed "s|^\./||"`
compstate[insert]=menu # add this
;;
esac
return 0
}
compdef _vs vs