2015-06-05 6 views
5

Ich möchte eine Funktion ausführen, wenn ich anfange, das Terminal einzugeben.Wie führe ich eine Funktion beim ersten Tastendruck in bash/zsh aus?

Speziell ich möchte die fzf Funktion ausführen, für die ich derzeit ctrl-r drücken muss, um es auszulösen. Ich möchte any keystroke to trigger it so Geschichte immer erscheint, wenn ich tippe.

Only the first keystroke sollte die Funktion ausführen, da es mehrmals zwischen Pfad- und Dateinamenauswahl schaltet.

+0

Interessant. Gedanken: ['bind'] (http://StackOverflow.com/Questions/4200800) funktioniert wahrscheinlich nicht, da ich nicht glaube, dass Sie die Anforderung" erster Tastendruck "erfüllen können. Eine falsche Befehlszeile mit hoher Geschwindigkeit [lese Schleife] (http://stackoverflow.com/questions/11596059) funktioniert möglicherweise. Verwenden Sie das Terminal im [Rohmodus] (http://unix.stackexchange.com/questions/18334/) oder ändern Sie den [bash source code] (http://git.savannah.gnu.org/cgit/bash.git) sind wahrscheinlich die wahrscheinlichsten Wege. Betrachte auch [Selektor] (http://www.idiap.ch/~fleuret/software.html#selector) anstelle von fzf. – bishop

Antwort

1

Ich habe die Up und Down Pfeiltasten an history-search-backward und history-search-forward jeweils gebunden. Wenn ich also etwas eintippe und dann Up oder Down drücke, wird eine Verlaufssuche gestartet, die mit getippten Buchstaben beginnt. Dies funktioniert für mich, da ich für jeden eingegebenen Befehl keine Historiensuche durchführen möchte.

Ich weiß, das ist nicht genau das, wonach Sie suchen, aber es ist nah dran.

# Bind up and down arrows to do backward and forward history search 
if [[ $- == *i* ]] 
then 
    bind '"\e[A": history-search-backward' 
    bind '"\e[B": history-search-forward' 
fi 
+0

Danke für die Alternative, aber ich denke, ich bevorzuge immer noch ctrl-r zu den Pfeiltasten. –

+0

Sicher. Ein Vorteil davon ist, dass Sie den Verlauf durchsuchen können, nachdem Sie nur wenige Buchstaben eingegeben haben. 'Ctrl-r' muss ausgelöst werden, bevor etwas eingegeben wird. Aber ja, verschiedene Schläge für verschiedene Leute. – ronakg

+0

Nicht verwandt, aber ich bevorzuge "up-line-or-search" und "down-line-or-search" für Aufwärts- und Abwärtspfeile. Dies hat den zusätzlichen Vorteil, dass "in der Historie nach einer Zeile rückwärts/vorwärts gesucht wird, die mit dem ersten Wort im Puffer beginnt" gegenüber der Voreinstellung (sehr ähnlich wie "history-search-backward") Und ich benutze 'history-incremental-search -backward' und 'history-incremental-search-forward' für' Cr' und 'Cs'. – 4ae1e1

Verwandte Themen