단어를 뒤로/앞으로 삭제하는 XTerm 제어 순서?

단어를 뒤로/앞으로 삭제하는 XTerm 제어 순서?

나는 믿는다이 기사단어를 뒤로/앞으로 삭제하는 제어 시퀀스를 찾는 데 도움이 되어야 합니다.

내 이해는 제어 순서가 \u001b[다음과 같다는 것 입니다."제어 시퀀스 소개자"(나는 -에서왔다이 다른 답변), 하지만 전체 문자열이 무엇인지는 실제로 알 수 없습니다.

컨텍스트(다른 SO 질문 기반): 내 목표는 VSCode 터미널의 키보드 단축키(키 바인딩)에서 단어를 삭제하기 위한 제어 시퀀스를 내보내는 것입니다.

답변1

그런건 없습니다. 한번 보시면 됩니다ctlseq문서에는 아무 것도 언급되지 않습니다단어단어. 지우는 데 어떤 배경색을 사용할지, 내용을 오른쪽 단어에서 왼쪽으로 이동할지 여부에 대한 질문도 있습니다. 터미널의 오른쪽 가장자리에 단어를 배치하는 것을 고려해야 할 수도 있습니다.

일부 옵션은 다음과 같습니다.

  • 삭제하려는 단어의 셀 수만큼 BS 문자를 보낸 다음 가능한 한 많은 SPC를 보낸 다음(현재 배경색을 사용함) BS 문자를 다시 보냅니다(커서를 다시 뒤로 이동).

    $ printf 'foo bar\b\b\b   \b\b\b+\n'
    foo +
    

    소프트웨어는 거의 모든 터미널에서 실행됩니다.

  • 동일하지만 BS 시퀀스를 사용하는 대신 tput cub x( x셀 수는 어디입니까)를 사용하여 커서를 해당 양만큼 뒤로 이동합니다. 다음을 사용하여 이러한 셀을 삭제할 수 있습니다 tput ech x(터미널에 따라 현재 배경색이 있거나 없음).

    $ printf 'foo bar'; tput cub 3; tput ech 3; printf '+\n'
    foo +
    
  • 대신 줄 끝까지 tput ech x지우기를 사용하거나tput eltput dch x삭제x 셀(그리고 그 뒤의 내용을 왼쪽으로 이동)

( tput여기에는 terminfo 데이터베이스에 대한 쉘 인터페이스가 있습니다. 이스케이프 시퀀스를 하드코딩하지 않고 해당 언어에 해당하는 것을 사용하는 것이 아이디어입니다.)

backward-kill-word쉘의 일부 위젯( script예: 출력 로깅) 을 살펴보면 readline이동 및 dch삭제에 BS를 사용하고 zshBS와 재작성을 조합하여 사용하는 것을 볼 수 있습니다 cub. 절대 열 위치 지정( ) tcsh을 수행하는 것으로 보이며 삭제를 위해 ksh93은 CR을 보내고 전체 행을 다시 작성합니다.hbadch

답변2

나는 그런 명령을 본 적이 없다. 생각해 보면 단어를 삭제하는 것은 다른 작업보다 훨씬 복잡하고 다른 작업은 화면에 표시된 내용에 대해 어떤 식으로든 신경 쓰지 않는 것 같습니다. 예를 들어, 단어의 끝은 무엇입니까? '_'? '-'? '.'?

관련 정보