
ファイル名引数を1つ(またはそれ以上)として使用するいくつかのプログラムがあります。
path/to/file
scp:path/to/file.ext
ark:/abs/path/to/file.ext
いくつかのキーワードの後にコロンを追加した後にzshフルファイル名を作成できますか?
Bashでは、:
COMP_WORDBREAKS変数を追加してこれを実行できます。
Gillesのおかげでこのように働くことができました。
$ cat ~/.zshrc
...
function aftercolon() {
if compset -P 1 '*:'; then
_files "$expl[@]"
else
_files "$expl[@]"
fi
}
autoload -Uz compinit
compinit
compdef aftercolon hello olleh
これでコマンドが実行され、hello
完了olleh
後:期待どおりに機能します。
私は次の理由でより良い方法があるかもしれないと思います。
このコマンドはプレフィックスのないファイル名も使用するため、奇妙なif / else句があります。
この種のパラメータを使用するコマンドが多いため、各コマンドの名前を追加する必要があります。
可能であれば、すべての命令に適用したいと思います。より簡単な場合は、すべてのコマンドにそれを適用できます。
-
必要な方のためにもう少し簡単な方法を見つけました。 .zshrc ファイルに以下を挿入します。
function aftercolon() {
compset -P '*:' # strip stuff up to last :
compset -S ':*' # strip stuff after next colon
_default -r '\-\n\t /:' "$@" # do default completion on this
}
compdef aftercolon cmd1 cmd2 cmd3 cmd4
# to apply to all commands
compdef aftercolon -first- # https://superuser.com/questions/1080452/add-strings-to-zsh-tab-completion-for-all-commands-and-arguments
答え1
これは古い投稿ですが、要約すると、.zshrcにあります。
function aftercolon() {
compset -P '*:' # strip stuff up to last :
compset -S ':*' # strip stuff after next colon
_default -r '\-\n\t /:' "$@" # do default completion on this
}
compdef aftercolon -first-
これで、zshのコロンの後にファイル名を完成させることができます。
$ scp:/path/to/somef<TAB> # now filename completion works after colon