문제 설명

문제 설명

문제 설명

터미널에서 자주 실행하는 명령을 키 조합에 묶고 싶습니다. 이 bind명령은 처음에는 작동하는 것 같았습니다.

그러나 키 조합을 사용하면 터미널에 입력한 문자가 보이지 않게 되고 Enter를 눌러도 새 줄이 생성되지 않습니다. 내 생각에는 호출기가 적다는 것과 관련이 있을 수 있다는 것입니다.

stty --all문제가 시작되기 전과 후에 실행하면 터미널 회선 설정의 차이점이 드러납니다.

  • echo-> -echo( echo input characters)가 이제 닫혀서 내가 입력하는 모든 내용이 보이지 않습니다.
  • icrnl-> -icrnl( translate carriage return to newline)
  • icanon-> -icanon( enable special characters: erase, kill, werase, rprnt)
  • lnext = ^V-> lnext = <undef>( CHAR will enter the next character quoted) 더 이상 Ctrl+V를 누른 다음 Esc를 눌러 이스케이프 문자를 입력할 수 없습니다.
  • flush = ^O-> flush = <undef>(https://man.openbsd.org/stty.1#flush)

왜 이런 일이 발생합니까? 보이지 않는 문제 없이 사용자 정의 터미널 키 조합을 사용할 수 있습니까?

재생산 방법

lxterminal, kitty및 를 포함한 여러 터미널에서 테스트했습니다.alpine.

  • +와 같은 키 조합을 bind -x '"\ea":"ls"'명령에 바인딩합니다.Altals
  • 파일 보기less
  • Ctrl호출기를 종료하려면 +를 사용하세요.c
  • Alt+를 누릅니다 a. 그러면 ls명령이 실행됩니다.
  • less파일을 다시 보기
  • Ctrl호출기를 종료하려면 +를 사용하세요.c
  • Alt+를 누릅니다 a. ls명령을 다시 실행 해야 합니다 . 그 이후에 입력한 문자는 보이지 않습니다.

Alt+로 종료한 후 두 번째로 +를 누를 때만 이 문제가 발생하는지, 왜 그런 일이 발생하는지 모르겠습니다 .alessCtrlc

다음은 문제에 대한 비디오입니다. 불행히도 webp와 비디오는 지원되지 않습니다

관련 정보