Wofür ist es self-insert
in zsh? Ich sehe es überall in den Prezto-Konfigurationen, kann aber nicht verstehen, was es tun soll. Die ZLE-Dokumentation gibt auch nicht an, was es ist, erwähnt es jedoch in einigen anderen Kontexten.
Antwort1
Wenn diese Funktion an eine Taste gebunden ist, fügt sie die Taste selbst als Eingabezeichen ein. Die Taste a
ist beispielsweise an gebunden self-insert
, sodass das Drücken der Taste die Eingabe von „a“ bewirkt.
Von demzshzle(1)Handbuchseite (zsh Version 5.5.1):
self-insert (printable characters) (unbound) (printable characters and some con‐ trol characters) Insert a character into the buffer at the cursor position.
Zum Vergleich: Aus demZeile lesen(3)Handbuchseite (Bash-Version 4.4.023):
self-insert (a, b, A, 1, !, ...) Insert the character typed.
Antwort2
Aus der Dokumentation geht hervor,
Alle anderen Zeichen, die nicht an „Self-Insert“ oder „Self-Insert-Unmeta“ gebunden sind, werden mit einem Piepton ausgegeben und ignoriert.
Ich habe an meiner Shell herumgespielt und '.' an eine Funktion gebunden und dann die Bindung aufgehoben. Plötzlich konnte ich nirgendwo einen Punkt eingeben. bindkeys
zeigte "/"-"~" self-insert
, aber in einer anderen sauberen Shell war es "/"-"-" self-insert
. Das Zeichen wurde vollständig ignoriert, sogar beim Ausschneiden und Einfügen.
Um meinen Punkt zurückzubekommen, musste ich ihn an die Selbsteinfügung binden:
bindkey '.' self-insert