Ich glaubeDieser Artikelsollte mir helfen, die Steuersequenz für die Rückwärts-/Vorwärtslöschung von Wörtern zu finden.
Nach meinem Verständnis würde die Steuersequenz mit beginnen, \u001b[
da dies ist„der Kontrollsequenz-Einführer“(Ich habe das vondiese andere Antwort), weiß aber nicht wirklich, wie die vollständige Zeichenfolge aussehen soll.
Kontext (wie bei der anderen SO-Frage): Mein Ziel ist es, die Steuersequenz zum Löschen von Wörtern im VSCode-Terminal über eine Tastenkombination (Tastenkombination) auszugeben.
Antwort1
So etwas gibt es nicht, man sieht dasctlseq
Dokument enthält keine einzige Erwähnung derWortWort. Es stellt sich auch die Frage, welche Hintergrundfarbe zum Löschen verwendet werden soll und ob das, was rechts vom Wort steht, nach links verschoben werden soll oder nicht. Möglicherweise müssen Sie Wörter berücksichtigen, die am rechten Rand des Terminals umbrochen werden.
Einige Ihrer Optionen sind:
Senden Sie so viele BS-Zeichen, wie das zu löschende Wort Zellen enthält, gefolgt von so vielen SPC (Achtung, es wird die aktuelle Hintergrundfarbe verwendet), gefolgt von erneut so vielen BS-Zeichen (um den Cursor wieder zurück zu bewegen):
$ printf 'foo bar\b\b\b \b\b\b+\n' foo +
dass man auf praktisch allen Endgeräten funktionieren sollte.
dasselbe, aber verwenden Sie
tput cub x
(wobeix
die Anzahl der Zellen ist), um den Cursor um diesen Betrag zurück zu bewegen, anstatt eine Folge von BS zu verwenden. Und Sie können verwenden,tput ech x
um diese Zellen zu löschen (mit der aktuellen Hintergrundfarbe oder nicht, je nach Terminal).$ printf 'foo bar'; tput cub 3; tput ech 3; printf '+\n' foo +
anstelle von
tput ech x
können Sie verwenden,tput el
um bis zum Zeilenende zu löschen, odertput dch x
umlöschenx Zellen (und den Rest danach nach links verschieben).
( tput
Hier ist die Shell-Schnittstelle zur Terminfo-Datenbank. Die Idee dahinter ist, fest codierte Escape-Sequenzen zu vermeiden und das Äquivalent für Ihre Sprache zu verwenden.)
backward-kill-word
Wenn ich mir die Widgets einiger Shells ansehe (die script
sie beispielsweise verwenden, um ihre Ausgabe zu protokollieren), sehe ich, readline
dass sie BS für Bewegung und dch
zum Löschen verwenden, während zsh
sie eine Kombination aus BS und cub
und Umschreiben verwenden. tcsh
scheint eine absolute Spaltenpositionierung ( hba
) durchzuführen und dch
zum Löschen zu verwenden, ksh93 sendet einen CR und schreibt die ganze Zeile um.
Antwort2
Ich habe noch nie eine solche Sequenz gesehen. Wenn man darüber nachdenkt, ist das Löschen eines Wortes ziemlich komplex, komplexer als andere Operationen, und ich glaube nicht, dass sich eine andere Operation in irgendeiner Weise darum kümmert, was auf dem Bildschirm angezeigt wird. Was beendet beispielsweise ein Wort? '_'? '-'? '.'?