加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

自动完成 – 如何从zsh自动完成功能中删除其他空间?

发布时间:2020-12-14 01:54:26 所属栏目:Linux 来源:网络整理
导读:我使用compctl -K _my_cpl ls将我的自动完成功能挂钩到ls命令.该函数返回索引文件中的名称列表. 但是,zsh总是在每次完成后添加一个空格.如果我想自动完成多级目录,我每次都要删除一个空格.有没有办法删除额外的空间,就像bash complete命令中的-o nospace选项
我使用compctl -K _my_cpl ls将我的自动完成功能挂钩到ls命令.该函数返回索引文件中的名称列表.

但是,zsh总是在每次完成后添加一个空格.如果我想自动完成多级目录,我每次都要删除一个空格.有没有办法删除额外的空间,就像bash complete命令中的-o nospace选项一样?

我测试了zstyle’:completion:*’add-space false命令,它不起作用.谢谢.

_my_cpl() {
local cur last opts

# current word in command line.
read -cA cur
last=$cur[-1]

# grep all directories and file names under current directory level.
opts=`egrep "${last}[^/]*[$|/]*" ~/index -o |uniq`

reply=($=opts)
}
compctl -K _my_cpl ls

解决方法

compctl -K _my_cpl -S '' ls

这回答了您提出的问题,但对于您想要做的事情可能不够灵活.特别是,此方法不允许您为目录和常规文件指定不同的后缀.如果你想要,我认为你需要切换到“新”完成系统,并使用不同的-S参数单独调用compadd.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读