カーソルが単語の先頭にあるときと単語の終わりにあるときにタブの完成が異なるように動作するようにしたいと思います。
私は次のようなタブの完成サフィックスを持つシェルだけを見たことがあります。
$ tiff2␣
tiff2bw tiff2pdf tiff2ps tiff2rgba
しかし、時にはカラットが単語の先頭にあるときにタップでプレフィックスを完成させたいときもあります。つまり、2tiff
カーソルが単語の先頭にある場合は、次のように終わるすべてのコマンドに拡張したいと思います2tiff
。
$ ␣2tiff
raw2tiff gif2tiff bmp2tiff ppm2tiff pnmtotiff ras2tiff e2mtiff fax2tiff
魚場合によっては、次のようにします。
~> ␣2tiff
bmp2tiff (Executable, 17kB) ppm2tiff (Executable, 14kB)
fax2tiff (Executable, 18kB) ras2tiff (Executable, 14kB)
gif2tiff (Executable, 18kB) raw2tiff (Executable, 17kB)
また、カーソルを単語の末尾に移動する副作用があり、有効なサフィックスなしで完了した場合にのみ機能します。
~> ␣tiff
tiff2bw (Convert a color TIFF image to greyscale)
tiff2pdf (Convert a TIFF image to a PDF document)
tiff2ps (Convert a TIFF image to)
tiff2rgba (Convert a TIFF image to RGBA color space)
…and 10 more rows
bash
zsh
どちらの場合も、プレフィックスタブの完成を作成または実行する方法が見つかりません。
答え1
ジッシュ「新しい完成システム」を有効にして有効にした場合complete_in_word
オプション。
autoload -U compinit; compinit
setopt complete_in_word
次に、単語の任意の場所(開始を含む)を押すと、単語の中間Tab(またはカーソルが単語の先頭にある場合は先頭)の完成提案が表示されます。 (よりエキゾチックな設定では、補完機能は単語の他の場所にコンテンツを挿入することもできます。)
zshの別のオプションは、ワイルドカードの完成を有効にすることです。setopt glob_complete
。たとえば、単語の先頭を完成させるには(単語の末尾にカーソルを置く)と入力して*2tiff
押します。Tab
Tab既定の構成では、コマンドラインを押すと開始するのに完了するのではなくタブが挿入されるという制限があります。限界があると思います。expand-or-complete
;バインディングTabする場合menu-complete
またはcomplete-word
その後、コマンドラインの先頭でも実行されます。を使用すると、expand-or-complete
実際に単語の先頭で終わることができます。ただし、単語が in=2tiff
や などのコマンドラインで空でない最初の項目でない場合に限ります;2tiff
。