Verbesserte Funktion zur automatischen Vervollständigung des Terminals (ähnlich wie bei Matlab)

Wenn jemand von Ihnen jemals Matlab verwendet hat, ist Ihnen vielleicht die Befehlsfensterfunktionalität in diesem Programm aufgefallen. Ich frage mich, ob es möglich ist, die gleiche Funktionalität in Mac Terminal zu aktivieren.

Es funktioniert so: Angenommen, Sie haben zuvor zwei Befehle in dieser Terminalsitzung verwendet. Zuerst hast du a cd ~und dann a verwendet ls -la.

Wenn Sie in jedem *nix-Terminal, einschließlich Macs, auf drücken Up Arrow, wird zuerst der ls -laBefehl angezeigt, und wenn Sie ihn zweimal drücken, wird der cd ~Befehl angezeigt. Das ist toll. Aber wenn Sie in Matlab zuerst den Buchstaben eingeben cund dann drücken Up Arrow, wird es Ihnen nicht zeigen ls, sondern direkt zu gehen cd ~. Dies spart viel Zeit, wenn Sie umfangreiche Befehle und eine lange Liste zuvor verwendeter Befehle haben.

Ist es möglich?

Antworten (6)

In einer Bash-Shell können Sie Control+ drücken R, um eine umgekehrte intelligente Suche im Verlauf durchzuführen. Beginnen Sie mit der Eingabe des Befehls und die Shell wird automatisch mit zuvor eingegebenen Befehlen vervollständigen.

Dann können Sie entweder drücken Enter, um den Befehl erneut auszuführen, die Pfeiltaste nach links oder rechts verwenden, um den Befehl zu bearbeiten, oder Control+ gedrückt halten, Rum durch andere mögliche Vervollständigungen zu blättern.

Intelligente Suche umkehren

Speichern Sie dies als ~/.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 wäre \e\e[Aund control-p \C-p. Sie können die Escape-Sequenzen anderer Tastenkombinationen anzeigen, indem Sie Strg-V drücken.

Für Benutzer, die noch keine haben ~/.inputrc, erstellen Sie einfach eine.
"\e[A": Befehl nicht gefunden

Eine andere Sache, die Sie tun können, ist, !und dann den ersten Buchstaben einzugeben, und es wird der neueste gefunden. IE: cd ~kann mit zugegriffen werden!c

Dies ist eine Funktion der Shell. Control-R wird das tun, was Sie beschreiben, aber der Wechsel zu einer moderneren Shell bringt Ihnen so viel mehr. Werfen Sie einen Blick auf Z-Shell (zsh), es gibt eine kleine Lernkurve, aber es ist sehr leistungsfähig.

Ich denke du meinst Control-R.

zsh vervollständigt Befehle genau wie in Ihrem Beispiel. Sie müssen nicht einmal etwas anderes tun, als es für Ihre Shell zu verwenden.

Fügen Sie diese zu Ihrer .cshrc hinzu (wenn Sie tcsh verwenden) --

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

Führen Sie dann source ~/.cshrc aus, um genau die von Ihnen beschriebene Funktionalität zu erhalten.

Ich weiß nicht, ob es ein .profile-Äquivalent gibt.