魚のような高速/控えめな zsh 用の自己暗示。
入力すると、履歴と入力候補に基づいてコマンドが提案されます。
要件: Zsh v4.3.11 以降
INSTALL.mdを参照してください。
コマンドを入力すると、カーソルの後に入力候補が落ち着いた灰色で表示されます。この色は、 ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
変数を設定することで変更できます。構成を参照してください。
バッファの最後にカーソルを置いて→キー ( forward-char
ウィジェット) またはEnd ( end-of-line
ウィジェット) を押すと、提案が受け入れられ、コマンド ライン バッファの内容が提案で置き換えられます。
forward-word
ウィジェットを呼び出すと、カーソルが移動する位置までの提案が部分的に受け入れられます。
デフォルトのグローバル構成変数をオーバーライドすることもできます。これらの変数のデフォルト値はここで確認できます。
注: Oh My Zsh を使用している場合は、この構成を$ZSH_CUSTOM
ディレクトリ内のファイルに置くことができます。内部のオーバーライドに関するコメントを参照してください。
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
を設定して、提案が表示されるスタイルを構成します。デフォルトはfg=8
で、前景色を 256 色パレットの色 8 に設定します。端末が 8 色のみをサポートしている場合は、0 ~ 7 の数値を使用する必要があります。
背景色も設定でき、提案を太字、下線付き、または目立つようにスタイル設定できます。たとえば、これはシアンの背景に太字の下線付きのピンクのテキストで候補を表示します。
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE= " fg=#ff00ff,bg=cyan,bold,underline "
詳細については、zsh マニュアル ( man zshzle
またはオンライン) の「文字の強調表示」セクションを参照してください。
注:一部の iTerm2 ユーザーは、提案が表示されないと報告しています。これに影響がある場合は、問題の原因は間違ったカラー設定である可能性があります。これを修正するには、iTerm2 の設定に移動し、プロファイル > 色に移動し、基本色 > 背景と ANSI カラー > 明るい黒の色が異なることを確認します。
ZSH_AUTOSUGGEST_STRATEGY
は、提案の生成方法を指定する配列です。配列内の戦略は、提案が見つかるまで連続して試行されます。現在、次の 3 つの組み込み戦略から選択できます。
history
: 履歴から最新の一致を選択します。completion
: タブ補完が提案する内容に基づいて提案を選択します。 (4.0.1 以降 zsh に含まれるzpty
モジュールが必要です)match_prev_cmd
: history
と似ていますが、直前の履歴項目が最後に実行されたコマンドと一致する最新の一致を選択します (詳細)。この戦略は、 HIST_IGNORE_ALL_DUPS
やHIST_EXPIRE_DUPS_FIRST
などの履歴順序を保持しない ZSH オプションでは期待どおりに機能しないことに注意してください。たとえば、 ZSH_AUTOSUGGEST_STRATEGY=(history completion)
を設定すると、最初に履歴から候補を検索しようとしますが、一致するものが見つからない場合は、補完エンジンから候補を検索します。
このプラグインは、特定の zle ウィジェットが呼び出されたときにカスタム動作をトリガーすることで機能します。これらの配列からウィジェットを追加または削除して、このプラグインの動作を変更できます。
ZSH_AUTOSUGGEST_CLEAR_WIDGETS
: この配列内のウィジェットは、呼び出されると提案をクリアします。ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
: この配列内のウィジェットは、呼び出されたときに提案を受け入れます。ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
: この配列内のウィジェットは、呼び出されたときに提案を実行します。ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
: この配列内のウィジェットは、呼び出されたときに提案を部分的に受け入れます。ZSH_AUTOSUGGEST_IGNORE_WIDGETS
: この配列内のウィジェットはカスタム動作をトリガーしません。バッファーを変更し、これらの配列のいずれにも見つからないウィジェットは、呼び出された後に新しい提案をフェッチします。
注:ウィジェットは、上記の配列の複数に属すべきではありません。
ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
整数値に設定すると、大きなバッファーの自動提案が無効になります。デフォルトは未設定です。これは、任意のバッファ サイズに対して自動提案が試行されることを意味します。推奨値は 20 です。これは、端末に大量のテキストを貼り付けるときに、長すぎる文字列に対する自動提案のトリガーを避けるために役立ちます。
zsh バージョン 5.0.8 以降では、提案はデフォルトで非同期にフェッチされます。非同期提案を無効にして同期的にフェッチするには、プラグインを取得した後にunset ZSH_AUTOSUGGEST_USE_ASYNC
。
あるいは、5.0.8 より古いバージョンの zsh を使用していて、非同期モードを有効にしたい場合は、プラグインを取得した後にZSH_AUTOSUGGEST_USE_ASYNC
変数を設定します (任意に設定できます)。 5.0.8 より古いバージョンの zsh にはバグがあることに注意してください。提案を非同期で取得した直後にCtrl + C を押してもプロンプトをリセットできません。
各 precmd での自動ウィジェット再バインドを無効にするには、 ZSH_AUTOSUGGEST_MANUAL_REBIND
(任意に設定可能) を設定します。これによりパフォーマンスが大幅に向上しますが、ウィジェット リストのいずれかが変更された場合、または自分または別のプラグインが自動提案ウィジェットのいずれかをラップしている場合は、自分で再バインドを処理する必要があります。ウィジェットを再バインドするには、 _zsh_autosuggest_bind_widgets
を実行します。
ZSH_AUTOSUGGEST_HISTORY_IGNORE
グロブ パターンに設定すると、パターンに一致する履歴エントリの提案が提供されなくなります。たとえば、 "cd *"
に設定すると、履歴からcd
コマンドが提案されなくなります。または、 "?(#c50,)"
に設定すると、50 文字以上のものが提案されなくなります。
注:これは、 history
とmatch_prev_cmd
提案戦略にのみ影響します。
ZSH_AUTOSUGGEST_COMPLETION_IGNORE
glob パターンに設定すると、バッファーがそのパターンに一致する場合に完了候補が表示されなくなります。たとえば、 "git *"
に設定すると、git サブコマンドの補完候補が無効になります。
注:これはcompletion
提案戦略にのみ影響します。
このプラグインは、 bindkey
で使用できるいくつかのウィジェットを提供します。
autosuggest-accept
: 現在の提案を受け入れます。autosuggest-execute
: 現在の提案を受け入れて実行します。autosuggest-clear
: 現在の提案をクリアします。autosuggest-fetch
: 提案を取得します (提案が無効になっている場合でも機能します)。autosuggest-disable
: 提案を無効にします。autosuggest-enable
: 提案を再度有効にします。autosuggest-toggle
: 提案の有効/無効を切り替えます。たとえば、これによりCtrl + Spaceがバインドされ、現在の提案が受け入れられます。
bindkey ' ^ ' autosuggest-accept
問題がある場合は、GitHub の問題のリストを検索して、他の人がすでに報告していないかどうかを確認してください。
問題を報告する前に、問題を切り分けるために、このプラグインと競合する可能性のある構成セクションおよび他のプラグインを一時的に無効にしてみてください。
問題を報告するときは、次のことを含めてください。
.zshrc
構成。これが何を意味するかについては、このコメントを参照してください。zsh --version
)このプラグインを参照しているコードを~/.zshrc
から削除します。
ハードドライブから git リポジトリを削除します
rm -rf ~ /.zsh/zsh-autosuggestions # Or wherever you installed
src/
内のソース ファイルを編集します。 make
実行して、これらのソース ファイルからzsh-autosuggestions.zsh
をビルドします。
プルリクエストは大歓迎です!プル リクエストを送信する場合は、次のことを行ってください。
develop
ブランチ ( master
ではない) にマージするリクエストテストは、 rspec
フレームワークを使用して Ruby で作成されます。彼らはtmux
使用して疑似端末を駆動し、シミュレートされたキーストロークを送信し、端末のコンテンツに対してアサーションを行います。
テスト ファイルはspec/
に存在します。テストを実行するには、 make test
実行します。特定のテストを実行するには、 TESTS=spec/some_spec.rb make test
を実行します。 TEST_ZSH_BIN
環境変数を設定して、使用するzsh
バイナリを指定することもできます (例: TEST_ZSH_BIN=/bin/zsh make test
)。
提供された Dockerfile からイメージを構築することで、Docker イメージ内のサポートされているバージョンの zsh のテストを実行できます。 zsh の特定のバージョンの Docker イメージをビルドするには (以下の<version>
はZSH_VERSIONS
ファイルの行の内容に置き換えられます)、次のコマンドを実行します。
docker build --build-arg TEST_ZSH_VERSION= < version > -t zsh-autosuggestions-test .
イメージを構築した後、次の方法でテストを実行します。
docker run -it -v $PWD :/zsh-autosuggestions zsh-autosuggestions-test make test
このプロジェクトは MIT ライセンスに基づいてライセンスされています。ライセンスの全文については、LICENSE ファイルを参照してください。