zsh는 터미널에 표준 모드를 ​​사용합니까?

zsh는 터미널에 표준 모드를 ​​사용합니까?

terminfo나는 탐험 을 해왔고 stty. 실행하면 stty -a|grep icanon표준 모드가 설정된 것으로 표시되지만, 끄고 stty -icanon다시 확인하면 여전히 설정되어 있는 것을 볼 수 있습니다. Bash에서 동일한 작업을 수행하면 icanon을 비활성화할 수 있지만 동작에 어떤 변화도 느껴지지 않습니다. 그래서 두 가지 질문이 있습니다. zsh에서 icanon을 비활성화할 수 없는 이유는 무엇이며, 가능하다면 동작에 어떤 영향을 주어야 합니까?

답변1

Bash에서 동일한 작업을 수행하면 icanon을 비활성화할 수 있지만 동작에 어떤 변화도 느껴지지 않습니다.

bash가 정식 모드로 전환되기 때문입니다.끄다사용자로부터 명령을 읽을 때(텍스트 삽입, 화살표 키를 사용하여 커서를 좌우로 이동하는 등 터미널 드라이버에서 제공하지 않는 줄 편집 기능을 구현하기 위해)복원명령줄을 실행할 때 이전 터미널 설정.

효과를 보려면 다음과 같은 외부 명령을 실행하십시오 cat.

bash$ stty -icanon
bash$ cat
hheelloo

stty echo각 키는 켜져 있기 때문에 한 번, cat전체 줄을 기다릴 필요 없이 즉시 읽고 다시 쓰기 때문에 반복됩니다 .

[zsh 사용] 끄고 stty -icanon다시 확인해 보면 여전히 설정되어 있는 것을 볼 수 있습니다.

위와 같이 이전 단말기 설정을 복원하는 경우 zsh에도 적용됩니다 .일부 정상적인 기본값echo( 및 설정 포함 icanon). 아마도 명령이 정식 모드를 벗어나면 다음과 같이 가정하기 때문일 것입니다.끄다종료 시 이는 단지 사고였습니다(예: 전체 화면 앱이 충돌하거나 vi충돌 한 경우 less).

zsh나는 그것이 readline 라이브러리를 사용하는 다른 프로그램처럼 작동하도록 하는 옵션을 찾을 수 없었지만 bash명령을 실행하기 전에 icanon 모드를 끄려면 stty를 호출하여 이를 수행할 수 있습니다. 동일한 명령줄:

zsh$ stty -icanon; cat
hheelloo

관련 정보