Behalten Sie nach Abschluss den Platz für einige Zeichen in zsh


6

Zsh verfügt über eine gewisse Automatisierung im Zusammenhang mit der Fertigstellung, die die meiste Zeit hilfreich ist: Nach dem Drücken Tabwird automatisch ein Leerzeichen eingefügt (oder ein anderes geeignetes Zeichen, z. B. ,in geschweiften Klammern).

Ich möchte diese Funktion beibehalten, außer in einem Fall: Wenn ich tippe &oder |drücke Tab, möchte ich nicht, dass der Speicherplatz entfernt wird. Ich bevorzuge es, das Leerzeichen auf einem zu entfernen ;, und ich möchte auf jeden Fall das automatisch eingefügte Komma unterdrücken, wenn ich Tab }eine geschweifte Klammer drücke.

Diese Funktion funktioniert standardmäßig sowohl in den Vervollständigungssystemen "alt" ( compctl) als auch "neu" ( compadd). Ich interessiere mich nur für das neue System.

Wie kann ich die automatische Unterdrückung des nach Abschluss eingefügten automatischen Suffix einstellen?

Antworten:


8

Diese Funktion kann mit ZLE_REMOVE_SUFFIX_CHARSund ZLE_SPACE_SUFFIX_CHARSShell-Parametern eingestellt werden.

  • Wenn die ZLE_REMOVE_SUFFIX_CHARSVariable festgelegt ist, sollte sie eine Reihe von Zeichen enthalten, die bei der Eingabe dazu führen, dass automatische Suffixe nach Abschluss entfernt werden. Wenn ZLE_REMOVE_SUFFIX_CHARSnicht festgelegt, entspricht das Standardverhalten

    ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|'
  • Für Zeichen, die in ZLE_SPACE_SUFFIX_CHARSSuffices gesetzt sind, werden diese durch ein Leerzeichen ersetzt. Es hat auch Vorrang vorZLE_SPACE_SUFFIX_CHARS


Um Ihr gewünschtes Verhalten zu erhalten, sollte es ausreichend sein, es einzustellen

ZLE_SPACE_SUFFIX_CHARS=$'|&'

Es scheint, dass die automatisch ,in Klammern eingefügten Aufzählungen beim Tippen immer entfernt werden }.

Obwohl zshparam(1)erwähnt wird, dass bestimmte Vervollständigungssysteme dieses Verhalten überschreiben können, scheint es mit dem "neuen" compsys(Sie haben es genannt compadd) gut zu funktionieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.