2011-12-04 57 views
6

我使用compctl -K _my_cpl ls將我的自動完成功能掛接到ls命令。該函數返回索引文件中的名稱列表。如何從zsh自動完成功能中刪除額外的空間?

但是,每次完成後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 
+0

zsh有一個bashcompinit模塊。我可以將我的bash完整函數移植到zsh中作爲解決方法。 autoload bashcompinit bashcompinit – leo

回答

2
compctl -K _my_cpl -S '' ls 

這回答你問的問題,但它可能不是你想要做的事情有足夠的靈活性。特別是,這種方法不允許您爲目錄和常規文件指定不同的後綴。如果您需要,我認爲您需要切換到「新」完成系統,並使用不同的-S參數分別撥打compadd

相關問題