Wozu dient „Selbsteinfügung“?

Wozu dient „Selbsteinfügung“?

Wofür ist es self-insertin 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 aist 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. bindkeyszeigte "/"-"~" 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

verwandte Informationen