Ich möchte im Terminal Folgendes eingeben, wie ich es in Emacs tue:
emacs 2019-*subject*
Wenn ich drücke, Taberhalte ich die erste Übereinstimmung:
2019-08-03-subject.markdown
Ich möchte, dass mir Optionen angezeigt werden wie:
2019-08-03-subject.markdown 2019-bla-bla-subject-predicate.markdown etc...
Ich habe überall online gesucht und kann nicht glauben, dass dies keine Funktion ist.
Es gibtviele ähnlichgestellte Fragen.Die Antworten funktionieren nicht so, wie ich es möchte (siehe oben). Andere Lösungen, die ich ausprobiert habe:Hier.
PS: Ich verwende Ubuntu 16. Dies ist eine typische Funktion, die ich in Emacs finde, wenn ich Dateien öffne. Das wäre sehr praktisch.
Antwort1
Was danach passiert, Tabhängt von den Abschlussskripten ab.Diese Antwortlässt mich glauben, dass das gewünschte Verhalten für mindestens einen Benutzer im Jahr 2013 vorhanden war, aber im Jahr 2019 ist das Verhalten in meinem Debian 9 so, wie Sie es beschrieben haben; möglicherweise haben sich die Skripte/das Verhalten seitdem geändert.
Außerdem wählt Bash ein Skript entsprechend dem eingegebenen Befehl (erstes Wort in der aktuellen Zeile). Es ist nicht sofort ersichtlich, dass eine einzelne Änderung alle Vervollständigungen beeinflussen kann, um das gewünschte Ergebnis zu erzielen (ich denke, die _filedir
Funktion ist ein guter Anfang).
Glücklicherweise können Sie mögliche Erweiterungen auf Anfrage erhalten. Von man 1 bash
(unter der READLINE
Überschrift):
glob-complete-word
(M-g
)
Das Wort vor dem Punkt wird als Muster für die Pfadnamenerweiterung verwendet, wobei implizit ein Sternchen angehängt wird. Dieses Muster wird verwendet, um eine Liste passender Dateinamen für mögliche Vervollständigungen zu generieren.
glob-expand-word
(C-x *
)
Das Wort vor dem Punkt wird als Muster für die Pfadnamenerweiterung betrachtet und die Liste der passenden Dateinamen wird anstelle des Wortes eingefügt. Wenn ein numerisches Argument angegeben wird, wird vor der Pfadnamenerweiterung ein Sternchen angehängt.
glob-list-expansions
(C-x g
)
Die Liste der Erweiterungen, die generiert worden wärenglob-expand-word
, wird angezeigt und die Zeile wird neu gezeichnet. Wenn ein numerisches Argument angegeben wird, wird vor der Pfadnamenerweiterung ein Sternchen angehängt.
M-g
und beschreiben C-x *
die C-x g
Standardtastenbelegungen. In einem benutzerfreundlicheren Format lauten diese:
- Meta+ g( Alt+ g) für
glob-complete-word
, - Ctrl+ x, (loslassen Ctrl) *für
glob-expand-word
(Anmerkung: *ist tatsächlich Shift+ 8auf meiner Tastatur), - Ctrl+ x, (loslassen Ctrl) gfür
glob-list-expansions
.
Der folgende Code legt diese Bindungen fest (falls sie aus irgendeinem Grund fehlen):
nur für die aktuelle Shell:
# commands to run in Bash bind '"\eg": glob-complete-word' bind '"\C-x*": glob-expand-word' bind '"\C-xg": glob-list-expansions'
oder in Ihrer permanenten Konfiguration (
/etc/inputrc
oder~/.inputrc
):# lines to add "\eg": glob-complete-word "\C-x*": glob-expand-word "\C-xg": glob-list-expansions
(beachten Sie, dass dies nur neue Shells betrifft, es sei denn, Sieneu laden).
Sie interessieren sich für glob-complete-word
oder glob-list-expansions
. Hauptunterschiede:
glob-complete-word
hängt immer einen Asterisk an, währendglob-list-expansions
dies bedingt geschieht (siehe das zitierte Handbuch).- Wenn es viele Übereinstimmungen gibt, müssen Sie möglicherweise
glob-complete-word
zweimal auslösen (d. h. die Tastenkombination zweimal drücken), bevor etwas gedruckt wird. Dies hängt davon abshow-all-if-ambiguous
. Vergleichen Sie diebereits erwähnte Antwort. - Wenn nur eine Übereinstimmung vorliegt,
glob-complete-word
wird eine tatsächliche Zeilenvervollständigung durchgeführt, währendglob-list-expansions
weiterhin nur die Übereinstimmung angezeigt wird.
Geben Sie in Ihrem speziellen Fall Folgendes ein:
emacs 2019-*subject*
dann Ctrl+ x, g.