ZSH 补全用 compadd -U 删除参数
ZSH completion removes the argument with compadd -U
我正在尝试向自定义 vs
函数添加完成,该函数基本上打开与参数匹配的第一个文件名。
可选(如果您想了解有关此功能的更多信息,可以在此处找到我的媒介 post => 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>
=> 完成 custom/directory.sh
成功
vs example<TAB>
=> 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
多亏了这个 post => 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
我正在尝试向自定义 vs
函数添加完成,该函数基本上打开与参数匹配的第一个文件名。
可选(如果您想了解有关此功能的更多信息,可以在此处找到我的媒介 post => 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>
=> 完成 custom/directory.sh
成功
vs example<TAB>
=> 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
多亏了这个 post => 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