2011-12-04 8 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に移植して回避することができます。 自動ロードbashcompinit bashcompinit – leo

答えて

2
compctl -K _my_cpl -S '' ls 

これは、あなたが尋ねた質問に答えるが、それはあなたがやりたいことのために十分に柔軟ではないかもしれません。特に、このアプローチでは、ディレクトリや通常のファイルに別の接尾辞を指定することはできません。それを望むなら、 "新しい"補完システムに切り替えてcompaddへの別の呼び出しを-S引数で行う必要があると思います。

関連する問題