マルチOSを使用する場合は、記号より小さく拡張し、中括弧を拡張してください。

マルチOSを使用する場合は、記号より小さく拡張し、中括弧を拡張してください。

setopt multios以下を行うには、zsh multios set()を使用してください。

< in1 < in2 > out

そして:

< in > out1 > out2

これはとても便利です。

私はこの機能を中括弧拡張()とsetopt braceexpand組み合わせたいと思います。だから、次のように言います。

<in{1,2}^I

^Iテキストタブで完成システムを呼び出します。)次に拡張したいと思います。

<in1 <in2 

しかし、私が得るものは次のとおりです。

<in1 in2

この動作を修正する簡単な方法はありますか?

答え1

必要な動作は、既存の完了設定(compinstall数回のパスでゆっくりと生成されます)と自動的に機能するため、担当する特定の設定の範囲を絞り込むのに時間がかかりました。

コア機能は「完成者」によって提供されます_expand。次のように含めることができます。

zstyle ':completion:*' completer _expand

_completer完成ツールも使用している場合は、_expandまずそれらをリストする必要があります。たとえば、これは私の実際の完成者設定です:

zstyle ':completion:*' completer _expand _complete _ignored _match _approximate _prefix

次に、支柱の拡張を有効にするには有効にする必要がありますsubstitute。この機能はデフォルトで有効になっていますが、次のように明示的に設定できます。

zstyle ':completion:*' substitute 1

この機能をどこでも有効にしたくない場合は、次のように完全に無効にして有効にするだけです_expand

zstyle ':completion:*' substitute 0
zstyle ':completion:*:expand:*' substitute 1

私はこれをテストしました扱いにくいバージョン 4.3.11 および 5.0.2: 新しいシェルを起動し、以下を含むzsh -dfファイルをインポートします。

zstyle ':completion:*' completer _expand
zstyle ':completion:*' substitute 0
zstyle ':completion:*:expand:*' substitute 1
autoload -Uz compinit
compinit

(オプションmultiosno_ingore_brace(エイリアスbrace_expand)はデフォルト値なので、明示的に変更する必要はありません。)

cat <in{1,2}次に Tab キーを入力して押しました。 Tabを数回押す必要があります。各拡張バリアントに対して一度、「すべての拡張機能」項目に移動するには、もう一度タップします(上記の例では合計3回押します)。この特定のアイテムを表示する方法が見つかりませんでした。最初。

答え2

私が使用している全体の設定は次のとおりです。

zstyle ':completion:*' completer _complete _list _expand _oldlist _ignored _match _correct _approximate _prefix

代替設定はデフォルト設定の1です。

Chrisの答えと正しい方向についてのアドバイスを見て、これが私の構成に関連していることに気づきました。

フィニッシャーの順序と代替設定を調べ始めましたが、どちらも動作を変えませんでした。私の設定と比較するために、Chrisが提供した最小設定ファイルを使用して問題を私のバインドキーファイルに絞り込み、そこで何らかの理由で必要な拡張が失敗するという副作用がbindkey -vあります。^Iexpand-or-complete

viins引き続きキーマッピングを使用したいので、vicmd私の解決策はタブの動作を次のように変更することでしたcomplete-word

bindkey -M viins "\CI" complete-word
bindkey -M vicmd "\CI" complete-word

長すぎます。

viinsまたは、キーマップを使用している場合は、次のようにviicmd変更する必要があります。^Icomplete-word

bindkey -M viins "\CI" complete-word
bindkey -M vicmd "\CI" complete-word

関連情報