zsh Autocomplete Wildcard über das Netzwerk

3

Eine meiner Lieblingsfunktionen von zsh ist die automatische Vervollständigung, insbesondere wenn ich einen Dateinamen auf einem Netzwerkcomputer vervollständige. Aber wie können Sie Platzhalter (wie *) einfügen und diese automatisch vom Remote-Computer vervollständigen lassen?

Angenommen, ich habe Datei1, Datei2 und Datei3 auf einem Server. Ich möchte alle diese Dateien auf meinen lokalen Computer kopieren, also gebe ich ein

scp server:~/fi<tab>

zsh wird dann korrekt automatisch vervollständigt

scp server:~/file

aber dann, wenn ich versuche, wildcard

scp server:~/file*<tab>

es piept mich nur an (es funktioniert korrekt, wenn die Dateipfade lokal sind). Gibt es eine Reihe von zsh-Optionen, mit denen dies funktioniert?

Randallmeadows
quelle

Antworten:

0

Denken Sie, dass die Einstellung von GLOB_COMPLETE dies ändern sollte.

setopt GLOB_COMPLETE

Von man zshoptions:

GLOB_COMPLETE

Wenn das aktuelle Wort ein Glob-Muster hat, fügen Sie nicht alle aus der Erweiterung resultierenden Wörter ein, sondern generieren Übereinstimmungen wie für die Vervollständigung und durchlaufen sie wie MENU_COMPLETE. Die Übereinstimmungen werden so generiert, als ob ein '*' am Ende des Wortes hinzugefügt oder am Cursor eingefügt wurde, wenn COMPLETE_IN_WORD gesetzt ist. Dies verwendet tatsächlich den Mustervergleich, nicht das Globbing, sodass es nicht nur für Dateien, sondern auch für Vervollständigungen wie Optionen, Benutzernamen usw. funktioniert.

Beachten Sie, dass bei Verwendung des Mustervergleichs die Übereinstimmungssteuerung (z. B. keine Übereinstimmung zwischen Groß- und Kleinschreibung oder verankerte Übereinstimmung) nicht verwendet werden kann. Diese Einschränkung gilt nur, wenn das aktuelle Wort ein Muster enthält. Das einfache Einschalten der Option GLOB_COMPLETE hat diesen Effekt nicht.

Ahmet AYGÜN
quelle
0

Aus welchem ​​Grund auch immer, Sie müssen das Glob-Zeichen maskieren, wenn Sie es im Remote-Pfad in scp / ssh verwenden.

scp server:~/file\*<tab>

Dies gilt auch, wenn Sie beispielsweise eine Reihe von Dateien mit einem Glob scpen möchten (anstatt die Glob-Vervollständigung durchzuführen), z

scp server:~/files/project.\* ~/localdir
Marshall Eubanks
quelle