通常のStackOverflowで再公開されました...
私はOSXの新しいZSHコンバーターです(プロンプトのgit状態がこの飛躍をもたらした主な原動力でした)。すべてがうまく進んでいるようですが、BASHに何かが落ちました。
BASHでは、SymfonyのCLIツールに基づいて構築されたCLI PHPスクリプトを実行します。
通常、次のコマンドを実行します。
$> php doctrine --configuration=../conf/doctrine.xml migrations:migrate
BASHでは、このキーを使用して内容の一部を入力しながらTAB目次../conf/doctrine.xml
を完成させることができます。
ZSHでは、TABディレクトリの入力中にキーを押しても効果はありません。
ZSHにディレクトリのように見えるほとんどすべてを完了しようとする動作を有効にするように設定できる設定や設定はありますか?
答え1
doctrine --configuration=
Zshは完成を選択するのに賢明しようとしますが、それ以降にファイル名を完成する必要があることを知っているほどスマートではありません。 Bashはこのコマンドを正しく解析するのに十分スマートであるか、ファイル名以外の操作を完了するにはあまりにも愚かです。
の完成関数を書くことができますdoctrine
。しかし、少し進んだ形です。完成した機能はやや不思議な傾向があります。 zshに代わる古くてシンプルで強力な完成システムcompctl
(manページに記載されている)を使用して完成器を作成する方が簡単かもしれませんzshcompctl
。
bash完了機能がある場合は、それをに含めることができますdoctrine
。autoload bashcompinit; bashcompinit
~/.zshrc
zsh wikiのbashから切り替え。
一部のキーをにバインドすると便利です_bash_complete-word
。このウィジェット(対話型コマンド)は、ウィジェットを呼び出したキーシーケンスの最後の文字(/
ディレクトリ、$
パラメータ名など)に基づいて、いくつかの組み込みの完成型を実行します。たとえば、bindkey '^X/' _bash_complete-word
yourに含めて~/.zshrc
からCtrl+を押して、X /どのような状況でもファイル名を完成させます(ファイル名の前の句読点がシェルの単語区切り文字ではない場合は、ファイル名の前にスペースを一時的に挿入する必要があります)。