Strg-Eingabe für Fischmuschel

696
Michael

Ich hatte versucht, eine akzeptable Vervollständigung zu erstellen und sofort eine Kombination in Fisch auszuführen, wenn Sie Ctrl+ drücken Enter.

function fish_user_key_bindings bind \c\n accept-autosuggestion execute end 

Leider schlägt dieser Versuch fehl. Sieht aus, als würde Fisch keine zwei entkommenen Zeichen finden:

#bind -a ... bind \\ c \\ n akzept-autosuggestion ausführen 

Irgendwelche besseren Ideen?

1

2 Antworten auf die Frage

1
Kurtis Rader

Das Binden ctrl+ enterergibt keinen Sinn. Der enterSchlüssel sendet normalerweise einen Wagenrücklauf; \r, Aka \cM. Mit anderen Worten, enterist bereits ein Steuerzeichen. Daher macht das Anwenden des \cModifizierers keinen Sinn. In der Tat sollte dies dazu führen, dass Fish einen Fehler generiert. Ich werde ein Problem eröffnen, um das Team daran zu erinnern, das Problem zu beheben.

Sie haben auch versucht zu binden \c\n. Binding \n(aka \cJ) funktioniert für Fish 2.2.0 oder früher. Ab 2.3.0 erhalten Sie jedoch nicht das erwartete Ergebnis, da Fish den TTY-Treibermodus jetzt deaktiviert icrnl. So erhält Fish das \r(auch bekannt \cM) Zeichen, das normalerweise vom enterSchlüssel gesendet wird . Du willst also wirklich binden \r(oder \cM). Das ändert natürlich nichts daran, dass \c\cMdas keinen Sinn ergibt.

[Github Ausgabe 3162] (https://github.com/fish-shell/fish-shell/issues/3162) wurde geöffnet, um nachwachsende Fische aufzuspüren, um vor nicht sensiblen Dingen zu warnen, z Charakter. Kurtis Rader vor 8 Jahren 0
0
Hastur

Wahrscheinlich haben Sie nur die ''in der Bind-Befehlszeile vermisst .

In der Tat bind \c\n accept-autosuggestion executeerzeugt das einfache den Fehler:

bind: Erwartete Null oder zwei Parameter, 3 erhalten

Das Hinzufügen ''um den Befehl scheint zu funktionieren

function fish_user_key_bindings bind \c\n 'accept-autosuggestion execute' end 

Nach dem Bindbefehl bind -agibt es die Ausführung mit

bind \ x1cn 'Accept-Autosuggestion ausführen'

Nun, versuche es einfach ohne die Ausführung am Ende. Strg-Return wird einfach nicht erkannt, egal was Sie am Ende setzen. Auch das Zitieren von \ c \ n ist keine Hilfe. Und wenn ich nur eine andere Kombination auswähle, zB \ cn, funktioniert es auch ohne die beiden Befehle. Michael vor 8 Jahren 0
@Michael Ich musste den _composite-Befehl_ zitieren, weil 'bind' 0 oder 2 Parameter will und wenn 2 die zweite Aktion ist. Sie können in 'bind -a' einchecken. Ich kann jetzt nicht antworten, wenn Sie die Strg-Eingabetaste binden können. Ich habe versucht, als Aktion '' Echo zu binden; Echo; echo '' auf ctrl-a und es funktioniert. Bitte fügen Sie die Version des Fisches hinzu, den Sie verwenden ... Hastur vor 8 Jahren 0
Ich verwende 2.2.0. Wieder funktioniert \ cn oder \ ca was auch immer, funktioniert gut für mich, verwendet Qouting für die Befehle oder nicht, der Befehl wird ausgeführt. Vielleicht ist Ihre Version hier veraltet? Wie auch immer, die Bindung von Strg-a und die Bezugnahme darauf ist sinnlos, ich spreche speziell von \ c \ n. Michael vor 8 Jahren 0
Ich benutze das letzte verfügbare Ubuntu LTS (die 2.0.0), das heute morgen nur für Ihre Frage aktualisiert und installiert wurde. BTW das Problem mit ``hängt davon ab, welches Terminal verwendet wird: Einige Terminals senden``Wenn``wird gedrückt. Einige andere `<^ M>` wie für das einfache ``. Siehe [1] (http://stackoverflow.com/a/598404/3569208) und [2] (http://unix.stackexchange.com/a/63887/66388). Überprüfen Sie Ihr Terminal, vielleicht innerhalb einer Bash mit ``und nach``und`` Hastur vor 8 Jahren 0
Abstimmen ohne Kommentar IMHO sind nutzlos ... Lassen Sie uns wenigstens wissen, was Ihrer Meinung nach falsch oder unklar ist ... Hastur vor 8 Jahren 0