Zshのメニューベースの完成

Zshのメニューベースの完成

Powershellを使用するWindows端末の場合、非常に便利な機能を提供するPSReadlineプラグインがあります。たとえば、入力を開始すると、閲覧可能な履歴リストの表示が表示されます。したがって、入力すると、cd私が使用した最近の10個のコマンドのリストが表示され、cdそのリストを上下に移動して1つを選択できます。

PSReadlineスクリーンショット - スクロール可能な履歴

私の好きなもう1つの機能は、cdTabキーを入力してタップできるすべてのサブディレクトリのリストを表示できることです。また、上/下/左/右キーを押してこのリストからディレクトリを選択し、そのディレクトリに移動することもできます。

PSReadline - ディレクトリ選択スクリーンショット

WSL(Ubuntu)プロンプトに対して同様の操作を実行できますか?しかし、私はPowershellとWSLの両方でプロンプトとしてoh-my-poshを使用します。 oh-my-zshにはこのような機能があると思いますが、oh-my-poshのテーマを設定するのに多くの時間を費やすので、インストールしないことをお勧めします。テーマなしでoh-my-zshプラグインを使用する方法がなければ。

答え1

UbuntuとほとんどのGNU / LinuxディストリビューションのデフォルトシェルであるBashは、これらの素晴らしい機能をほとんどサポートしていません。ただし、設定ファイルの一部を調整すると、より近い機能が得られます。 Zshは追加機能を備えた別のシェルです。 Bashにはメニューベースのインタラクティブな補完機能はありませんが、Zshにはあります。 ZshとBashの両方で履歴検索を実行する方法はいくつかあります。

UbuntuにZshをインストールするには、実行してsudo apt install zshからデフォルトのシェル変更を使用chshするかzsh、Bashで一度だけ実行してZshに切り替えることができます。デフォルトの構成ファイルを生成するには、Zshを一度実行する必要があります。 Bash と Zsh の設定ファイルは、それぞれホームフォルダ ~/.bashrc と ~/.zshrc にあります。構成ファイルを変更したら、シェル(ターミナル)を閉じて開く必要があります。個人的には、oh-my-zshは不要で遅いサードパーティ製のプラグインシステムなので、使用をお勧めしません。すべての操作は手動で実行できます。

さらに、Oh My PoshはZshを含むすべてのシェルで動作します。 Zshに切り替えるとあきらめる必要はありません。
これは公式文書です。 Zshの設定手順については、リストの「zsh」をクリックしてください。eval "$(oh-my-posh init zsh)".zshrcに追加する必要があります
。 BashですでにOh My Poshを使用している場合は、これがすべて必要な作業であり、同じテーマを使用する必要があります。

Zshのメニューベースの完成

これらはZshの基本的なオートコンプリートに必要で、おそらくすでに.zshrcにあります。

autoload -Uz compinit
compinit

compinit 安全でないディレクトリエラーが発生した場合は、セカンダリプライマリ .zshrc の作成を完了せずに compinit を有効にしていない可能性があります。compinit -Cまたはを実行してみてくださいcompaudit | xargs chmod g-wここ

これでデフォルトのオートコンプリート機能があるので、次の設定行を使用するとインタラクティブメニューが有効になります。

zstyle ':completion:*' menu yes select

上記の設定では、タブをクリックして矢印キーを使用してナビゲートできるインタラクティブメニューを取得できます。 Tabを1回押すと、カーソルの代わりに矢印キーがメニューを制御します。メニューに「入る」前にもう一度Tabキーを押すには、「はい」を削除します。

zstyle ':completion:*' menu select

履歴検索

Ctrl+R - ボックスから検索

吹く

<Ctrl>-R入力しながらコマンド履歴を検索します。

                     

答え2

ハースト履歴をリストで検索して閲覧できますが、一般タブの完成(コマンド/ファイル)を実行する方法がわかりません。誰かが答えることができることを願っています

答え3

PSReadLineと互換性があるべきですか?これはまったく同じ動作を提供するわけではありませんが、実行中の作業には十分です。

  1. bash組み込み機能は、history最後のNコマンドのインデックス付きリストを提供します(ここで、Nはディストリビューションで構成されています)。インデックス1013でコマンドを実行するには、!1013bashプロンプトで適切なコマンドを入力します。
  2. キーの組み合わせを使用する<Ctrl>-Rと、検索文字列を入力でき、入力を続けると最後に一致するコマンドが表示されます。再入力すると、以前に一致した<Ctrl>-R項目が検索されます。正しいコマンドが見つかったら、キー<Enter>を押して実行します。編集するには、左矢印キーを使用してください。検索を終了するには、を入力してください<Ctrl>-G

Bashの履歴を処理するためのより多くのオプションがあります。ユースケースにbash履歴を使用するだけで十分な場合は、PSReadLineを無視するように質問を置き換えることができます。

関連情報