ターミナルのオートコンプリート機能の改善(Matlabに類似)


18

Matlabを使用したことがある人は、そのプログラムのコマンドウィンドウ機能に気付いているかもしれません。Macターミナルで同じ機能を有効にすることは可能だろうか。

これは次のように機能します。以前にこのターミナルセッションで2つのコマンドを使用したとします。最初にaを使用しcd ~、次にa を使用しましたls -la

Macを含むすべての* nix端末では、を押すUp Arrowと最初にls -laコマンドが表示され、2回押すとcd ~コマンドが表示されます。これは素晴らしい。しかし、Matlabでは、最初に文字cを入力してからを押すと、Up Arrow表示されませんlsが、代わりにに直接移動しcd ~ます。これにより、大きなコマンドと以前に使用したコマンドの長いリストがある場合に多くの時間を節約できます。

出来ますか?

回答:


27

Bashシェルでは、Control+ Rを押して履歴内で逆インテリジェント検索を実行できます。コマンドの入力を開始すると、シェルは以前に入力したコマンドで自動補完されます。

次に、を押しEnterてコマンドを再度実行するか、左または右矢印キーを使用してコマンドを編集するか、Control+ Rを押し続けて他の可能な補完を繰り返します。

逆インテリジェント検索


9

これを〜/ .inputrcとして保存します。

# make the up and down arrows cycle through commands that match the start of a line
"\e[A": history-search-backward
"\e[B": history-search-forward

Option-upは\e\e[Aand control-p \C-pです。control-vを押すと、他のキーの組み合わせのエスケープシーケンスを表示できます。


1
まだ持っていないユーザーの場合は~/.inputrc、作成してください。
シブスギャンブル

受け入れられる答えである必要があります
ripper234

1
「\ e [A」:コマンドが見つかりません
ルイ

2

もう1つできることは、タイプ!してから最初の文字を入力することです。最新の文字が検索されます。IE:cd ~でアクセスできます!c


1

これはシェルの機能です。Control-Rはあなたが説明したことを行いますが、より現代的なシェルに変更すると、さらに多くのことができます。Zシェル(zsh)を見てください。少し学習曲線がありますが、非常に強力です。


Control-Rを意味すると思います。
jmk

1

zshは、例のようにコマンドを完了します。シェルで使用する以外に何もする必要はありません。


0

これらを.cshrcに追加します(tcshを使用している場合)-

  bindkey -k up history-search-backward
  bindkey -k down history-search-forward

次に、ソース〜/ .cshrcを実行して、記述した機能を正確に取得します。

同等の.profileがあるかどうかはわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.