wie man fzf auf Mac Terminal mit bash benutzt

8

Ich habe ein Dienstprogramm namens fzf https://github.com/junegunn/fzf gefunden, das ein Fuzzy-Finder für Ihre Shell ist.

Zwei Fragen:

1) Nachdem ich fzfeine Datei ausgeführt habe, drücke ich Enterund die gefundene Datei wird im Terminal ausgegeben. EnterWelche Taste sollte ich stattdessen drücken, um diesen Dateipfad in meinen Pastebin zu kopieren?

2) Idealerweise möchte ich in der Lage sein, cat <pattern><hotkey> Folgendes zu tun: Ich gebe einen Teil des Namens einer Datei ein und drücke dann einen Hotkey, um eine fzf-Suche nach diesem Muster zu starten. Gibt es eine Möglichkeit, dies zu tun?

Kennzeichen
quelle
Sie schreiben "in meinen Pastebin?" Du meinst zu deiner Zwischenablage
barlop
Ich wollte "Pappe" sagen, wie inman pbpaste
Mark

Antworten:

7

Ich schlage vor, dass Sie die README-Seite durchlesen . Sie benötigen ein grundlegendes Verständnis der Shell-Skripterstellung, um fzf vollständig nutzen zu können.

fzf ist ein Unix-Filter wie grep oder sed und druckt lediglich die ausgewählten Elemente. Was mit der Ausgabe zu tun ist, liegt ganz bei Ihnen.


1) Nachdem ich fzf ausgeführt und eine Datei ausgeführt habe, drücke ich die Eingabetaste und die gefundene Datei wird im Terminal ausgegeben. Welche Taste sollte ich anstelle von Enter drücken, um diesen Dateipfad in meinen Pastebin zu kopieren?

Sie können den pbcopyBefehl verwenden, um das Ergebnis wie folgt in der Zwischenablage zu speichern:

fzf | pbcopy

Eine konventionellere Art, fzf zu verwenden, besteht darin, es mit Befehlssubstitution zu verwenden:

cat $(fzf)

Oder um die CTRL-TSchlüsselbindung zu verwenden, mit der die Namen der ausgewählten Dateien in die Befehlszeile eingefügt werden:

cat <CTRL-T>

2) Idealerweise möchte ich in der Lage sein, Folgendes zu tun: cat, bei der ich einen Teil des Namens einer Datei eingebe und dann einen Hotkey drücke, um eine fzf-Suche nach diesem Muster zu starten. Gibt es eine Möglichkeit, dies zu tun?

fzf wird mit Fuzzy-Vervollständigung für Bash geliefert. Sehen Sie hier für weitere Details. Um die automatische Vervollständigung aufzurufen, hängen Sie zwei Sternchen an das Muster an und drücken Sie die Tabulatortaste wie folgt:

cat pat**<Tab>

Wenn Sie bash nicht verwenden, können Sie am besten die oben erwähnte STRG-T-Tastenkombination verwenden.

Siehe: https://github.com/junegunn/fzf#key-bindings-for-command-line

Junegunn Choi
quelle
1
Ah, ich habe mein Problem herausgefunden. Ich habe fzf über homebrew ( brew install fzf) installiert und die Verknüpfungen CTRL-Tund pat**<Tab>haben nicht funktioniert. Ich habe jetzt fzf direkt vom GitHub-Repo installiert und jetzt funktioniert alles.
Markieren Sie den
7
brew install fzfinstalliert nur die ausführbare Datei fzf. Um zusätzliche Funktionen zu installieren, müssen Sie das angehängte installSkript nach der Installation ausführen . Siehe brew info fzffür weitere Informationen.
Junegunn Choi
@ JunegunnChoi Ja, das ist erwähnt aheil.de/2019/04/07/fzf-command-line-fuzzy-finder-on-macos-x
Barlop
2

Ich habe versucht, fzf über Homebrew zu installieren, und meine CTRL-T- und pat ** -Verknüpfungen funktionierten ebenfalls nicht. Ich habe festgestellt, dass fzf meiner .bashrc einige Befehle hinzugefügt hat, aber meine .bashrc wird nicht aufgerufen.

[ -f ~/.fzf.bash ] && source ~/.fzf.bash

Das Einfügen derselben Quellanweisung von .bashrc in .bash_aliases hat den Trick für mich getan.

Rado
quelle
.bash_profilefür mich .. 'cos anscheinend verwendet osx nicht .bashrc es verwendet .bash_profile
barlop