Bash vi-Modus: simulieren Geben Sie in der Bindung ein

478
MiniLud

Ich habe eine Funktion fh()in meiner .bashrc. Ich möchte Strg-F im vi-insert-Modus binden, um diese Funktion auszuführen.

Ich habe versucht

bind '"\C-F":"fh\n"' 

Dies gibt fh in mein Terminal ein und versucht, den Befehl automatisch zu vervollständigen. Nachdem ich im Web herumgesucht hatte, hatte ich den Eindruck, dass \ n ein Drücken der Eingabetaste simulieren sollte.

Ich habe im vi-insert-Modus viele Threads zum Binden von bash-Befehlen gefunden, aber keine, die über Funktionen sprechen.

Gibt es vielleicht eine Möglichkeit, eine Bindung in .inputrc anstelle von .bashrc zu erstellen?

0

2 Antworten auf die Frage

1
MiniLud

Natürlich finde ich eine Lösung 5 Minuten nach dem Absenden der Frage, aber nach Stunden der Suche nach einer Antwort.

Ich wurde durch \ndas Literalzeichen für enter ersetzt, das wie ^Min vim angezeigt wird .

Zitat aus bakunins Kommentar in diesem Thread von unix.com

Um eine wörtliche "EINGABETASTE" einzugeben, öffnen Sie Ihre Skriptdatei in vi.

  • Positionieren Sie den Cursor an der Stelle, an der Sie die Taste eingeben möchten, und wechseln Sie mit "i" in den Einfügemodus.

  • Geben Sie dann STRG-V ein, wodurch vi das nächste Zeichen als Literal akzeptiert. Drücken Sie dann die EINGABETASTE, woraufhin ein "^ M" auf dem Bildschirm angezeigt wird.

Beachten Sie, dass "^ M" nicht zwei Zeichen (Caret und "M") sind, sondern eins. Sie werden das sehen, wenn Sie mit dem Cursor darüber gehen.

0
Scott

Sie müssen es statt einer Funktion zu einem Skript machen.