Ich verwende bash und ich frage mich , ob es eine Plugin in bash oder andere Schale ist , die mich , dies zu tun erlaubt
cat tfnislong.txt
+ [tab]
abgeschlossen ist, um cat ThisFileNameIsSoLong.txt
wie Tabulatorvervollständigung in Sublime Text.
bash
shell
tab-completion
Holzungen
quelle
quelle
cat Th
+ machentab
?Antworten:
Ich kenne https://github.com/mgalgs/fuzzy_bash_completion , eine Reihe von Shell-Funktionen, die mit verwendet werden
complete
.Ich denke, wir könnten es wahrscheinlich etwas besser machen, prägnanter sein. Zeit, dein .bashrc oder .profile aufzubrechen ...
Der grundlegende Haken, den wir verwenden, ist folgender:
complete -o nospace -o filenames -F fuzzypath cd ls cat
-F Option bedeutet, dass eine Shell-Funktion für die Tab-Vervollständigung verwendet wird, wobei die Optionen in der
COMPREPLY
Variablen festgelegt werden. Also zum Beispiel:Wo
DIRPATH
ist alles vor dem letzten / auf Ihrem Pfad, den Sie eingeben, undBASENAME
wo befindet sich derzeit Ihr Cursor?FILTER
Hier kommt die Unschärfe ins Spiel. Nehmen Sie im Grunde genommen einBASENAME
Zeichen.*
zwischen jedes Zeichen und fügen Sie es ein , um unseren Fuzz-Regex zu erzeugen.Der Rest kombiniert nur den regulären Ausdruck mit ls, um zu produzieren
COMPREPLY
. Vielleicht finden Sie hier klügere Dinge, vielleicht mitfind
.Ich fand auch http://fahdshariff.blogspot.com/2011/04/writing-your-own-bash-completion.html nützlich.
quelle
Sie können fzf nützlich finden. Es ist ein in Ruby geschriebener Allzweck-Fuzzy-Finder, der mit jeder Liste von Dingen verwendet werden kann: Dateien, Prozesse, Befehlsverlauf, Git-Zweige usw.
Das Installationsskript richtet die
CTRL-T
Tastenkombination für Ihre Shell ein. Das folgende GIF zeigt, wie es funktioniert.quelle
fzf
.. (tput sc) aufrief und später mittput rc
..Um Ihrer anderen Antwort zu folgen, sollten Sie sich zsh ansehen. Es ist abwärtskompatibel mit Bash, sodass Sie es als Ersatz verwenden können. Es unterstützt jedoch erheblich erweiterte Funktionen und eine davon ist die stark kontextbezogene Vervollständigung von Registerkarten.
Die häufig gestellten Fragen zu zsh Completion erweitern die Anwendungsfälle, aber ich glaube, dass Sie gemäß Ihrem Beispiel am meisten an der
COMPLETE_IN_WORD
Funktion interessiert wären . Es ist nicht ganz das gewünschte Verhalten, aber es ist nah. Der Hauptpunkt ist, dass es viele Möglichkeiten gibt, die Basisfunktionalität auf eine möglicherweise zugänglichere Weise zu erweitern als die Verwendung von Bash.Hier ist eine Fuzzy-Match-Erweiterung, die sich Ihren Wünschen nähert. zsh-fuzzy match
Für einige Ideen können Sie sich das beliebte oh-my-zsh- Framework ansehen , das eine Reihe von Funktionen zum Verwalten und Erweitern von zsh bietet. Es ist höchstwahrscheinlich mehr als Sie möchten, aber unter den Plugins finden Sie Skripte zur automatischen Vervollständigung für eine Vielzahl von Rollen. Um sich ein Bild von den Funktionen zu machen.
quelle