2017-07-06 2 views
2

fzf rockt! Ich möchte damit die Bash-Geschichte durchsuchen. Wenn eine Übereinstimmung gefunden wird, möchte ich, dass sie in der Befehlszeile platziert wird, aber nicht ausgeführt, damit ich es weiter bearbeiten kann. (All dies ist in einer bash Bash-Funktion oder Skript so hat es Zugriff auf meine Geschichte.)Ausgabe von fzf im Terminal ohne es auszuführen

Ich habe es fast funktioniert, aber nicht ganz.

Dies wählt den Befehl, aber es läuft sofort:

eval $(history | "$HOME/bin/fzf" +s | sed 's/ *[0-9]* *//') 

Dieses es in meine Zwischenablage wird, aber wenn ich es einfügen, es endet noch mit einem leeren und einem Newline, damit es sofort ausgeführt wird.

history | "$HOME/bin/fzf" +s | sed 's/ *[0-9]* *//' | xclip -se c 

Ich habe auch versucht, ein paar Variationen

history | "$HOME/bin/fzf" +s | sed -e 's/ *[0-9]* *//' -e 's/$//' | xclip -se c 

mit dem gleichen Ergebnis einschließlich.

Das funktioniert tatsächlich, aber ich muss es immer noch in die Zwischenablage legen und dann manuell einfügen.

history | "$HOME/bin/fzf" +s | sed -re 's/ *[0-9]* *//' | awk '{printf "%s", $0}' | xclip -se c 

Wie kann ich dies in einem Schritt tun - ohne eine manuelle Paste?

Ich dachte, nur den xclip verlassen würde es tun, aber es funktioniert nicht.

+0

Gibt es einen Grund, warum Sie keine umgekehrte Suche für diese verwenden (Ctrl und r)? –

+0

Ich habe mich nie daran gewöhnt, das zu benutzen. Ich habe es gerade ausprobiert. fzf ist viel schöner. Es erlaubt mir, viele Alternativen auf einmal mit viel mehr Suchoptionen zu sehen, nicht nur einzeln. Und ich habe keine Möglichkeit gesehen, das, was ich gefunden habe, zu bearbeiten. Wenn ich Enter drücke, wird nur der Befehl unmodified ausgeführt. Wenn ich das herausfinden kann, könnte es auch andere Möglichkeiten eröffnen, Dinge automatisch in die Kommandozeile zu bekommen, mit denen ich arbeiten kann. – Joe

+1

Sie können Ctrl-r mehrmals drücken, um die verschiedenen Optionen für den eingegebenen Text anzuzeigen. Dann können Sie Esc drücken, um den Befehl in Ihrer Befehlszeile zu bearbeiten. Ich würde vorschlagen, Zeit zu verbringen, die verfügbaren Optionen zu studieren, bevor Sie Zeit damit verbringen, Ihre eigenen –

Antwort

0

Es scheint mir, dass junegunn dieses Problem bereits für Sie gelöst hat. In this file Er ersetzt die bash ctrl-r mit genau der Funktionalität, nach der Sie suchen. Ich hatte ein kleines Problem, das diese Datei wegen der Linie fzf-file-widget Ausgabe sh: ``fzf-file-widget': not a valid identifier bezieht, aber nach dem Ändern dieses für fzf_file_widget funktioniert es groß.

Verwandte Themen