Yo creoEste artículodebería ayudarme a encontrar la secuencia de control para la eliminación de palabras hacia adelante y hacia atrás.
Tengo entendido que la secuencia de control comenzaría con \u001b[
ya que eso es"el introductor de secuencia de control"(obtuve esto deesta otra respuesta), pero realmente no sé cuál debería ser la cadena completa.
Contexto (según la otra pregunta SO): Mi objetivo es emitir la secuencia de control para eliminar palabras en el terminal VSCode desde un método abreviado de teclado (combinación de teclas)
Respuesta1
No existe tal cosa, puedes ver elctlseq
El documento no tiene ninguna mención única delpalabrapalabra. También está la cuestión de qué color de fondo usar para borrar y si desplazar lo que está a la derecha de la palabra hacia la izquierda o no. Es posible que tengas que considerar las palabras que están envueltas en el margen derecho del terminal.
Algunas de tus opciones son:
envíe tantos caracteres BS como celdas haya en la palabra que desea borrar, seguidos de tantos SPC (tenga cuidado, usa el color de fondo actual) seguidos de tantos caracteres BS nuevamente (para mover el cursor nuevamente):
$ printf 'foo bar\b\b\b \b\b\b+\n' foo +
ese debería funcionar en prácticamente todos los terminales.
Lo mismo pero use
tput cub x
(dóndex
está el número de celdas) para mover el cursor hacia atrás esa cantidad en lugar de usar una secuencia de BS. Y puedes usartput ech x
para borrar esas celdas (con el color de fondo actual o no dependiendo del terminal)$ printf 'foo bar'; tput cub 3; tput ech 3; printf '+\n' foo +
en lugar de
tput ech x
, puede utilizartput el
para borrar hasta el final de la línea otput dch x
paraborrarx celdas (y desplazar lo que sigue a la izquierda).
( tput
aquí está la interfaz de shell para la base de datos terminfo, la idea es evitar secuencias de escape codificadas, use el equivalente para su idioma).
Al observar los backward-kill-word
widgets de algunos shells (usados, script
por ejemplo, para registrar su salida), veo readline
que usa BS para movimiento y dch
para eliminar, mientras que zsh
usa una combinación de BS cub
y reescritura. tcsh
Parece estar haciendo un posicionamiento absoluto de la columna ( hba
) y lo usa dch
para eliminar, ksh93 envía un CR y reescribe toda la línea.
Respuesta2
Nunca había visto una secuencia así. Si lo piensas bien, borrar una palabra es bastante complejo, más complejo que otras operaciones, y no creo que a ninguna otra operación le importe lo que hay en la pantalla de ninguna manera. Por ejemplo, ¿qué termina una palabra? ¿'_'? '-'? '.'?