【问题标题】:How to remove an additional space from zsh auto complete function?如何从 zsh 自动完成功能中删除额外的空间?
【发布时间】:2011-12-04 02:48:56
【问题描述】:

我使用compctl -K _my_cpl ls 将我的自动完成功能与ls 命令挂钩。该函数从索引文件中返回名称列表。

但是,zsh 总是在每次完成后添加一个空格。如果我想自动完成多级目录,我每次都必须删除一个空格。 有没有办法像 bash 完成命令中的 -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

【问题讨论】:

  • zsh 有一个 bashcompinit 模块。我可以将我的 bash 完整功能移植到 zsh 作为解决方法。自动加载 bashcompinit bashcompinit

标签: autocomplete zsh


【解决方案1】:
compctl -K _my_cpl -S '' ls

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

【讨论】:

    猜你喜欢
    • 2014-06-17
    • 2019-05-27
    • 2022-08-15
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2020-10-19
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多